前言
决策树就是一种简单高效并且具有强解释性的模型,广泛应用于数据分析领域
决策树适应场景:决策树能够生成清晰的基于特征(feature)选择不同预测结果的树状结构,希望更好的理解手上的数据的时候往往可以使用决策树,在实际应用中,受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石,例如随机森林。
决策树的构建
- 特征选择
- 决策树的生成
- 决策树的修剪
特征选取
1、使用哪个特征来划分特征空间
2、节点的纯度(purity)
(1) 熵
熵度量了事物的不确定性,越不确定的事物,它的熵就越大
H(X)=-
∑
i
=
1
n
\sum_{i=1}^n
∑i=1np
i
_i
ilogp
i
_i
i(p
i
_i
i是事物的概率)
熵越高,不纯度越大,表示不确定性越大
ID3过程:
- 从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征。
- 由该特征的不同取值建立子节点,再对子节点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止;
- 最后得到一个决策树
信息增益:
- 表示不确定性减少的程度
- 父节点的不纯度减去所有子节点的不纯度
假设离散属性a有V个可能的取值a 1 ^1 1,a 2 ^2 2,……,a V ^V V使用属性a对样本集D进行划分,则会产生V个分支节点,其中第V个分支节点包含D中所有在属性a熵取值为a v ^v v的样本,记为D v ^v v
Gain(D,a)=Ent(D)- ∑ v = 1 V \sum_{v=1}^V ∑v=1V ∣ D v ∣ ∣ D ∣ {|D^v| \over |D|} ∣D∣∣Dv∣Ent(D v ^v v)
ID3算法的不足:
- ID3不适合于连续特征,如长度,密度都是连续值,无法在ID3运用
- 采用信息增益大的特征优先建立决策树的节点,相同条件下,取值比较多的特征比取值少的特征信息增益大
- 对于缺失值的情况没有做考虑
- 没有考虑过拟合的问题
- ID3算法做了改进,这就是C4.5算法
(2)C4.5算法
- 将连续的特征离散化
- 信息增益比作为选择特征的标准
- 在信息增益的基础上乘上一个惩罚参数。特征个数较多时,惩罚参数较大;特征个数较少时,惩罚参数较小
S = - ∑ i = 1 k \sum_{i=1}^k ∑i=1k ∣ D i ∣ ∣ D ∣ {|D_i| \over |D|} ∣D∣∣Di∣ log 2 _2 2 ∣ D i ∣ ∣ D ∣ {|D_i| \over |D|} ∣D∣∣Di∣
Gainratio(D,A) = H ( D ) − H ( D ∣ A ) S {H(D)-H(D|A) \over S} SH(D)−H(D∣A)
(3)CART回归树
基尼系数:
基尼系数与信息熵计算出来的结果差距很小,基本可以忽略,但是基尼系数要计算快得多,因为没有对数
Gini( P ) =
∑
k
=
1
K
\sum_{k=1}^K
∑k=1Kp
k
_k
k(1-p
k
_k
k) = 1-
∑
k
=
1
K
\sum_{k=1}^K
∑k=1Kp
k
_k
k
2
^2
2
Gini( D ) = 1-
∑
i
=
1
N
\sum_{i=1}^N
∑i=1N (
∣
D
i
∣
∣
D
∣
{|D_i| \over |D|}
∣D∣∣Di∣)
2
^2
2
ID3、C4.5、CART的区别:
- ID3使用信息增益作为选择特征的准则
- C4.5使用信息增益比作为选择特征的标准
- CART使用Gini系数作为选择特征的标准
决策树的特点
- 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
- 缺点:可能会产生过度匹配的问题
- 使用数据类型:数值型和标称型
决策树的剪枝
因为决策树的缺点就是容易过拟合,因此就需要剪枝去掉一些分支来降低过拟合
剪枝的策略:
- 预剪枝
- 后剪枝
预剪枝:
后剪枝:
预剪枝与后剪枝比较:
时间:
- 预剪枝:训练时间减少,测试时间减少
- 后剪枝:训练时间增加,测试时间减少
过、欠拟合:
- 预剪枝:过你和减少,欠拟合增加
- 后剪枝:过拟合减少,欠拟合不变
泛化能力:
- 后剪枝>预剪枝
连续的属性值处理:二分法处理
样本缺失属性处理:
(1)如何在属性值缺失的情况下计算属性的信息增益,从而进行划分属性的选择?
- 信息增益仅仅计算有的属性(如色泽有14个),然后乘以系数(如14/17)
(2)给定划分属性,如果样本在该属性值上是缺失的,如何样本在该属性值上是缺失的,如何对这个样本进行划分?
- 完整样本属性权是1,只会出现在一个分支,但样本8文理属性缺失,在三个分支都会有样本8,但是权重则不是1,而是而是7/15,5/15,3/15