决策树的介绍 ID3/C4.5/CART

一、决策树的优点和缺点
1.1优点:
1、容易理解,可解释性强,可以可视化,非常直观,是一个白盒模型
2、应用范围广,可用于分类和回归,而且非常容易做多类别的分类
3、能够处理数值型和连续的样本特征。能够同时处理数据型和常规性属性,其他的技术往往要求数据属性的单一
4、对于决策树数据的准备往往是简单的或者不必要的,其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性
缺点:/1、对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征
2、决策树处理确实数据时的困难
3、很容易在训练数据中生成复杂的树结构,造成过度拟合
4、忽略数据集中属性之间的相关性
既然筛选的5个特征既有分类型,又有连续型,用决策树是最合适了。
这里采用的是决策树里的CART法,之所以不用ID3和C4.5,是因为这两个方法不能处理连续型数据,必须转换成离散型。
二、基本概念
2.1信息熵(information entropy):一个系统越是有序,信息熵越低,一个系统越是混乱,信息熵就越高,信息熵也可以说是系统有序化程度的度量
在这里插入图片描述
2.2 条件熵与信息增益
如果用熵表示随机变量的不确定性,条件熵表示在一定条件下,随机变量的不确定性,则信息增益=熵-条件熵
当特征X被固定以后,给系统带来的增益(或者说为系统减小的不确定度)为:IG(X)=H©−H(c|X))
2.3基尼系数(基尼不纯度Gini impurity)
当数据集中所有的样本都是同一类,那么基尼系数为0,此时数据的不纯度最低,加入特征X以后,数据的不纯度减小的程度,相当于加入特征X以后,能够很好的区分数据,不会让数据变得那么的混乱了
在这里插入图片描述
ID3算法(iterative dichotomiser 3迭代二叉树3代):ID3决策树可以有很多歌分支,但是不能处理特征值为连续的情况,决策树是一种贪心算法,每次选取的分割数据的特征都是当前的最佳选择,并不关心是否达到最优,在ID3中,每次根据‘最大信息熵增益’选取当前最佳的特征分割数据,并按照该特征的所有取值来切分,也就是说一个特征有4种取值,数据将被切分4份,一旦按某些特征切分后,该特征在之后的算法执行中将不再起作用,所以有观点人为这种切分方式过于迅速,ID3算法核心是根据最大信息熵增益原则选择划分当前数据集的最好特征,信息熵是信息的度量方式,不确定度越大或者说越混乱,熵就越大,在建立决策树中,根据特征属性划分数据,使得原本婚恋的数据的熵(混乱度)减少,按照不同特征划分的数据熵减少的程度不一样,选择熵减少程度最大的特征来划分数据,就是最大信息熵增益原则)
ID3步骤:
1、计算数据集D的信息熵H(D):数据集的混乱程度,越混乱,熵越高
2、遍历所有特征,计算特征对于数据集D的条件熵:
3、选择对使得信息增益最大的特征,并从数据集D中去掉该特征,
ID3缺点:
1、不能处理具有连续值的属性
2、不能处理属性具有缺失值的样本
3、算法会生成很深的树,容易产生过拟合
4、算法一般会有限选择有较多属性值的特征,因为属性值多的特征会有相对较大的信息增益。因为信息增益反映的是给定一个条件以后不确定性减少的程度,必然是分的越细的数据集确定性越高,也就是条件熵越小,信息增益越大
C4.5算法:用来惩罚ID3中属性值较多的特征,而且还可以处理连续值,但是对连续属性值需要扫描排序,这会降低性能、C4.5算法流程与ID3相类似,只不过将信息增益改为信息增益比,以解决偏向取值较多的属性的问题,另外它可以处理连续型属性。

在这里插入图片描述
C4.5算法继承了ID3并进行了改进
1:用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足
2、在树的构造过程中可以进行剪枝
3、能够完成对连续属性的离散化处理
4、能够对不完整数据进行处理
产生的分类规则易于理解,准确率较高,缺点是在构造树的过程中需要对数据集进行顺序扫描和排序,因而导致算法的低效,而CART算法只需要扫描两次数据集

CART算法:ID3中根据属性值分割数据,之后该特征不会再起作用,
CART
CART是一棵二叉树,采用二元切分法,每次把数据切成两份,分别进入左子树、右子树。而且每个非叶子节点都有两个孩子,所以CART的叶子节点比非叶子多1。相比ID3和C4.5,CART应用要多一些,既可以用于分类也可以用于回归。CART分类时,使用基尼指数(Gini)来选择最好的数据分割特征,gini描述的是纯度,与信息熵的含义相似。CART中每一次迭代都会降低GINI系数

相对于ID3使用的信息增益,CART中用于选择变量的不纯性度量是Gini指数,总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。

GINI指数:
1、是一种不等性度量;
2、通常用来度量收入不平衡,可以用来度量任何不均匀分布;
3、是介于0~1之间的数,0-完全相等,1-完全不相等;
4、总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)

CART分析步骤:

1、从根节点t=1开始,从所有可能候选S集合中搜索使不纯性降低最大的划分S*,然后,使用划分S*将节点1(t=1)划分成两个节点t=2和t=3;
2、在t=2和t=3上分别重复划分搜索过程。

基尼不纯度指标:

在CART算法中, 基尼不纯度表示一个随机选中的样本在子集中被分错的可能性。基尼不纯度为这个样本被选中的概率乘以它被分错的概率。当一个节点中所有样本都是一个类时,基尼不纯度为零

离散和连续目标变量的区别:

同时,如果目标变量是标称的,并且是具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别(双化);
如果目标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。

在这里插入图片描述
5.2 终止条件
一个节点产生左右孩子后,递归地对左右孩子进行划分即可产生分类回归树。那么在什么时候节点就可以停止分裂?直观的情况,当节点包含的数据记录都属于同一个类别时就可以终止分裂了。这只是一个特例,更一般的情况我们计算x2x2值来判断分类条件和类别的相关程度,当x2x2很小时说明分类条件和类别是独立的7,即按照该分类条件进行分类是没有道理的,此时节点停止分裂。注意这里的“分类条件”是指按照GINI_Gain最小原则得到的“分类条件”。8

6.scikit-learn 中的决策树
scikit-learn中的决策树使用CTRX算法实现,详细阅读参考:http://scikit-learn.org/stable/modules/tree.html
代码示例及API参考:scikt-learn 官网

7.分类树 VS 回归树
提到决策树算法,很多想到的就是上面提到的ID3、C4.5、CART分类决策树。其实决策树分为分类树和回归树,前者用于分类,如晴天/阴天/雨天、用户性别、邮件是否是垃圾邮件,后者用于预测实数值,如明天的温度、用户的年龄等。
作为对比,先说分类树,我们知道ID3、C4.5分类树在每次分枝时,是穷举每一个特征属性的每一个阈值,找到使得按照feature<=阈值,和feature>阈值分成的两个分枝的熵最大的feature和阈值。按照该标准分枝得到两个新节点,用同样方法继续分枝直到所有人都被分入性别唯一的叶子节点,或达到预设的终止条件,若最终叶子节点中的性别不唯一,则以多数人的性别作为该叶子节点的性别。
回归树总体流程也是类似,不过在每个节点(不一定是叶子节点)都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差–即(每个人的年龄-预测年龄)^2 的总和 / N,或者说是每个人的预测误差平方和 除以 N。这很好理解,被预测出错的人数越多,错的越离谱,均方差就越大,通过最小化均方差能够找到最靠谱的分枝依据。分枝直到每个叶子节点上人的年龄都唯一(这太难了)或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄。

6.scikit-learn 中的决策树
scikit-learn中的决策树使用CTRX算法实现,详细阅读参考:http://scikit-learn.org/stable/modules/tree.html
代码示例及API参考:scikt-learn 官网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值