1.决策树
使用特征不断的将数据集划分,划分后的数据集纯度更高,不确定性更小。
2.度量标准
信息增益、信息增益率、基尼系数
几个概念:
信息熵:度量某一属性的不确定性(纯度),熵越高,数据越混乱。
某一属性的熵:假设某一属性X的可能取值有x1,x2, … , xn。对于每一个可能的取值xi,其概率 P(X=xi) = pi , ( i = 1,2, … , n)。属性X的熵:
H
(
X
)
=
−
∑
i
=
1
n
p
i
log
2
p
i
\mathrm{H}(\mathrm{X})=-\sum_{i=1}^{n} p_{i} \log _{2} p_{i}
H(X)=−i=1∑npilog2pi
样本集合D的熵:假设样本有k个类别,每个类别的概率是
∣
C
k
∣
∣
D
∣
\frac{\left|C_{k}\right|}{|D|}
∣D∣∣Ck∣,其中
∣
C
k
∣
\left|C_{k}\right|
∣Ck∣表示类别k的样本个数,
∣
D
∣
\left|D\right|
∣D∣表示样本总数。则对于样本集合D来说熵为:
H
(
D
)
=
−
∑
k
=
1
K
∣
C
k
∣
∣
D
∣
log
2
∣
C
k
∣
∣
D
∣
\mathrm{H}(\mathrm{D})=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|}
H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
信息增益(ID3算法):以某特征划分数据集前后的熵的差值。 划分前样本集合D的熵是一定的
H
(
D
)
H(D)
H(D) ,使用某个特征A划分数据集D,计算划分后的数据子集的熵
H
(
D
∣
A
)
H(D \mid A)
H(D∣A)。信息增益
g
(
D
,
A
)
\mathrm{g}(\mathrm{D}, \mathrm{A})
g(D,A)为:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
\mathrm{g}(\mathrm{D}, \mathrm{A})=H(D)-H(D \mid A)
g(D,A)=H(D)−H(D∣A)
对信息增益的理解: 对于待划分的数据集D,其
H
(
D
)
H(D)
H(D)是一定的,但是划分之后的熵
H
(
D
∣
A
)
H(D \mid A)
H(D∣A)是不定的,
H
(
D
∣
A
)
H(D \mid A)
H(D∣A)越小说明使用此特征划分得到的子集的不确定性越小(也就是纯度越高),因此 entroy(前) - entroy(后)差异越大,说明使用当前特征划分数据集D的话,其纯度上升的更快。
缺点:信息增益偏向取值较多的特征。当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较偏向取值较多的特征。
信息增益率(C4.5算法):以当前特征A作为随机变量划分数据集所得的信息增益
g
(
D
,
A
)
{g(D, A)}
g(D,A)与该特征本身的信息熵
H
A
(
D
)
{H_{A}(D)}
HA(D)的比值。
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
g_{R}(D, A)=\frac{g(D, A)}{H_{A}(D)}
gR(D,A)=HA(D)g(D,A)
基尼系数(CART算法):Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。
Gini
(
p
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
K
p
k
2
\operatorname{Gini}(\mathrm{p})=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2}
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
p
k
p_{k}
pk表示选中的样本属于k类别的概率,则这个样本被分错的概率是
(
1
−
p
k
)
(1-p_{k})
(1−pk)。
CART是个二叉树,也就是当使用某个特征划分样本集合只有两个集合:1. 等于给定的特征值的样本集合
D
1
D_{1}
D1 , 2 不等于给定的特征值的样本集合
D
2
D_{2}
D2。
对于每一种划分,都可以计算出基于划分特征= 某个特征值 将样本集合D划分为两个子集的纯度:
Gini
(
D
,
A
)
=
∣
D
1
∣
∣
D
∣
Gini
(
D
1
)
+
∣
D
2
∣
∣
D
∣
Gini
(
D
2
)
\operatorname{Gini}(\mathrm{D}, \mathrm{A})=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right)
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
3.步骤:
- 特征选择:使用某特征对数据集划分之后,各数据子集的纯度要比划分前的数据集D的纯度高。
- 决策树生成:选择哪个特征作为根节点;选择哪些特征作为子节点;什么时候停止并得到目标状态,即叶节点。
- 决策树剪枝:给决策树剪枝,不需要太多的判断,同样可以得到不错的结果,防止过拟合。
- 预剪枝:在决策树构造时就进行剪枝。方法是,在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。
- 后剪枝:在生成决策树之后再进行剪枝。通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类。