A useful view of decision trees
翻译太难了,还是看原文吧,就罗列了一下公式
简介
学习机器学习课程时,首先学习的是ID3决策树。ID3和其他相关的决策树模型非常好描述和实现,所以经常在这类课程的前段教授,但是可惜的是,很多决策树的课程都终止这种特殊的模型描述。
一开始学习决策树的时候,我以为决策树这种特殊的模型描述是完全出自工程方面的考量,而不是理论方面的推导:模型非常有效,但是没有很好的理论支撑。但是最后发现可以从理论上很好的推导出ID3类决策树。将其记录在此,因为很少有文章提到决策树的理论。
预备知识:
- the basics of decision tree learning algorithms
- maximum likelihood estimation
- learning by optimizing a loss function
结论
决策树模型描述中 有个重要的部分:树节点分裂准则。为什么分裂信息增益最大的节点能够得到一个好的分类器呢?从直觉上,这种分类方法是有用的,但是为什么不使用一些其它的准则呢,比如少数类样本和(sum of minority class frequencies)?
事实上,决策树可以看做在贪心地学习piecewise-constant,expected-loss-minimizing的近似函数 f ( X ) = P ( Y = 1 ∣ X ) = c f(X) = P(Y=1|X)=c f(X)=P(Y=1∣X)=c ,大多数流行的节点分裂准则都能从中推导出来。 比如信息增益其实是最大化数据的期望log-likelihood。gini则是最小化了模型的Brier score, Variance reducetion 则是最小化模型的均方误差
符号描述
X X X是空间 S ∈ R p S \in R^p S∈Rp中的一个数据点, Y ∈ { 0 , 1 } Y \in \{0,1\} Y∈{0,1}为类别标签。 假设 Y Y Y由 X X X的函数 f ( X ) = P ( Y = 1 ∣ X ) f(X)=P(Y=1|X) f(X)=P(Y=1∣X)确定。可以将决策树看做贪心的学习一个分段常数 f ^ \hat f f^去近似函数 f f f:
f ^ \hat f f^初始为一个常量,然后搜索所有的特征 i i i和分裂值 t t t,数据空间 S S S被划分为 S _ = { s ∈ S : s i < t } S\_=\{s \in S:s_i<t\} S_={s∈S:si<t}和 S + = { s ∈ S : s i ≥ t } S_+=\{s \in S:s_i \geq t\} S+={s∈S:si≥t}。然后评估分段常数函数在两个分裂空间中的性能。选择性能最好的 i i i和 j j j,并递归的对子空间进行划分。最后组合所有的分段常数函数,构成全局的函数分类函数。
我对怎么评估一个分裂节点的好坏不是很理解,但是恰恰和损失函数相关,在传统的决策树观点中通过比较父节点的纯度与每个子节点的带权重纯度均值来分裂节点的好坏。
information-gain/log-likelihood
如果你的分类准则是信息增益,对应的损失函数则是log-likelihood损失函数。
如果在区域
S
S
S内,函数
f
^
\hat f
f^近似于
f
f
f, 最大化数据的expected log-likelihood:
L
(
f
^
)
=
E
(
l
o
g
P
(
Y
=
Y
o
b
s
e
r
v
e
d
∣
X
,
f
=
f
^
)
)
L(\hat f) = E(logP(Y = Y_{observed}|X, f= \hat f))
L(f^)=E(logP(Y=Yobserved∣X,f=f^))
=
∑
X
i
log
f
^
(
X
i
)
+
(
1
−
Y
i
)
l
o
g
(
1
−
f
^
(
X
i
)
)
=\sum_{X_i} \log \hat f(X_i) + (1-Y_i)log(1-\hat f(X_i))
=∑Xilogf^(Xi)+(1−Yi)log(1−f^(Xi))
首先,要找到常数值 f ^ ( X ) = f \hat f(X) = f f^(X)=f,使得 L ( f ^ ) L(\hat f) L(f^)最大化。直觉上,数据点被判定为正例的概率为数据集中观察为正例的比率。
假设共有
n
n
n个实例,
Y
=
1
Y=1
Y=1的正样本共有
p
p
p个,其余为负样本:
L
(
f
^
)
=
p
n
l
o
g
f
+
n
−
p
n
l
o
g
(
1
−
f
)
L(\hat f) = \frac{p}{n}log f + \frac{n-p}{n}log(1-f)
L(f^)=nplogf+nn−plog(1−f)
求导,并且令导数为0:
0
=
p
n
f
−
n
−
p
n
(
1
−
f
)
0 = \frac{p}{nf}-\frac {n-p}{n(1-f)}
0=nfp−n(1−f)n−p
可以得到
f
=
p
n
f = \frac{p}{n}
f=np
Gimi impurity / Brier Score
模型
f
^
\hat f
f^的brier score 为:
B
(
f
^
)
=
E
(
(
Y
−
f
^
(
X
)
)
2
)
B(\hat f) = E((Y - \hat f(X))^2)
B(f^)=E((Y−f^(X))2)
最小化
B
(
f
^
)
B(\hat f)
B(f^):
B
(
f
^
)
=
(
1
−
f
^
(
X
)
)
2
P
(
Y
o
b
s
e
r
v
e
d
=
1
)
+
f
^
(
X
)
2
P
(
Y
o
b
s
e
r
v
e
d
=
0
)
B(\hat f) = (1-\hat f (X))^2P(Y_{observed}=1) + \hat f(X)^2P(Y_{observed} = 0)
B(f^)=(1−f^(X))2P(Yobserved=1)+f^(X)2P(Yobserved=0)
将
f
^
=
f
=
p
/
n
\hat f = f = p/n
f^=f=p/n带入:
B
(
f
^
)
=
(
1
−
f
)
2
f
+
f
2
(
1
−
f
)
=
f
(
1
−
f
)
B(\hat f) = (1-f)^2f + f^2(1-f) = f(1-f)
B(f^)=(1−f)2f+f2(1−f)=f(1−f)
Gini impurity如下:
I
G
(
p
)
=
∑
i
=
1
J
p
i
∑
k
≠
i
p
k
=
∑
i
=
1
J
p
i
(
1
−
p
i
)
I_G(p) = \sum_{i=1}^J p_i \sum_{k \ne i }p_k=\sum_{i=1}^Jp_i(1-p_i)
IG(p)=∑i=1Jpi∑k̸=ipk=∑i=1Jpi(1−pi)
=
∑
i
=
1
J
(
p
i
−
p
i
2
)
=
∑
i
=
1
J
p
i
−
∑
i
=
1
J
p
i
2
=
1
−
∑
i
=
1
J
p
i
2
=\sum_{i=1}^J(p_i - p_i^2) =\sum_{i=1}^Jp_i - \sum_{i=1}^Jp_i^2 = 1-\sum_{i=1}^Jp_i^2
=∑i=1J(pi−pi2)=∑i=1Jpi−∑i=1Jpi2=1−∑i=1Jpi2