文章目录
决策树(decision tree)
决策树模型是一个分类与回归方法,属于监督学习模型,是一个概率模型和判别模型。决策树可以理解为后验概率函数P(Y|X),通过特征X求取得类别Y的概率,一般Y的取值是特征向量X给定后的记录中的多数类(极大似然估计),所以说决策树模型是一个概率模型。
树结构不多说,决策树的基本思想是从训练集归纳出一组if-then分类规则,利用树的内部结点(internal node,包括根节点)进行划分,叶结点(leaf node)为最终分类结果,例如人类的性别划分,我们可以取身高为其中一个内部结点的划分依据,身高大于170cm数据进入右子树,小于等于170cm进入左子树,再取体重为子结点划分依据,最终看数据进入哪个叶结点,叶结点代表的类别就是最终分类结果,所以决策树算法就是if-then规则的集合,该集合互斥并且完备,每一个实例都被一条路径或一条规则所覆盖。
决策树模型
决策树模型包括特征选择,决策树生成和决策树剪枝,常见的算法有ID3、C4.5、CART回归树、CART分类树。其最关键问题是最优特征的选取方法,ID3利用信息增益最大、C4.5利用信息增益比最大、CART回归树利用平方误差最小、CART分类树利用基尼指数最小,CART回归树和CART分类树还需要额外选择特征的最优值。
特征选择
特征选择在于选取对分类有帮助的特征,基本方法有信息增益和信息增益比两种方法。首先介绍一下信息论中熵(entropy)的概念,熵描述的是随机变量的不确定性,对于随机变量X,其熵 H ( X ) H(X) H(X)定义如下:
H ( X ) = H ( p ) = ∑ i = 1 n − p i log p i H(X)=H(p)=\sum\limits_{i=1}^{n}-p_{i}\log p_{i} H(X)=H(p)=i=1∑n−pilogpi
p i p_{i} pi表示随机变量取不同值时的概率,定义 0 log 0 = 0 0\log 0=0 0log0=0,对数函数可以以2为底,此时熵的单位是比特(bit),也可以以自然对数 e e e为底,此时熵的单位是纳特(nat)。同时我们注意到熵的定义和随机变量X的取值无关,仅仅和取值的概率有关,所以熵也可以表示为 H ( p ) H(p) H(p)。
下面引出条件熵的定义,条件熵 H ( Y ∣ X ) H(Y|X) H(Y∣X)表示在随机变量X已知时随机变量Y的不确定性,条件熵 H ( Y ∣ X ) H(Y|X) H(Y∣X)定义如下:
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum\limits_{i=1}^{n}p_{i}H(Y|X=x_{i}) H(Y∣X)=i=1∑npiH(Y∣X=xi)
p i = p ( X = x i ) p_{i}=p(X=x_{i}) pi=p(X=xi)
当熵或者条件熵中的概率由概率估计(特别是极大似然估计)得到时,熵和条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)。
信息增益
对于训练集D,A为其中某个特征,信息增益 g ( D , A ) g(D,A) g(D,A)定义为经验熵与经验条件熵的差值,又叫互信息 :
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
其中,
H ( D ) = ∑ i = 1 n − p i log p i = ∑ i = 1 K − ∣ C i ∣ ∣ D ∣ log ∣ C i ∣ ∣ D ∣ H(D)=\sum\limits_{i=1}^{n}-p_{i}\log p_{i}=\sum\limits_{i=1}^{K}-\frac{|C_{i}|}{|D|}\log \frac{|C_{i}|}{|D|} H(D)=i=1∑n−pilogpi=i=1∑K−∣D∣∣Ci∣log∣D∣∣Ci∣
H ( D ∣ A ) = ∑ i = 1 n p ( X = x i ) ⋅ H ( Y ∣ X = x i ) = ∑ i = 1 m ∣ D i ∣ ∣ D ∣ ∑ j = 1 K − ∣ D i j ∣ ∣ D i ∣ log ∣ D i j ∣ ∣ D i ∣ H(D|A)=\sum\limits_{i=1}^{n}p(X=x_{i})·H(Y|X=x_{i})=\sum\limits_{i=1}^{m}\frac{|D_{i}|}{|D|}\sum\limits_{j=1}^{K}-\frac{|D_{ij}|}{|D_{i}|}\log \frac{|D_{ij}|}{|D_{i}|} H(D∣A)=i=1∑np(X=xi)⋅H(Y∣X=xi)=i=1∑m∣D∣∣Di∣j=1∑K−∣Di∣∣Dij∣log∣Di∣∣Dij∣
熵和条件熵中的概率估计均是通过极大似然估计得到的(频率等于概率其依据就是极大似然估计,我在证明朴素贝叶斯分类器学习过程时,附带证明了这一点), ∣ D ∣ |D| ∣D∣表示总的记录条数, ∣ C i ∣ , i = 1 , 2 … K |C_{i}|,i=1,2 \dots K ∣Ci∣,i=1,2…K表示训练集中每个类的记录条数, ∣ D i ∣ , i = 1 , 2 … m |D_{i}|,i=1,2\dots m ∣Di∣,i=1,2…m表示训练集D中特征A取不同值时的记录条数, ∣ D i j ∣ , i = 1 , 2 … m , j = 1 , 2 … K |D_{ij}|,i=1,2\dots m,j=1,2\dots K ∣Dij∣,i=1,2…m,j=1,2…K表示训练集在特征A取不同值的记录中,分属不同类的记录条数, D i j = D i ∩ C j D_{ij}=D_{i} \cap C_{j} Dij=Di∩Cj。
信息增益比
信息增益存在偏向于选择取值较多的特征的问题。原因引用blog:https://www.cnblogs.com/muzixi/p/6566803.html
当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较偏向取值较多的特征。
因此提出一种校正方法,即信息增益比。
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)
H A ( D ) = ∑ i = 1 m − ∣ D i ∣ ∣ D ∣ log ∣ D i ∣ ∣ D ∣ H_{A}(D)=\sum\limits_{i=1}^{m}-\frac{|D_{i}|}{|D|}\log \frac{|D_{i}|}{|D|} HA(D)=i=1∑m−∣D∣∣Di∣log∣D∣∣Di∣
m是特征A取值的个数。相当于给信息增益乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
ID3决策树生成算法
ID3是一个常见的决策树生成算法。其基本思路就是自根节点开始,对当前剩余的特征比较信息增益,选择信息增益最大的字段分割当前结点(决策数的生成过程也是训练集数据随结点的生成被切分到子结点的过程,因此对每个结点的数据都可以计算熵H(D)),直到所有字段全部用完或者信息增益小于阈值或者当前结点的所有数据都是同一个类别的数据,此时的结点记为叶节点,叶节点中剩余数据的多数类记为叶节点的最终分类。
算法流程
输入:训练数据集D,特征集合A,阈值 ξ \xi ξ
输出:生成的决策树T
执行流程:
- 对当前结点(在第一次递归过程中就是根结点)中的数据D,若数据均属于同一个类 c k c_{k} ck,则该结点为叶结点,叶结点的分类为 c k c_{k} ck。
- 对当前结点,若待选特征集合 A = ∅ A=\varnothing A=∅,则该结点为叶结点,叶结点的分类为当前结点中剩余数据的多数类。
- 对当前结点,对待选特征集合A中的特征,分别计算其信息增益,其中具有最大的信息增益的特征记为 A g A_{g} Ag。
- 若 A g A_{g} Ag的信息增益小于阈值 ξ \xi ξ,则该结点为叶结点,叶结点的分类为当前结点中剩余数据的多数类。否则,按特征 A g A_{g}