1、什么是决策树
- 是⼀种树形结构,本质是⼀颗由多个判断节点组成的树
- 其中每个内部节点表示⼀个属性上的判断,
- 每个分⽀代表⼀个判断结果的输出,
- 最后每个叶节点代表⼀种分类结果
2、决策树的基本算法
决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的“分而治之"(divide-and-conquer)策略
3、几个概念
熵(shāng),热力学中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量。系统越有序,熵值越低;系统越混乱或者分散,熵值越⾼。1948年⾹农提出了信息熵(Entropy)的概念。
信息熵:是度量样本集合纯度最常用的⼀种指标。
1、从信息的完整性上进⾏的描述: 当系统的有序状态⼀致时,数据越集中的地⽅熵值越小,数据越分散的地方熵值越大。 2、从信息的有序性上进行的描述: 当数据量⼀致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越高。
假定当前样本集合 D 中第 k 类样本所占的⽐例为 p (k = 1, 2,. . . , |y|) ,
其中:D为样本的所有数量,为第k类样本的数量。
则 D的信息熵定义为((log是以2为底,lg是以10为底):
或
其中:Ent(D) 的值越⼩,则 D 的纯度越⾼.
信息增益: entroy(前) - entroy(后)
以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越⼤,样本的不确定性就越⼤。因此可以使⽤划分前后集合熵的差值来衡量使⽤当前特征对于样本集合D划分效果的好坏。
注:信息增益表示得知特征X的信息⽽使得类Y的信息熵减少的程度
定义与公式:
假定离散属性a有 V 个可能的取值:
若使⽤a来对样本集 D 进⾏划分,则会产⽣ V 个分⽀结点, 其中第v个分⽀结点包含了 D 中所有在属性a上取值为的样本,记为.
我们可根据前⾯给出的信息熵公式计算出的信息熵,再考虑到不同的分⽀结点所包含的样本数不同,给分⽀结点赋予权重。
即样本数越多的分⽀结点的影响越⼤,于是可计算出⽤属性a对样本集 D 进⾏划分所获得的"信息增益" (information gain)
特征a对训练数据集D的信息增益Gain(D,a),定义为集合D的信息熵Ent(D)与给定特 征a条件下D的信息条件Ent(D|a)之差,即公式为:
条件熵的计算:
其中:表示a属性中第v个分⽀节点包含的样本数
表示a属性中第v个分⽀节点包含的样本数中,第k个类别下包含的样本数
著名的 ID3 决策树学 习算法 [Quinlan, 1986] 就是以信息增益为准则来选择划分属性。
example:
第⼀列为论坛号码,第⼆列为性别,第三列为活跃度,最后⼀列⽤户是否 流失。 我们要解决⼀个问题:性别和活跃度两个特征,哪个对⽤户流失影响更⼤?
a.计算类别信息熵
整体熵:
b.计算性别属性的信息熵(a="性别")
c.计算性别的信息增益(a="性别")
b.计算活跃度属性的信息熵(a="活跃度")
c.计算活跃度的信息增益(a="活跃度")
活跃度的信息增益⽐性别的信息增益⼤,也就是说,活跃度对⽤户流失的影响⽐性别⼤。在做特征选择或者数据分析的时候,我们应该重点考察活跃度这个指标。
增益率:信息增益Gain(D, a)和属性a对应的"固有值"(intrinsic value) [Quinlan , 1993J]的⽐值
信息增益准则对可取值数⽬较多的属性有所偏好,为减少这种偏好可能带 来的不利影响,著名的 C4.5决策树算法 [Quinlan,1993J]不直接使⽤信息增益,⽽是使⽤"增益率" (gain ratio) 来选择最优划分属性
为什么使⽤C4.5要好
1.⽤信息增益率来选择属性克服了⽤信息增益来选择属性时偏向选择值多的属性的不⾜。
2.采⽤了⼀种后剪枝⽅法避免树的⾼度⽆节制的增⻓,避免过度拟合数据
3.对于缺失值的处理在某些情况下,可供使⽤的数据可能缺少某些属性的值。
假如〈x,c(x)〉是样本集 S中的⼀个训练实例,但是其属性A的值A(x)未知。 处理缺少属性值的⼀种策略是赋给它结点n所对应的训练实例中该属性的最常⻅。
基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不⼀致的概率。 故,Gini(D)值越⼩,数据集D的纯度越⾼。
基尼指数 :⼀般,选择使划分后基尼系数最⼩的属性作为最优化分属性。
CART算法
- CART算法相⽐C4.5算法的分类⽅法,采⽤了简化的⼆叉树模型,同时特征选择采⽤了近似的基尼系数来简化计算。
- C4.5不⼀定是⼆叉树,但CART⼀定是⼆叉树。
名称 | 提出时间 | 分支方式 | 备注 |
ID3 | 1975 | 信息增益 | ID3只能对离散属性的数据集构成决策树 |
C4.5 | 1993 | 信息增益率 | 优化后解决了ID3分⽀过程中总喜欢偏向选择值较多的 属性 |
CART | 1984 | Gini系数 | 可以进行分类和回归,可以处理离散属性,也可以处理连续属性 |
4、cart剪枝
图形描述
- 横轴表示在决策树创建过程中树的结点总数,纵轴表示决策树的预测精度。
- 实线显示的是决策树在训练集上的精度,虚线显示的则是在⼀个独⽴的测 试集上测量出来的精度。
- 随着树的增⻓,在训练样集上的精度是单调上升的, 然⽽在独⽴的测试样 例上测出的精度先上升后下降。
出现这种情况的原因:
原因1:噪声、样本冲突,即错误的样本数据。
原因2:特征即属性不能完全作为分类标准。
原因3:巧合的规律性,数据量不够⼤。
剪枝 (pruning)是决策树学习算法对付"过拟合"的主要⼿段。
预剪枝
是指在决策树⽣成过程中,对每个结点在划分前先进⾏估计,若当前结点的划分不能带来决策树泛化性能提升,则停⽌划分并将当前结点标记为叶结点;
- 在构建树的过程中,同时剪枝
- 限制节点最⼩样本数
- 指定数据⾼度
- 指定熵值的最⼩值
后剪枝
则是先从训练集⽣成⼀棵完整的决策树,然后⾃底向上地对⾮叶结点进⾏考察,若将该结点对应的⼦树替换为叶结点能带来决策树泛化性能提升,则将该⼦树替换为叶结点。
把⼀棵树,构建完成之后,再进⾏从下往上的剪枝
对⽐两种剪枝⽅法,
- 后剪枝决策树通常⽐预剪枝决策树保留了更多的分⽀。
- ⼀般情形下,后剪枝决策树的⽋拟合⻛险很⼩,泛化性能往往优于预剪枝决策树。
- 但后剪枝过程是在⽣成完全决策树之后进⾏的。 并且要⾃底向上地对树中的所有⾮叶结点进⾏逐⼀考察,因此其训练时间开销⽐未剪枝决策树和预剪枝决策树都要⼤得多.
参考:
机器学习实战:基于Scikit-Learn、Keras和TensorFlow:原书第2版