决策树(decision tree)
决策树学习主要分为3个步骤:特征选择、树的生成和剪枝策略。
常用的决策树算法有ID3,C4.5,CART等。
优点:
- 基于if-then规则,具有天然的可解释性,容易可视化;
- 每个特征单独处理,因此数据的缩放不影响划分,不需要做归一化、标准化的预处理。
缺点:
即使做了剪枝,也容易过拟合,因此往往用bagging或boosting等集成学习方法代替单棵树。
特征选择
1.信息增益
ID3决策树学习算法以信息增益为特征选择的准则,信息增益 = 信息熵 - 条件熵。
其中,信息熵代表随机变量的不确定性,其计算公式如下,
K
K
K为标签类别的取值数:
E
n
t
(
D
)
=
−
∑
k
=
1
K
p
k
log
p
k
Ent(D)=-\sum_{k=1}^Kp_k\log p_k
Ent(D)=−k=1∑Kpklogpk
条件熵代表在某一个条件下,随机变量的不确定性,
V
V
V为特征
A
A
A的取值数:
E
n
t
(
D
∣
A
)
=
∑
v
=
1
V
∣
D
v
∣
D
E
n
t
(
D
v
)
Ent(D|A)=\sum_{v=1}^V \cfrac{|D^v|}{D}Ent(D^v)
Ent(D∣A)=v=1∑VD∣Dv∣Ent(Dv)
信息增益即为:
G
a
i
n
(
D
,
A
)
=
E
n
t
(
D
)
−
E
n
t
(
D
∣
A
)
Gain(D,A) =Ent(D) - Ent(D|A)
Gain(D,A)=Ent(D)−Ent(D∣A)
一般情况下,信息增益越大,带来的收益越高。
2.信息增益比
以信息增益作为特征选择的依据,会存在偏向于选择取值比较多的特征的问题。因此C4.5采用了信息增益比作为特征选择的依据,来对此问题进行校正。
信息增益比定义为:
G
a
i
n
_
r
a
t
i
o
(
D
,
A
)
=
G
a
i
n
(
D
,
A
)
I
V
(
A
)
Gain\_ratio(D,A) = \cfrac{Gain(D,A)}{IV(A)}
Gain_ratio(D,A)=IV(A)Gain(D,A)
其中,
I
V
(
A
)
IV(A)
IV(A)称为特征A的“固有值”:
I
V
(
A
)
=
−
∑
v
=
1
V
∣
D
v
∣
D
log
∣
D
v
∣
D
IV(A) = - \sum_{v=1}^V \cfrac{|D^v|}{D}\log \cfrac{|D^v|}{D}
IV(A)=−v=1∑VD∣Dv∣logD∣Dv∣
特征取值数目越多,则 I V ( A ) IV(A) IV(A)的值通常会越大,因此信息增益比对取值比较少的特征有偏好。
3.基尼指数
CART决策树( classification and regression tree)即可用于分类,也可以用于回归。
分类树采用基尼指数(Gini index)来进行特征选择,而回归树采用平方误差作为依据。
数据集D的不确定性可以用基尼值进行度量:
G
i
n
i
(
D
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
K
p
k
2
Gini(D) = \sum_{k=1}^Kp_k(1-p_k)=1- \sum_{k=1}^Kp_k^2
Gini(D)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
特征A的基尼指数定义如下:
G
i
n
i
_
i
n
d
e
x
(
D
,
A
)
=
∑
v
=
1
V
∣
D
v
∣
D
G
i
n
i
(
D
v
)
Gini\_index(D,A) = \sum_{v=1}^V \cfrac{|D^v|}{D}Gini(D^v)
Gini_index(D,A)=v=1∑VD∣Dv∣Gini(Dv)
计算后选取基尼指数最小的特征作为最优划分特征。
剪枝策略
剪枝是决策树学习算法对付过拟合的主要手段,主要分为“预剪枝”和“后剪枝”。
预剪枝
预剪枝基于“贪心”本质禁止树的一些分支展开,具体可以通过限制树的最大深度,内部节点的最小样本数和叶节点的最大数等等的手段来实现。
优点:不需要生成整颗决策树,相对于后剪枝,时间花销较小,算法相对简单,适合大规模问题。
缺点:限制了视野。当前的分支划分不能提升泛化性能,但后续进行的划分却可能显著提升泛化性能,因此预剪枝抛弃了这些可能。
后剪枝
后剪枝是在完全生成决策树之后进行的,自底向上地考察每个非叶结点,可以根据验证集的一些性能指标,决定是否剪枝。
优点:一般情况下,后剪枝比预剪枝的泛化能力要强。
缺点:时间花销太大,算法实现复杂。
Note
1.CART与ID3、C4.5的区别
- CART既可以用于分类(基尼指数),也可以用于回归(平方误差);
- CART只能是二叉树,而ID3、C4.5可以是多叉树;
参考资料
李航《统计学习方法》
周志华《机器学习》
通俗理解决策树算法中的信息增益:https://zhuanlan.zhihu.com/p/26596036