机器学习算法进阶学习笔记——决策树与随机森林
决策树与随机森林
决策树(Decision Tree)
囗决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一
个测试输出,每个叶结点代表一种类别。
囗决策树学习是以实例为基础的归纳学习。
口决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。
信息增益
概念:当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵。
信息增益表示得知特征A的信息而使得类X的信息的不确定性减少的程度。
定义: 特征
A
A
A对训练数据集
D
D
D的信息增益
g
(
D
,
A
)
\mathrm{g}(\mathrm{D}, \mathrm{A})
g(D,A),的经验条件熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)之差, 即:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
\mathrm{g}(\mathrm{D}, \mathrm{A})=\mathrm{H}(\mathrm{D})-\mathrm{H}(\mathrm{D} \mid \mathrm{A})
g(D,A)=H(D)−H(D∣A)
显然, 这即为训练数据集
D
D
D和特征
A
A
A的互信息。
条件熵
H
(
X
,
Y
)
−
H
(
X
)
H(X, Y)-H(X)
H(X,Y)−H(X)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
+
∑
x
p
(
x
)
log
p
(
x
)
=-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x} p(x) \log p(x)
=−∑x,yp(x,y)logp(x,y)+∑xp(x)logp(x)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
+
∑
x
(
∑
y
p
(
x
,
y
)
)
log
p
(
x
)
=-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x}\left(\sum_{y} p(x, y)\right) \log p(x)
=−∑x,yp(x,y)logp(x,y)+∑x(∑yp(x,y))logp(x)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
+
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
)
=-\sum_{x, y} p(x, y) \log p(x, y)+\sum_{x, y} p(x, y) \log p(x)
=−∑x,yp(x,y)logp(x,y)+∑x,yp(x,y)logp(x)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
p
(
x
)
=-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)}
=−∑x,yp(x,y)logp(x)p(x,y)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
y
∣
x
)
=-\sum_{x, y} p(x, y) \log p(y \mid x)
=−∑x,yp(x,y)logp(y∣x)
=
−
∑
x
∑
y
p
(
x
,
y
)
log
p
(
y
∣
x
)
=-\sum_{x} \sum_{y} p(x, y) \log p(y \mid x)
=−∑x∑yp(x,y)logp(y∣x)
=
−
∑
x
∑
y
p
(
x
)
p
(
y
∣
x
)
log
p
(
y
∣
x
)
=-\sum_{x} \sum_{y} p(x) p(y \mid x) \log p(y \mid x)
=−∑x∑yp(x)p(y∣x)logp(y∣x)
=
−
∑
x
p
(
x
)
∑
y
p
(
y
∣
x
)
log
p
(
y
∣
x
)
=-\sum_{x} p(x) \sum_{y} p(y \mid x) \log p(y \mid x)
=−∑xp(x)∑yp(y∣x)logp(y∣x)
=
∑
x
p
(
x
)
(
−
∑
y
p
(
y
∣
x
)
log
p
(
y
∣
x
)
)
=\sum_{x} p(x)\left(-\sum_{y} p(y \mid x) \log p(y \mid x)\right)
=∑xp(x)(−∑yp(y∣x)logp(y∣x))
=
∑
x
p
(
x
)
H
(
Y
∣
X
=
x
)
=\sum_{x} p(x) H(Y \mid X=x)
=∑xp(x)H(Y∣X=x)
=
H
(
Y
∣
X
)
=H(Y \mid X)
=H(Y∣X)
经验条件熵 H ( D ∣ A ) \mathrm{H}(\mathrm{D} \mid \mathrm{A}) H(D∣A)
H
(
D
∣
A
)
=
−
∑
i
,
k
p
(
D
k
,
A
i
)
log
p
(
D
k
∣
A
i
)
H(D \mid A)=-\sum_{i, k} p\left(D_{k}, A_{i}\right) \log p\left(D_{k} \mid A_{i}\right)
H(D∣A)=−∑i,kp(Dk,Ai)logp(Dk∣Ai)
=
−
∑
i
,
k
p
(
A
i
)
p
(
D
k
∣
A
i
)
log
p
(
D
k
∣
A
i
)
=-\sum_{i, k} p\left(A_{i}\right) p\left(D_{k} \mid A_{i}\right) \log p\left(D_{k} \mid A_{i}\right)
=−∑i,kp(Ai)p(Dk∣Ai)logp(Dk∣Ai)
=
−
∑
i
=
1
n
∑
k
=
1
K
p
(
A
i
)
p
(
D
k
∣
A
i
)
log
p
(
D
k
∣
A
i
)
=-\sum_{i=1}^{n} \sum_{k=1}^{K} p\left(A_{i}\right) p\left(D_{k} \mid A_{i}\right) \log p\left(D_{k} \mid A_{i}\right)
=−∑i=1n∑k=1Kp(Ai)p(Dk∣Ai)logp(Dk∣Ai)
=
−
∑
i
=
1
n
p
(
A
i
)
∑
k
=
1
K
p
(
D
k
∣
A
i
)
log
p
(
D
k
∣
A
i
)
=-\sum_{i=1}^{n} p\left(A_{i}\right) \sum_{k=1}^{K} p\left(D_{k} \mid A_{i}\right) \log p\left(D_{k} \mid A_{i}\right)
=−∑i=1np(Ai)∑k=1Kp(Dk∣Ai)logp(Dk∣Ai)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
∑
k
=
1
K
∣
D
i
k
∣
∣
D
i
∣
log
∣
D
i
k
∣
∣
D
i
∣
=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \sum_{k=1}^{K} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} \log \frac{\left|D_{i k}\right|}{\left|D_{i}\right|}
=−∑i=1n∣D∣∣Di∣∑k=1K∣Di∣∣Dik∣log∣Di∣∣Dik∣
信息增益率
□ \square □ 信息增益率 : g r ( D , A ) = g ( D , A ) / H ( A ) : \mathrm{g}_{\mathrm{r}}(\mathrm{D}, \mathrm{A})=\mathrm{g}(\mathrm{D}, \mathrm{A}) / \mathrm{H}(\mathrm{A}) :gr(D,A)=g(D,A)/H(A)
基尼系数
□
\square
□ Gini 系数:
Gini
(
p
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
K
p
k
2
=
1
−
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
\begin{array}{l} \operatorname{Gini}(p)=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2} \\ =1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2} \end{array}
Gini(p)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2=1−∑k=1K(∣D∣∣Ck∣)2
将 f ( x ) = − l n x \mathrm{f}(\mathrm{x})= -lnx f(x)=−lnx 在 x = 1 \mathrm{x}=1 x=1 处一阶展开, 忽略高阶无穷小, 得 到 f ( x ) ≈ 1 − x \mathrm{f}(\mathrm{x}) \approx 1-\mathrm{x} f(x)≈1−x
决策树评价
□
\square
□ 假定样本的总类别为K个。
□
\square
□ 对于决策树的某叶结点,若某类样本
n
j
=
n
而
n
1
,
…
,
n
j
−
1
,
n
j
+
1
,
…
,
n
K
=
0
n_{\mathrm{j}}=\mathrm{n} 而\mathrm{n}_{1}, \ldots, \mathrm{n}_{\mathrm{j}-1}, \mathrm{n}_{\mathrm{j}+1}, \ldots, \mathrm{n}_{\mathrm{K}}=0
nj=n而n1,…,nj−1,nj+1,…,nK=0 ,称该结点为纯结点:
若各类样本数目
n
1
=
n
2
=
…
=
n
k
=
n
/
K
\mathrm{n}_{1}=\mathrm{n}_{2}=\ldots=\mathrm{n}_{\mathrm{k}}=\mathrm{n} / \mathrm{K}
n1=n2=…=nk=n/K, 称该样本为均结点。
□
\square
□ 纯节点的熵
H
p
=
0
\mathrm{H}_p=0
Hp=0最小
□
\square
□ 均结点的熵
H
u
=
ln
K
,
\mathrm{H}_{\mathrm{u}}=\ln \mathrm{K}, \quad
Hu=lnK, 最大
□
\square
□ 对所有叶节点的熵求和,该值越小说明对样本的分类越精确。
□
\square
□ 各叶结点包含的样本数目不同,可使用样本数加权求和。
□
\square
□ 评价函数:
C
(
T
)
=
∑
t
∈
l
e
a
f
N
t
⋅
H
(
t
)
\quad C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t)
C(T)=∑t∈leafNt⋅H(t)。
由于该评价函数越小越好,所以,可以称之为“损失函数”。
随机森林
解决决策树过拟合问题
可以使用决策树作为基本分类器,也可以使用SVM、Logistic回归等其他分类器,习惯上,这些分类器组成的“总分类器”,仍然叫做随机森林。
Bootstrap
Bootstraping的名称来自成语“pull up by your own bootstraps”,意思是依靠你自己的资源,称为自助
法,它是一种有放回的抽样方法。
bootstrap aggregation从样本集中重系样(有重复的)选出n个样本在所有属性上,对这n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等)重复以上两步m次,即获得了m个分类器将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定数据属于哪一类。
可以发现,Bootstrap每次约有36.79%的样本不会出现在Bootstrap所采集的样本集合中,将未参与模型训练的数据称为袋外数据OOB(Out Of Bag)。它可以用于取代测试集用于误差估计。
投票机制
- 简单投票机制
- 一票否决(一致表决)
- 少数服从多数
- 有效多数(加权)
- 阈值表决
- 贝叶斯投票机制