决策树
信息量
从一般常识来说,一件事情发生会给我们带来很多信息,比如:
1. 太阳从东边出来
2. 男人生孩子
从上面的两件事件发生给到我们的信息量是不一样的,事件1发生给我们的信息量少,因为太阳本来就一直是从东边出来的(南极,北极可能不太一样),基本上是一个必然发生事件;而事件2发生给我们的信息量就很大,因为它不太可能发生,如果真的发生了,我们肯定会联想是不是什么新的医学技术等等.
那么这样看来发生概率大的事件发生了,给我们的信息量就小,发生概率小的事件发生了,给我们的信息量就大,那么我们很容易想到,事件
X
=
{
x
}
X=\{x\}
X={x}发生的概率
p
(
x
)
p(x)
p(x),与事件
X
=
{
x
}
X=\{x\}
X={x}发生产生的信息量
h
(
x
)
h(x)
h(x)必然存在一个函数关系,那么是个什么关系呢?
我们学概率论的时候就知道如果两个相互独立的事件同时发生的概率为:
p
(
A
,
B
)
=
p
(
A
)
∗
p
(
B
)
(1)
\tag{1} p(A,B)=p(A)*p(B)
p(A,B)=p(A)∗p(B)(1)
从常识来讲,两个事件同时发生所产生的信息量应该是两个事件发生的信息量之和:
h
(
A
,
B
)
=
h
(
A
)
+
h
(
B
)
(2)
\tag{2} h(A,B)=h(A)+h(B)
h(A,B)=h(A)+h(B)(2)
要确定信息量
h
(
A
)
h(A)
h(A)与事件发生概率
p
(
A
)
p(A)
p(A)的函数关系,也就是需要找到一个函数
f
(
x
)
f(x)
f(x)使得
f
(
p
(
A
)
)
=
h
(
A
)
(3)
\tag{3} f(p(A))=h(A)
f(p(A))=h(A)(3)
那么我们可将(1)(2)两式带入到(3)当中,得到:
h
(
A
,
B
)
=
f
(
p
(
A
,
B
)
)
=
f
(
p
(
A
)
∗
p
(
B
)
(4)
\tag{4} h(A,B) = f(p(A,B))=f(p(A)*p(B)
h(A,B)=f(p(A,B))=f(p(A)∗p(B)(4)
h
(
A
,
B
)
=
h
(
A
)
+
h
(
B
)
=
f
(
p
(
A
)
+
p
(
B
)
)
(5)
\tag{5} h(A,B) = h(A)+h(B)=f(p(A)+p(B))
h(A,B)=h(A)+h(B)=f(p(A)+p(B))(5)
由(4)(5)可得到:
f
(
p
(
A
)
∗
p
(
B
)
)
=
f
(
p
(
A
)
+
p
(
B
)
)
(6)
\tag{6} f(p(A)*p(B))=f(p(A) + p(B))
f(p(A)∗p(B))=f(p(A)+p(B))(6)
从(6)式就可以看出,
f
(
x
)
f(x)
f(x)应该是一个对数函数,则我们可以得到:
h
(
x
)
=
k
∗
l
o
g
a
p
(
x
)
a
>
1
(7)
\tag{7} h(x)=k*log_ap(x) \kern{2em} a \gt1
h(x)=k∗logap(x)a>1(7)
由于信息量肯定是一个正值,因此,我们去
k
=
−
1
k=-1
k=−1,
a
a
a可以任意取值,这里我们去
a
=
e
a=e
a=e,由此,我们就找到了信息量与事件发生的关系,函数如下:
h
(
x
)
=
−
l
n
p
(
x
)
(8)
\tag{8} h(x)=-lnp(x)
h(x)=−lnp(x)(8)
信息熵
定义: 事件集合
X
=
{
X
1
,
X
2
,
.
.
.
,
X
n
}
X=\{X_1,X_2,...,X_n\}
X={X1,X2,...,Xn}中,每个事件
X
i
X_i
Xi发生的信息量期望值之和就为信息熵
由定义,可以得到信息熵的函数表达为:
H
(
X
)
=
−
∑
i
=
1
n
p
(
X
i
)
∗
l
n
p
(
X
i
)
(9)
\tag{9} H(X)=-\sum_{i=1}^{n}p(X_i)*lnp(X_i)
H(X)=−i=1∑np(Xi)∗lnp(Xi)(9)
条件熵
条件熵定义: 在给定条件
X
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
X=\{x_1,x_2,...,x_n\}
X={x1,x2,...,xn}下,
Y
=
{
y
1
,
y
2
,
.
.
.
,
y
m
}
Y=\{y_1,y_2,...,y_m\}
Y={y1,y2,...,ym}的条件概率分布的熵对
X
X
X的数学期望.
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
(
x
i
)
H
(
Y
∣
X
=
x
i
)
(10)
\tag{10} H(Y|X)=\sum_{i=1}^{n}p(x_i)H(Y|X=x_i)
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)(10)
H
(
Y
∣
X
=
x
i
)
=
−
∑
i
=
1
n
p
(
y
j
∣
x
i
)
∗
l
n
p
(
y
i
∣
x
i
)
j
∈
(
1
,
2
,
.
.
.
,
m
)
(11)
\tag{11} H(Y|X=x_i)=-\sum_{i=1}^{n}p(y_j|x_i)*lnp(y_i|x_i) \\ j \isin (1,2,...,m)
H(Y∣X=xi)=−i=1∑np(yj∣xi)∗lnp(yi∣xi)j∈(1,2,...,m)(11)
通俗的解释理解一下这个公式:
−
p
(
y
1
∣
x
1
)
∗
l
n
p
(
y
1
∣
x
1
)
(12)
\tag{12} -p(y_1|x_1)*lnp(y_1|x_1)
−p(y1∣x1)∗lnp(y1∣x1)(12)
标示的是当
x
1
x_1
x1发生了
y
1
y_1
y1发生所产生的信息熵
−
∑
j
=
1
m
p
(
y
j
∣
x
1
)
∗
l
n
p
(
y
j
∣
x
1
)
(13)
\tag{13} -\displaystyle\sum_{j=1}^{m}p(y_j|x_1)*lnp(y_j|x_1)
−j=1∑mp(yj∣x1)∗lnp(yj∣x1)(13)
标示的是当
x
1
x_1
x1发生了
Y
Y
Y发生所产生的信息熵,也就是在
X
=
x
1
X=x_1
X=x1这个小的分组内,
Y
Y
Y的信息熵
−
[
p
(
x
1
)
∑
j
=
1
m
p
(
y
j
∣
x
1
)
∗
l
n
p
(
y
j
∣
x
1
)
+
p
(
x
2
)
∑
j
=
1
m
p
(
y
j
∣
x
2
)
∗
l
n
p
(
y
j
∣
x
2
)
+
.
.
.
+
p
(
x
n
)
∑
j
=
1
m
p
(
y
j
∣
x
n
)
∗
l
n
p
(
y
j
∣
x
n
)
]
(14)
\tag{14} -[p(x_1)\displaystyle\sum_{j=1}^{m}p(y_j|x_1)*lnp(y_j|x_1)\\+p(x_2)\displaystyle\sum_{j=1}^{m}p(y_j|x_2)*lnp(y_j|x_2)\\ +...+\\p(x_n)\displaystyle\sum_{j=1}^{m}p(y_j|x_n)*lnp(y_j|x_n)]
−[p(x1)j=1∑mp(yj∣x1)∗lnp(yj∣x1)+p(x2)j=1∑mp(yj∣x2)∗lnp(yj∣x2)+...+p(xn)j=1∑mp(yj∣xn)∗lnp(yj∣xn)](14)
标示每个
X
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
X=\{x_1,x_2,...,x_n\}
X={x1,x2,...,xn}中每个小的分组中Y={y_1,y_2,…,y_m}的信息熵对X的数学期望,所以在(13)的基础上乘以
x
i
x_i
xi发生的概率
p
(
x
i
)
p(x_i)
p(xi),就得到了(14),即为我们的条件熵,(14)简化一下可写成:
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
(
x
i
)
H
(
Y
∣
X
=
x
i
)
=
−
∑
i
=
1
n
[
p
(
x
i
)
∑
j
=
1
m
p
(
y
j
∣
x
i
)
∗
l
n
p
(
y
i
∣
x
i
)
]
(15)
\tag{15} H(Y|X)=\sum_{i=1}^{n}p(x_i)H(Y|X=x_i)\\=-\sum_{i=1}^{n}[p(x_i)\sum_{j=1}^{m}p(y_j|x_i)*lnp(y_i|x_i)]
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)=−i=1∑n[p(xi)j=1∑mp(yj∣xi)∗lnp(yi∣xi)](15)
由条件概率公式:
P
(
A
∣
B
)
=
P
(
A
B
)
P
(
B
)
(16)
\tag{16} P(A|B)=\frac{P(AB)}{P(B)}
P(A∣B)=P(B)P(AB)(16)
将(16)带入到(15)
H
(
Y
∣
X
)
=
−
∑
i
=
1
n
[
p
(
x
i
)
∑
j
=
1
m
p
(
y
j
,
x
i
)
p
(
x
i
)
∗
l
n
p
(
y
i
∣
x
i
)
]
=
∑
i
=
1
n
∑
j
=
1
m
p
(
y
j
,
x
i
)
∗
l
n
p
(
y
i
∣
x
i
)
(17)
\tag{17}H(Y|X)=-\sum_{i=1}^{n}[p(x_i)\sum_{j=1}^{m}\frac{p(y_j,x_i)}{p(x_i)}*lnp(y_i|x_i)]\\=\sum_{i=1}^{n}\sum_{j=1}^{m}p(y_j,x_i)*lnp(y_i|x_i)
H(Y∣X)=−i=1∑n[p(xi)j=1∑mp(xi)p(yj,xi)∗lnp(yi∣xi)]=i=1∑nj=1∑mp(yj,xi)∗lnp(yi∣xi)(17)
信息增益(ID3)
信息增益: 用以度量两种概率分布P和Q的差异,决策树中就是根据特征分类前后熵的差异.
那么,采用
X
X
X分类后,在采用
Y
Y
Y进行分类的信息增益,也就是通过
X
X
X分类后,发生
Y
Y
Y的信息熵的变化量:
G
a
i
n
(
Y
)
=
H
(
Y
)
−
H
(
Y
∣
X
)
(18)
\tag{18}{Gain(Y)=H(Y)-H(Y|X)}
Gain(Y)=H(Y)−H(Y∣X)(18)
信息增益标示按某种特性分类后,剩余特性的信息熵的大小的衰减程度,信息熵越小,证明已经分好的类别就更加的纯粹单一,所以在生成决策树的时候,选择信息增益大的特征进行分类就可以更好的区分样本.这就是决策树ID3算法
信息增益率(ID4.5)
由于ID3算法会倾向于选取特征值较多的特征进行分类(因为这样会让信息增益很大),比如:区分每个学生的成绩采用学生的学号进行区分,那么每个学生对应一个学号,则按照学号分的话,每个分组中就只有一个样本,并且信息熵为0,显然这个不是我们想要的,因此我们引入了信息增益率,每次选择分类特性的时候,根据信息增益率进行选取,也就是决策树ID4.5算法
G
a
i
n
R
a
t
i
o
(
Y
)
=
H
(
Y
)
−
H
(
Y
∣
X
)
H
(
Y
)
(19)
\tag{19}{GainRatio(Y)=\frac{H(Y)-H(Y|X)}{H(Y)}}
GainRatio(Y)=H(Y)H(Y)−H(Y∣X)(19)
基尼系数(CART)
基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的.如果分类特
A
A
A中又n个特征值,用
k
i
k_i
ki标示每个特征值,则该特征的基尼系数为:
G
i
n
i
(
A
)
=
∑
i
=
1
n
p
(
k
i
)
(
1
−
p
(
k
i
)
)
=
∑
i
=
1
n
p
(
k
i
)
−
∑
i
=
1
n
p
(
k
i
)
2
=
1
−
∑
i
=
1
n
p
(
k
i
)
2
(20)
\tag{20} Gini(A) = \sum_{i=1}^np(k_i)(1-p(k_i))\\ =\sum_{i=1}^np(k_i)-\sum_{i=1}^np(k_i)^2\\ =1-\sum_{i=1}^np(k_i)^2
Gini(A)=i=1∑np(ki)(1−p(ki))=i=1∑np(ki)−i=1∑np(ki)2=1−i=1∑np(ki)2(20)
剪枝
TODO
随机森林
TODO
样本集合随机
TODO
样本特征随机
TODO