决策树
注意事项
本文仅供自己学习参考用,如有错误,请联系本人删除或修改。谢谢各位。
基本流程
决策树是基于树结构
ID3决策树
信息熵
度量样本集合纯度最常用的一种指标定义如下
E
n
t
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
l
o
g
2
p
k
Ent(D) = -\sum_{k=1}^{|y|}p_klog_2p_k
Ent(D)=−k=1∑∣y∣pklog2pk
Ent(D)的值越小,D的纯度越高。
D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) ⋯ ( x m , y m ) 表 示 样 本 集 合 , ∣ y ∣ 表 示 样 本 类 别 综 述 p k 表 示 第 K 类 样 本 所 占 比 例 , 且 0 ≤ p k ≤ 1 D= {(x_1, y_1),(x_2, y_2),(x_3,y_3)\cdots(x_m,y_m)}表示样本集合, |y|表示样本类别综述 p_k表示第K类样本所占比例,且0\le p_k \le 1 D=(x1,y1),(x2,y2),(x3,y3)⋯(xm,ym)表示样本集合,∣y∣表示样本类别综述pk表示第K类样本所占比例,且0≤pk≤1
证明
0 ≤ E n t ( D ) ≤ l o g 2 ∣ y ∣ 0 \le Ent(D) \le log_2|y| 0≤Ent(D)≤log2∣y∣
求Ent(D)最大值:
假设为n分类问题 |y| = n
E
n
t
(
D
)
=
f
(
x
1
,
⋯
,
x
n
)
=
−
∑
k
=
1
n
x
k
l
o
g
2
x
k
Ent(D) = f(x_1, \cdots, x_n) = - \sum_{k=1}^{n}x_klog_2x_k
Ent(D)=f(x1,⋯,xn)=−k=1∑nxklog2xk
其
中
0
≤
x
k
≤
1
,
∑
k
=
1
n
x
k
=
1
其中 0 \le x_k \le 1, \sum_{k=1}^{n}x_k = 1
其中0≤xk≤1,k=1∑nxk=1
p
k
=
x
k
p_k = x_k
pk=xk
p
k
是
第
k
类
样
本
所
占
比
例
,
所
以
p_k是第k类样本所占比例,所以
pk是第k类样本所占比例,所以
假设仅考虑以下约束
∑
k
=
1
n
x
k
=
1
\sum_{k=1}^{n}x_k =1
k=1∑nxk=1
对
f
(
x
1
⋯
x
n
)
求
最
大
值
对f(x_1 \cdots x_n)求最大值
对f(x1⋯xn)求最大值
m
i
n
∑
k
=
1
n
x
k
l
o
g
2
x
k
等
同
于
n
个
x
l
o
g
2
x
之
和
min\sum_{k=1}^{n}x_klog_2x_k 等同于n个xlog_2x之和
mink=1∑nxklog2xk等同于n个xlog2x之和
(
x
l
o
g
2
x
)
"
二
阶
导
数
恒
大
于
零
,
则
证
明
x
l
o
g
2
x
是
凸
函
数
,
同
理
n
l
o
g
2
x
也
为
凸
函
数
,
也
可
用
H
e
s
s
i
a
n
矩
阵
正
定
性
证
明
(xlog_2x)^" 二阶导数恒大于零,则证明xlog_2x是凸函数,同理nlog_2x也为凸函数,也可用Hessian矩阵正定性证明
(xlog2x)"二阶导数恒大于零,则证明xlog2x是凸函数,同理nlog2x也为凸函数,也可用Hessian矩阵正定性证明
所
以
m
i
n
∑
k
=
1
n
x
k
l
o
g
2
x
k
也
为
凸
函
数
所以 min\sum_{k=1}^{n}x_klog_2x_k也为凸函数
所以min∑k=1nxklog2xk也为凸函数
凸优化问题,满足KKT条件的点为最优解。即
m
i
n
∑
k
=
1
n
x
k
l
o
g
2
x
k
min\sum_{k=1}^{n}x_klog_2x_k
mink=1∑nxklog2xk存在最小值点,则
对
f
(
x
1
⋯
x
n
)
存
在
最
大
值
对f(x_1 \cdots x_n)存在最大值
对f(x1⋯xn)存在最大值
K
K
T
可
见
最
优
化
基
础
理
论
与
方
法
\mathbf KKT 可见最优化基础理论与方法
KKT可见最优化基础理论与方法
根据拉格朗日函数的一阶导数为0 可以找出最优化的点,满足KKT的点
拉格朗日乘子法
L
(
x
1
,
x
2
,
⋯
,
x
n
,
λ
)
=
∑
k
=
1
n
x
k
l
o
g
2
x
k
+
λ
(
∑
k
=
1
n
x
k
−
1
)
λ
为
拉
格
朗
日
乘
子
L(x_1,x_2, \cdots, x_n, \lambda) = \sum_{k=1}^{n}x_klog_2x_k + \lambda(\sum_{k=1}^{n}x_k - 1) \lambda为拉格朗日乘子
L(x1,x2,⋯,xn,λ)=k=1∑nxklog2xk+λ(k=1∑nxk−1)λ为拉格朗日乘子
求上式的一阶偏导,并等于0
δ
L
(
x
1
,
⋯
,
x
n
)
δ
x
1
=
δ
L
δ
x
1
[
∑
k
=
1
n
x
k
l
o
g
2
x
k
+
λ
(
∑
k
=
1
n
x
k
−
1
)
]
{{\delta L(x_1, \cdots , x_n)}\over{\delta}x_1} ={{\delta L}\over{\delta}x_1 }[{\sum_{k=1}^{n}x_klog_2x_k + \lambda(\sum_{k=1}^{n}x_k - 1)}]
δx1δL(x1,⋯,xn)=δx1δL[k=1∑nxklog2xk+λ(k=1∑nxk−1)]
=
l
o
g
2
x
1
+
x
1
⋅
1
x
1
l
n
2
+
λ
= {log_2 x_1} + {x_1 · {1}\over{x_1ln2}} + \lambda
=log2x1+x1ln2x1⋅1+λ
=
l
o
g
2
x
1
+
1
l
n
2
+
λ
= {log_2 x_1} + {{1}\over{ln2}} + \lambda
=log2x1+ln21+λ
令一阶偏导为0
l
o
g
2
x
1
+
1
l
n
2
+
λ
=
0
{log_2 x_1} + {{1}\over{ln2}} + \lambda = 0
log2x1+ln21+λ=0
l
o
g
2
x
1
+
1
l
n
2
=
−
λ
{log_2 x_1} + {{1}\over{ln2}} = - \lambda
log2x1+ln21=−λ
同
理
证
明
x
2
,
x
3
同理证明x_2,x_3
同理证明x2,x3
l
o
g
2
x
2
+
1
l
n
2
=
−
λ
{log_2 x_2} + {{1}\over{ln2}} = - \lambda
log2x2+ln21=−λ
⋯
\cdots
⋯
l
o
g
2
x
n
+
1
l
n
2
=
−
λ
{log_2 x_n} + {{1}\over{ln2}} = - \lambda
log2xn+ln21=−λ
得
x
1
=
x
2
=
⋯
=
x
n
得 x_1 = x_2 = \cdots = x_n
得x1=x2=⋯=xn
对
λ
求
偏
导
对\lambda求偏导
对λ求偏导
δ
L
(
x
1
,
⋯
,
x
n
,
λ
)
δ
λ
=
δ
L
δ
λ
[
∑
k
=
1
n
x
k
l
o
g
2
x
k
+
λ
(
∑
k
=
1
n
x
k
−
1
)
]
{{\delta L(x_1, \cdots , x_n, \lambda)}\over{\delta \lambda}} = {{\delta L}\over{\delta}\lambda }[{\sum_{k=1}^{n}x_klog_2x_k + \lambda(\sum_{k=1}^{n}x_k - 1)}]
δλδL(x1,⋯,xn,λ)=δλδL[k=1∑nxklog2xk+λ(k=1∑nxk−1)]
令一阶为0
∑
k
=
1
n
x
k
−
1
=
0
\sum_{k=1}^{n}x_k - 1 = 0
k=1∑nxk−1=0
解
的
x
1
=
x
2
=
⋯
=
x
n
=
1
n
解的 x_1 = x_2 = \cdots = x_n = {1 \over n}
解的x1=x2=⋯=xn=n1
E
n
t
(
D
)
=
f
(
1
n
,
⋯
,
1
n
)
=
−
∑
k
=
1
n
1
n
l
o
g
2
1
n
=
l
o
g
2
n
Ent(D) = f({1 \over n}, \cdots, {1 \over n}) = - \sum_{k=1}^{n}{1 \over n}log_2{1 \over n} = log_2 n
Ent(D)=f(n1,⋯,n1)=−k=1∑nn1log2n1=log2n
所
有
在
满
足
约
束
条
件
下
,
最
大
值
为
l
o
g
2
n
所有在满足约束条件下,最大值为log_2 n
所有在满足约束条件下,最大值为log2n
同理证明Ent(D)最小值,求Ent(D)的最小值,就是求N个一元函数的加和,求每个一元函数的最小值就是求Ent的最小值。求一阶二阶导数
求
g
′
(
x
n
)
=
−
l
o
g
2
x
n
−
1
l
n
2
求 g^{'}(x_n) = - {{log_2 x_n} - {{1}\over{ln2}}}
求g′(xn)=−log2xn−ln21
求
g
′
′
(
x
n
)
=
−
1
x
1
l
n
2
求 g^{''}(x_n) = - {{1}\over{x_1{ln2}}}
求g′′(xn)=−x1ln21
因
为
0
≤
x
n
≤
1
,
g
′
′
(
x
n
)
<
0
因为0 \le x_n \le 1, {g^{''}(x_n) < 0}
因为0≤xn≤1,g′′(xn)<0
所以单调递减,最小值在边界 0 或者 1
g
(
x
n
)
=
0
即
最
小
值
E
n
t
(
D
)
=
0
g(x_n) = 0 即 最小值Ent(D) = 0
g(xn)=0即最小值Ent(D)=0
0
≤
E
n
t
(
D
)
≤
1
0 \le Ent(D) \le 1
0≤Ent(D)≤1
条件熵
在已知样本属性x的取值下,度量样本集合纯度的指标
H
(
D
∣
x
)
=
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
H(D|x) = \sum_{v=1}^{V}{{|D^v|} \over {|D|}}Ent(D^v)
H(D∣x)=v=1∑V∣D∣∣Dv∣Ent(Dv)
其
中
,
x
表
示
样
本
的
某
个
属
性
,
假
定
x
有
V
个
可
能
的
取
值
x
1
,
⋯
,
x
V
,
样
本
集
合
中
在
属
性
x
上
取
值
为
a
V
的
样
本
记
D
v
其中, x表示样本的某个属性,假定x有V个可能的取值{x^1, \cdots, x^V},样本集合中在属性x上取值为a^V的样本记D^v
其中,x表示样本的某个属性,假定x有V个可能的取值x1,⋯,xV,样本集合中在属性x上取值为aV的样本记Dv
E
n
t
(
D
v
)
表
示
D
v
的
信
息
熵
H
(
D
∣
x
)
的
值
越
小
,
纯
度
越
高
Ent(D^v)表示D^v的信息熵 H(D|x)的值越小,纯度越高
Ent(Dv)表示Dv的信息熵H(D∣x)的值越小,纯度越高
条件熵是在已知部分信息的基础上的信息熵
ID3决策树
以信息增益为准则来选择划分属性的决策树
信息增益
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D, a) = Ent(D) - \sum_{v=1}^{V}{{|D^v|} \over {|D|}}Ent(D^v)
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
=
E
n
t
(
D
)
−
H
(
D
∣
a
)
= Ent(D) - H(D|a)
=Ent(D)−H(D∣a)
信息熵减去条件熵
ID3对可取值数目较多的属性 友好
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D, a) = Ent(D) - \sum_{v=1}^{V}{{|D^v|} \over {|D|}}Ent(D^v)
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
(
−
∑
k
=
1
n
x
k
l
o
g
2
x
k
)
Gain(D, a) = Ent(D) - \sum_{v=1}^{V}{{|D^v|} \over {|D|}}{(-\sum_{k=1}^{n}x_klog_2x_k)}
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣(−k=1∑nxklog2xk)
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
∑
k
=
1
n
x
k
l
o
g
2
x
k
Gain(D, a) = Ent(D) - \sum_{v=1}^{V}{{|D^v|} \over {|D|}}{\sum_{k=1}^{n}x_klog_2x_k}
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣k=1∑nxklog2xk
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
−
(
∑
k
=
1
n
∣
D
k
v
∣
∣
D
v
∣
l
o
g
2
∣
D
k
v
∣
∣
D
v
∣
)
Gain(D, a) = Ent(D) - \sum_{v=1}^{V}{{|D^v|} \over {|D|}}{-({\sum_{k=1}^{n}{|D_{k}^{v}| \over |D^v|}log_2{|D_{k}^{v}| \over |D^v|}})}
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣−(k=1∑n∣Dv∣∣Dkv∣log2∣Dv∣∣Dkv∣)
D
k
v
是
集
合
D
中
属
性
为
x
上
取
值
为
a
v
且
类
别
为
k
的
样
本
D_{k}^{v}是集合D中属性为x上取值为a^v且类别为k的样本
Dkv是集合D中属性为x上取值为av且类别为k的样本
极
端
想
法
,
某
属
性
的
v
取
值
等
于
样
本
集
合
数
D
即
v
=
∣
D
∣
,
则
∣
D
k
v
∣
∣
D
v
∣
=
1
极端想法,某属性的v取值等于样本集合数D即 v = |D| ,则{|D_{k}^{v}|\over |D^v|} = 1
极端想法,某属性的v取值等于样本集合数D即v=∣D∣,则∣Dv∣∣Dkv∣=1
信
息
熵
恒
大
于
零
,
0
≤
−
(
∑
k
=
1
n
∣
D
k
v
∣
∣
D
v
∣
l
o
g
2
∣
D
k
v
∣
∣
D
v
∣
)
信息熵恒大于零, 0 \le{-({\sum_{k=1}^{n}{|D_{k}^{v}| \over |D^v|}log_2{|D_{k}^{v}| \over |D^v|}})}
信息熵恒大于零,0≤−(k=1∑n∣Dv∣∣Dkv∣log2∣Dv∣∣Dkv∣)
所
以
0
≤
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
−
(
∑
k
=
1
n
∣
D
k
v
∣
∣
D
v
∣
l
o
g
2
∣
D
k
v
∣
∣
D
v
∣
)
所以0 \le \sum_{v=1}^{V}{{|D^v|} \over {|D|}}{-({\sum_{k=1}^{n}{|D_{k}^{v}| \over |D^v|}log_2{|D_{k}^{v}| \over |D^v|}})}
所以0≤v=1∑V∣D∣∣Dv∣−(k=1∑n∣Dv∣∣Dkv∣log2∣Dv∣∣Dkv∣)
当上式取最小值时,Gain(D,a) = Ent(D) 信息增益取到最大值。如果我们选择信息增益最大作为属性划分的话就会选择属性a来作为划分,会产生过拟合现象,所以加上惩罚项 就是C4.5
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) = {Gain(D, a) \over IV(a)}
Gainratio(D,a)=IV(a)Gain(D,a)
I
V
(
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
∣
D
∣
IV(a) = - {{\sum_{v=1}^{V}}{|D^v| \over {|D|}}log_2{|D^v| \over {|D|}}}
IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
IV(a) 等同于信息熵, 如果信息熵越大,惩罚项也越大,分母也大。
增益率准则对可取值数目较少的属性有所偏好。C4.5先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的
CART决策树
以基尼指数为准备来选择划分属性的决策树
基尼值
从集合D中随机抽取两个样本。其类别标记不一致的概率。因此基尼值越小,D的纯度越高
G
i
n
i
(
D
)
=
∑
k
=
1
∣
y
∣
∑
k
′
≠
k
p
k
p
k
′
=
∑
k
=
1
∣
y
∣
∑
k
′
≠
k
p
k
(
1
−
p
k
)
Gini(D) = \sum_{k=1}^{|y|} \sum_{{k^{'}} \ne k} {p_k}{p^{'}_k} = \sum_{k=1}^{|y|} \sum_{{k^{'}} \ne k} {p_k}{(1 - {p_k})}
Gini(D)=k=1∑∣y∣k′=k∑pkpk′=k=1∑∣y∣k′=k∑pk(1−pk)
=
1
−
∑
k
=
1
∣
y
∣
p
k
2
= 1- {\sum_{k=1}^{|y|}p_k^{2}}
=1−k=1∑∣y∣pk2
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}{|D^v| \over |D|}{Gini(D^v)} Giniindex(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
分类算法CART
1. 根据基尼指数公式找出基尼指数最小的属性a
2. 计算属性a所有可能取值的基尼值,取最小的尼基值的点作为划分点,将D划分为D1和D2两个集合
其
中
D
1
=
k
′
,
D
2
=
k
=
1
−
k
′
,
D
1
是
k
′
=
k
的
样
本
,
D
2
是
k
′
≠
k
其中D1 = {k^{'}} , D2= {k} = 1 - {k^{'}}, D1是{{k^{'}} = k}的样本, D2是{{k^{'}} \ne k}
其中D1=k′,D2=k=1−k′,D1是k′=k的样本,D2是k′=k
3. 对集合D1和D2重复上述1,2过程直至结束。
回归算法CART
1.根据一下公式找出最优划分特征和最优划分点
2.公式自己百度,打不出来
3.根据划分点将集合D划分开
4.如此重复