决策树模型

决策书就是一种树状的模型,可以用来做分类和回归。这种分类方式很好理解,相当于分岔路一样,满足某一个条件就走对应的道路,然后抵达不同的终点。决策树有很多类型,基本的有ID3决策树,C4.5决策树,CART决策树,他们主要经过三个步骤,特征选择,生成决策树,决策树剪枝。

1.特征选择

如果情况很复杂,条件有许多,成千上万,我们要是不加甄别,那么每一个条件都生成一个支路,那么我们的模型将会十分复杂。在生成一个分支的时候,依据什么呢?

(1).信息增益

先引入熵值的概念,也就是复杂度的描述,它是每一种事件发生的可能性决定的。假设有K个事件,每一个事件发生的可能性分别对应于pi,熵值如下

H(Y)=-\sum_{i=1}^{k}p_i*log(p_i)

(2).联合熵

H(X,Y)=-\sum{p(x_i,y_i)* logp(x_i,y_i))}

(3).条件熵

H(Y/X)=-\sum p(x,y) * log p(Y/X)

(4).信息增益

随机变量Y的熵H(Y)与Y的条件熵H(Y/X)的差就是信息增益。

g(Y,X)=H(Y)-H(Y/X)

当我们做的选择题的时候,如果四个选择都不确定,则表示复杂度最高,所蕴含的信息最多。而排除两个选项之后,复杂度就减少了,所蕴含的信息就较少了,那么熵值就会增加。当所选择的特征具有更大的信息增益时候,就表示这个特征所具有更多的判断能力。ID3就是用这个方法。

但是ID3算法无法处理连续数值,要对数值进行量化,后面的4.5和CART对其做了优化。

2.信息增益比

用信息增益来作为选择标准,它会有一个倾向,那就是他会选择类别取值更多的特征,很显然,特征选择越多,熵值越大。因此人们提取信息增益比。

g_R(Y,X)=\frac{g(Y,X)}{H(X)}

也就是结果Y对于条件X的信息增益与X的信息熵的比值。

这么就相当于进行了量化处理,虽然某个特征的信息增益很大,但是如果它的信息增益相对于熵下降的不多,就表示这个特征不是那么重要。

3.Gini系数

它是用来度量不平衡分别的,且介于0-1之间,这个值越小说明越平衡。

计算出数据集某个特征所有取值的基尼指数后,就能计算基尼指数增加值GiniGain,根据GinGain的最小值来划分节点。

在分类问题中,假设有k个类别c1,c2,c3,...,ck,样本点属于第k类的概率为pk,则该概率分布的Gini系数定义为

Gini(p)=\sum_{k=1}^{K}p_k*(1-p_k)=1-\sum_{i=1}^{K}p_k^2

给定样本集合D,其基尼系数为

Gini(D)=1-\sum_{k=1}^{k}(\frac{|c_k|}{|D|})

ck代表第k类的集合

如果根据特征A的取值a可以把集合D分为两个部分D1和D2,则在A的条件下,D的基尼系数表达式为

Gini(D,A)=\frac{|D1|}{|D|}Gini(D_1)+\frac{|D_2|}{D}Gini(D_2)

4.决策树的生成

生成决策树的流程如下

(1).如果集合D所有的M个样本都属于同一个类别,则直接返回单节点树T,并将该唯一类Ck作为该树节点的类别。

(2).如果训练样本集合D的M个样本都不属于同一个类,但是特征集合只含有单个特征,则返回单节点树T,且该样本集合D中实例数最大的类作为该树节点的类别。

(3).如果以上情况都不存在,则计算训练样本D中F个特征的信息增益,找到最大增大增益Fn对于的特征,如果信息增益大于阈值(这个值可以自己设定),则选择这个特征作为节点,将D划分为Di,灭个子类都生成一个子节点。如果信息增益小于阈值,则返回单节点树T,且将该样本集合D中实例树最大的类作为该树的类别。

(4).对于每个子节点,令D=Di,F=F-Fn,递归调用1-3

对于ID3.5,是根据信息增益分支。它有两个缺点,一个是容易偏向选择取值更多的特征类型,第二个是不能处理连续值特征,第三个是容易过拟合。

对于C4.5决策树,它使用了如下几个方法改善效果

(1).使用的是信息增益,解决偏向取值更多的特征类型

(2).对连续取值进行离散化处理

(3).引入正则化系数进行初步的剪枝来缓解过拟合问题。

5.CATR

CATR叫做分类回归树,classification and regression Tree

虽然C4.5做出了修改,但是仍然出现了几个问题

(1).计算对数的次数太多,计算量太大

(2).使用过的特征会被丢弃,后续不会再使用

(3).对于连续值的处理很粗糙,把不同的范围映射到一个离散空间中,造成信息的损失。

(4).只能做分类,不能做回归。

因此CART决策树修正了这些缺点。

(1).使用基尼指数,而不是信息增益或者信息增益比,减少了对数的计算。采用平方误差最小化准则进行特征选择。

(2).使用二叉树而不是多叉树。这个需要解释一下。ID3和C3.5是根据某个特征划分的切分点,一旦使用,以后就不会用到这个特征。而CATR是使用某个特征的某个值作为切分点,因此这个特征不会被丢弃,在下一次选择时还会利用到。

(3).解决不能回归的问题。这个很简单,前两种算法都是根据特征来划分类别,选择对应类别较多的样本作为子节点,那么CATR每次划分的时候,使用均方误差作为评价指标,子节点是样本对应的标签的均值。

(4).对于容易过拟合的问题,CART使用了剪枝算法

6.CART回归和分类的区别

(1).特征选择的标准不同

分类的选择的是某个特征的某个取值在Gini系数值

回归选择的是均方差。

回归的具体过程如下:

数据集D有M个样本,N个特征。先遍历特征变量Fn,对每一个特征变量,扫描所有可能的K个样本切分点Sk,根据Sk把数据集划分为D1和D2两个子集。划分要求是让D1和D2各自集合的标准差最小,同时D1和D2的标准差之和也最小。

(2)决策树结果输出处理方式也不同

分类:计算子节点不同类别的样本数量,数量最多的那个类作为该节点的标签。

回归:计算子节点标签的均值(或者中位数);

7.剪枝算法

决策树的子节点如果过多,会导致过拟合,因此我们需要减少生成树,去掉多余的树。

剪枝算法有两种,一种是先剪枝,一种是后剪枝。

先剪枝比如C4.5,设置一个阈值,小于这个阈值就不再生成了。后剪枝指的是使用训练集种的大部分数据尽可能的生成一棵最大生成树,然后从决策树低端不断开始剪枝,直到只剩一个根节点的子树T0,得到一个剪枝后的子树序列{T0,T1,T2,......,Tk},最后进行交叉验证,选出其中最优子树。

8.决策树的优缺点

优点1.模型简单容易理解

优点2.可以同时处理数值数据和类型数据

优点3:可以进行多分类和非线性分类

优点4:训练好模型后,预测速度快

优点5:方便集成。比如随机森林,GBDT都是使用决策树模型集成

缺点1:对噪声很敏感

缺点2:处理特征关联性较强的数据时表现不太好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶论文

文章目录 一、Convolutional Social Pooling for Vehicle Trajectory Prediction二、QCNet:Query-Centric Trajectory Prediction三、VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation 一、Convolutional Social Pooling for Vehicl…

Mysql基础总结

一、MySql基础 MySQL常见面试题 一、索引相关 (1)什么是索引? 索引是一种数据结构,可以帮助我们快速的进行数据的查找。 (2)索引是个什么样的数据结构呢? 索引的数据结构和具体存储引擎的实现有关,…

vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

一、实现效果 使用echarts实现省市地图绘制根据数据在地图显示柱状图根据数据显示数据,涟漪效果 二、实现方法 1、安装echarts插件 npm install echarts --save2、获取省市json数据 https://datav.aliyun.com/portal/school/atlas/area_selector 通过 阿里旗下…

Redis Cluster集群模式学习

Redis Cluster集群模式 Redis哨兵模式:https://blog.csdn.net/liwenyang1992/article/details/133956200 Redis Cluster集群模式示意图: Cluster模式是Redis3.0开始推出采用无中心结构,每个节点保存数据和整个集群状态,每个节点都…

人大金仓数据库与mysql比较

简介 人大金仓数据库是基于 PostgreSQL 开发的。 SQL语言 语法 关键字 KES: MYSQL: 语句 *特性MYSQLKES字符串字面量单引号()或 双引号(")十六进制字面量0x5461626c65,X5461626c65/BIT字面量b1000001,0b1000001/Boolean字面量常…

简洁、轻量级的 Go API 框架

本次分享的框架是「gin-api-mono」 介绍 gin-api-mono 前先了解 go-gin-api go-gin-api 这是一个基于 Gin 的 API 框架,它提供了 WEB 界面一键安装的方式,让你可以快速启动一个开箱即用的 Go 项目。无论你是否有项目经验,这个框架都适合作为练…

计算机基础面试题 |04.精选计算机基础面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

图像分割实战-系列教程8:unet医学细胞分割实战6(医学数据集、图像分割、语义分割、unet网络、代码逐行解读)

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 unet医学细胞分割实战1 unet医学细胞分割实战2 unet医学细胞分割实战3 unet医学细胞分割实战4 unet…

OpenCV-Python(21):OPenCV查找及绘制轮廓

1.认识轮廓 1.1 目标 理解什么是轮廓学习掌握找轮廓、绘制轮廓等学习使用cv2.findContours()、cv2.drawContours()函数的用法 1.2 什么是轮廓 在OpenCV中,轮廓是图像中连续的边界线的曲线,具有相同的颜色或者灰度,用于表示物体的形状。轮廓…

学生信息管理系统 Java+SQL Server 数据库原理课程

该项目实现了图形化界面的数据库的登录,以及对数据库中表的增删查改。 正好老师布置了相关作业,通过Java 连接 SQL Server 数据库,就写一个学生管理系统。 jdk8 数据库连接通过sqljdbc6.0 图形化界面用swing 目录 1、Java 连接SQL Serv…

安装Typora

链接:https://pan.baidu.com/s/1OLHtUTziKdB0sW0UIOnBBw?pwd6666 提取码:6666

Spring04

一、AOP的概念 AOP 为 (Aspect Oriented Programming) 的缩写,意为:面向切面编程,底层是使用动态代理的技术实现对目标方法的增强和控制访问等功能。 其中AOP中有几个重要的概念: 1、通知:增强的逻辑,或者后期要加入的代码。 2、目…