决策树是一种基于分类与回归方法,决策数学习通过通常包括3个步骤:特征选择、决策树生产和决策树的修剪。常用的算法有ID3、C4.5、CART。
决策树是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成,结点有两种类型:内部结点、叶结点。内部结点表示特征或者属性,叶子结点表示一个类。
①特征的选择
为了进行特征选择,给出熵和条件熵的定义,从而求取信息增益和信息增益比。熵表示随机变量不确定性的度量,H(X)就是随机变量X的熵,Pi表示随机变量X的概率。(条件熵,就是该条件下的一个概率和一个子集合的熵)
②根据信息增益选择最优特征
第一步:计算经验熵H(D),分类结果9个是,6个否
H(D)=-9/15log(9/15) * -6/15log(6/15)=0.971
第二部:计算经验条件熵,共有4个特征
H(D,A1)=H(D)-[5/15H(D1)+5/15H(D2)+5/15H(D3)] //A1特征下共有三类,每类都是5个
H(D,A1)=0.971-5/15[(-2/5log2/5-3/5*log3/5)+(-3/5log3/5-2/5log2/5)+(-4/5log4/5-1/5log1/5)]=0.083
H(D,A2)=H(D)-[5/15H(D1)+10/15H(D2)]=0.324 //A2特征下共分为2类
H(D,A3)=H(D)-[6/15H(D1)+9/15H(D2)]=0.420
H(D,A4)=H(D)-[5/15H(D1)+6/15H(D2)+4/15H(D3)]=0.363
最后,比较各特征的信息增益值,由于特征A3(有自己的房子)的信息增益值最大,所以特征A3作为最优特征。
③根据信息增益比选择最优特征
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。
注意:H(X)是经验熵是对分类种类进行求概率,HA(D)是按A特征进行求概率。
④ID3算法
ID3算法是按照信息增益进行选取最优特征,C4.5是按照信息增益比去选择最优特征。
如上例,A3(有自己的房子)的信息增益最大,选择A3这个特征作为根,它将训练集D划为两个子集D1和D2(D1是,D2否,按照A3刚好划分为两类).由于D1的分类结果是一类,所以是个叶子结点,D2则从A1、A2、A4中选择下一个最优特征。
g(D2|A1)=H(D2)-H(D2|A1)=0.918-0.667=0.251
g(D2|A2)=H(D2)-H(D2|A3)=0.918
g(D2|A3)=H(D2)-H(D2|A3)=0.474
因此,A2(有工作)被选为下一个最优特征。下图是用两个特征生成的决策树。
⑤决策树的剪枝
决策树生成算法递归地产生决策树,直到不能继续下去为止。这样生成的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。过拟合的原因在于学习时过多的考虑如何提高对训练数据的正确分类。从而构造出过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。
在决策树学习中将已生成的决策树进行简化的过程称为剪枝,具体地,剪枝从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。
决策树的剪枝往往通过极小化决策树树整体的损失函数或代价函数来实现,设树T的叶节点个数为|T|,t是树T的一个叶节点,该叶节点有Nt个样本点,其中k类样本点有Ntk个,Ht(T)为叶结点t上的经验熵,α>=0为参数,则决策树学习的损失函数可以定义为(我一直迷茫叶节点不就是一个类别嘛,注意可能会分类错误)
|T|:叶节点的个数,叶子节点的个数不一定是分类的个数(殊途同归,不同的决策对应的分类结果可能一致)
Nt:是该叶节点有分类出多少个数据
Ntk:该t节点每一类有多少个数据
C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型的复杂程度,参数α>=0控制两者之间的影响,较大的α促使选择较简单得多模型树,反之选择较复杂的模型树,α=0意味着只考虑模型与训练数据的拟合程度,不考虑树的复杂度。
设TB剪枝后变为TA,对应的损失函数为:(剪枝后,该节点的类标号为该结点子树中最频繁的类标记)
总结:该剪枝为后剪枝,基于错误的剪枝。
⑥CART算法
分类与回归树模型,即CART算法;对回归树用平方误差最小化准则,对分类树用基尼指数最小化原则。
(1)回归(启发式方法选择切分点)
(2)分类(假设有k个类,每个类的概率为Pk,样本集和为D,Ck为第k类样本子集)
按照特征A对样本进行分类,分为两类D1和D2
总结:信息增益和信息增益比的区别,信息增益往往会存在偏向于选择取值较多的特征问题(即选取的特征取值很多,能把集和分的很散,树的分叉很多,过拟合严重)