[统计学习方法笔记]第5章-决策树

决策树模型呈树状结构,是一种基本的分类与回归方法。在分类任务中,表示基于特征对实例进行分类的过程。

特征选择

特征选择在于选取对训练数据具有分类能力的特征,也就是决定用哪个特征来划分特征空间。一般特征选择的准则是信息增益或信息增益比。

信息增益

在介绍信息增益前,先了解一下熵以及条件熵的概念。

熵表示随机变量不确定性的度量。设X表示一个取值有限的离散随机变量,其概率分布为:
P ( X = x i ) = p i , i = 1 , 2 , . . . , n P(X=x_i) = p_i, \quad i=1,2,...,n P(X=xi)=pi,i=1,2,...,n 随机变量X的熵定义为:
H ( X ) = − ∑ i = 1 n p i log ⁡ p i H(X) = -\sum_{i=1}^{n}p_i\log p_i H(X)=i=1npilogpi 熵只依赖于X的分布,与X的取值无关,H(X)可以记作:
H ( p ) = − ∑ i = 1 n p i log ⁡ p i H(p) = -\sum_{i=1}^{n}p_i\log p_i H(p)=i=1npilogpi 当X只有两个(1,0)取值时,X的分布:
P ( X = 1 ) = p , P ( X = 0 ) = 1 − p , 0 < = p < = 1 P(X=1) = p, P(X=0) = 1 - p, 0 <= p <= 1 P(X=1)=p,P(X=0)=1p,0<=p<=1 此时熵为:
H ( p ) = − p log ⁡ 2 p − ( 1 − p ) log ⁡ 2 ( 1 − p ) H(p) = -p\log_{2}p-(1-p)\log_2(1-p) H(p)=plog2p(1p)log2(1p) 熵取值越大,随机变量不确定性最大。

条件熵
条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不确定性,其定义为X给定条件下Y的条件概率分布的熵对X的数学期望。
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X) = \sum_{i=1}^{n}p_{i}H(Y|X=x_i) H(YX)=i=1npiH(YX=xi) 其中 p i = P ( X = x i ) , i = 1 , 2 , . . . , n p_i=P(X=x_i), i=1,2,...,n pi=P(X=xi),i=1,2,...,n

信息增益
信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
特征A对训练数据集D的信息增益g(D, A), 定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即为:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A) = H(D) - H(D|A) g(D,A)=H(D)H(DA)
熵H(Y)与条件熵H(Y|X)之差也称为互信息,所以信息增益等价于互信息。

信息增益比
信息增益作为划分数据集的特征时,存在偏向于选择取值较多的特征问题,而信息增益比可以校正这一问题。
特征A对训练数据集D的信息增益比 g r ( D , A ) g_r(D,A) gr(D,A),定义为其信息增益g(D,A)与训练数据集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)
n是特征A取值的个数,根据特征A取值划分D为n个集合,则:
H A ( D ) = − ∑ i = 1 n ∣ D i ∣ D log ⁡ 2 ∣ D i ∣ D H_A(D) = -\sum_{i=1}^{n}\frac{|D_i|}{D}\log_2\frac{|D_i|}{D} HA(D)=i=1nDDilog2DDi

决策树的生成

ID3算法:选择信息增益最大的特征作为结点的特征

C4.5算法:选择信息增益比最大的特征作为节点的特征

决策树的剪枝

决策树的剪枝一般通过极小化决策树整体的损失函数来实现。
设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有 N t N_t Nt个样本点,其中k类的样本点有N_{tk}个,k=1,2,…,K, H t ( T ) H_t(T) Ht(T)为叶节点t上的经验熵:
H t ( H ) = − ∑ k = 1 K N t k N t log ⁡ N t k N t H_t(H) = -\sum_{k=1}^{K}\frac{N_{tk}}{N_t}\log \frac{N_{tk}}{N_t} Ht(H)=k=1KNtNtklogNtNtk
决策树学习的损失函数为 C α ( T ) C_\alpha (T) Cα(T),其中参数 α ≥ 0 \alpha \geq 0 α0
C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_\alpha (T) = \sum_{t=1}^{|T|}N_tH_t(T) + \alpha |T| Cα(T)=t=1TNtHt(T)+αT
将上述公式右边第一项记为C(T),则:
C ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) = − ∑ t = 1 ∣ T ∣ ∑ k = 1 K N t k log ⁡ N t k N t C(T) = \sum_{t=1}^{|T|}N_tH_t(T) = -\sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}\log \frac{N_{tk}}{N_t} C(T)=t=1TNtHt(T)=t=1Tk=1KNtklogNtNtk
C α ( T ) = C ( T ) + α ∣ T ∣ C_\alpha (T) = C(T) + \alpha |T| Cα(T)=C(T)+αT
C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型复杂度,参数 α \alpha α控制两者之间的影响。
剪枝就是当 α \alpha α确定时,选择损失函数最小的模型。
决策树生成学习局部的模型,而决策树剪枝学习整体的模型。

CART树

决策树的生成就是递归地构建二叉树决策的过程,对回归树用平方误差最小化准则,对分类树用基尼指数最小化准则。
最小二乘回归树生成算法
回归树就是在训练数据集上,递归地将每个区域划分为两个子区域,并决定每个子区域上的输出值,构建二叉树,主要有如下四步:
(1)选择最优切分变量j与切分点s,求解
min ⁡ j , s [ min ⁡ c 1 ∑ x 1 ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x 1 ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min \limits_{j,s} \left [ \min \limits_{c1}\sum_{x1\in R_1(j,s)}(y_i-c_1)^2+\min \limits_{c2}\sum_{x1\in R_2(j,s)}(y_i-c_2)^2 \right ] j,sminc1minx1R1(j,s)(yic1)2+c2minx1R2(j,s)(yic2)2
遍历变量j,对固定的切分变量j扫描切分点s,选择使上式达到最小值的对(j,s)
(2)用选定的对(j,s)划分区域并决定相应的输出值:
R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } ,   R 2 ( j , s ) = { x ∣ x ( j ) ≥ s } R_1(j,s) = \{x|x^{(j)}\leq s\}, \ R_2(j,s) = \{x|x^{(j)}\geq s\} R1(j,s)={xx(j)s}, R2(j,s)={xx(j)s}
c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i ,   其 中 x ∈ R m ,   m = 1 , 2 \hat{c}_m = \frac{1}{N_m}\sum_{x_i\in R_m(j,s)}y_i, \ 其中 x\in R_m, \ m=1,2 c^m=Nm1xiRm(j,s)yi, xRm, m=1,2
(3)继续对两个子区域调用步骤(1),(2),直到满足停止条件
(4)将输入空间划分为M个区域 R 1 , R 2 , . . . , R M R_1,R_2,...,R_M R1,R2,...,RM,生成决策树:
f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x) = \sum_{m=1}^{M}\hat{c}_mI(x\in R_m) f(x)=m=1Mc^mI(xRm)

基尼指数
假设有K个类,样本点属于第k类的概率为 p k p_k pk,则概率分布的基尼指数定义为
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p) = \sum_{k=1}^{K}p_k(1-p_k) = 1 - \sum_{k=1}^{K}p_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
对于二分类问题,样本点属于第1类的概率为p,则概率分布的基尼指数为
G i n i ( p ) = 2 p ( 1 − p ) Gini(p) = 2p(1-p) Gini(p)=2p(1p)
对于给定的样本集合D, C k C_k Ck表示D中属于第k类的样本子集,则基尼指数为
G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D) = 1 - \sum_{k=1}^{K}\left ( \frac{|C_k|}{|D|} \right )^2 Gini(D)=1k=1K(DCk)2
如果集合D根据特征A是否取值为a被分割成D1和D2两部分,即
D 1 = { ( x , y ) ∈ D ∣ A ( x ) = a } ,   D 2 = D − D 1 D_1 = \{(x,y) \in D | A(x)=a\}, \ D_2 = D - D_1 D1={(x,y)DA(x)=a}, D2=DD1
则在特征A的条件下,集合D的基尼指数定义为
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D,A) = \frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)

未完成,待整理。。。

你可能感兴趣的:(统计学习方法)