机器学习之决策树学习笔记

一、决策树学习的目标

根据给定的训练数据集,归纳出一组分类规则,构建决策树模型,使得模型能对实例进行正确划分。 

二、决策树模型

①决策树模型是基于特征,对实例进行分类的树形结构。

②决策树模型的组成结构有:

1. 结点(node)

结点分为内部结点(internal node)和叶结点(leaf node),每一个内部结点对应着一个特征或属性,每一个叶结点对应着一个类

2. 有向边(directed edge)

下图为一个决策树模型,其中圆圈表示内部结点,矩形表示叶结点,有向线段表示有向边:

③决策树模型可看成是:

1. if-then规则集合

决策树的if-then规则集合是由决策树的根结点到叶结点的每一条路径构建一条规则,路径上内部结点的特征是规则的条件,叶结点的类是规则的结论。

决策树的路径互斥并完备,即每个实例对应着有且仅有一条路径或规则

2.条件概率分布

决策树的条件概率分布是特征空间与类空间上的条件概率分布,即在分类时将结点的类分到条件概率大的一类

 三、决策树策略

策略:以损失函数为目标函数的最小化

引入正则化的极大似然函数作为损失函数,以便决策树模型不仅能对训练数据有很好的拟合,而且对未知数据有很好的预测

 四、决策树算法

1、决策树学习算法的过程

决策树学习算法的过程为:

递归地选择最优特征;

根据特征对训练数据进行分割;

使得对各个子数据集有一个最好的分类


 2、决策树的构建

决策树的构建过程为:

①构建根结点

将所有训练数据都放在根结点

②选择一个最优特征进行分类

a.如果分类后的子集能够被基本正确分类,那就构建叶结点,将子集分配到对应叶结点

b.如果还有子集不能被基本正确分类,那就重复步骤②,直至子集满足条件a或者没有合适的特征

构建的决策树模型可能出现对训练数据有很好的分类能力,但对未知测试数据的分类能力并不好的现象,即过拟合现象。当出现过拟合现象时,需对已生成的决策树自下而上进行剪枝,将树变得更简单,从而使其具有更好的泛化能力。


3、决策树的算法过程

决策树的算法过程包括:特征选择、决策树的生成、决策树的剪枝

决策树的生成只考虑局部最优,而决策树的剪枝则考虑全局最优

①特征选择

特征选择的标准是对训练数据具有分类能力,当利用这个特征进行分类的结果与随机分类的结果没有很大差别,我们说这个特征没有分类能力

特征选择的准则是信息增益和信息增益比:

a.信息增益

熵(entropy)是表示随机变量不确定性的度量,为

其中X是一个取有限个值得离散随机变量

经验熵(conditional entropy)是X给定条件下Y的条件概率分布的熵对X的数学期望

当熵和条件熵中的概率由数据统计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)

信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度

特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即

一般地,熵与条件熵之差称为互信息(mutual information)

决策树学习中的信息增益等价于训练数据集中类与特征的互信息

根据信息增益原则进行特征选择的方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征

信息增益算法:

输入:训练数据集D和特征A

输出:特征A对训练数据集D的信息增益g(D,A)

(1)计算数据集D的经验熵H(D)

(2)计算特征A对数据集D的经验条件熵H(D|A)

(3)计算信息增益g(D,A)

b.信息增益比

信息增益比提出的原因:在分类困难即训练数据集的经验熵很大的时候,信息增益值会偏大,使用信息增益比(information gain ratio)可以校正这一问题。

信息增益比:

特征A对训练数据集D的信息增益比 定义为其信息增益g(D,A)与训练数据集D的经验熵H(D)之比,即

②决策树的生成

①    ID3算法

②    C4.5算法

③决策树的剪枝

由于在学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,出现过拟合现象,所以需要对已生成的决策树进行剪枝(pruning)。

剪枝(pruning)是指将已生成的决策树进行简化的过程,具体来说是指从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。

决策树的剪枝往往是通过极小化决策树整体的损失函数(loss function)或代价函数(cost function)来实现。

决策树学习的损失函数可定义为:

其中,

C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型复杂度,参数 控制两者之间的影响。

树的剪枝算法:

输入:生成算法产生的整个树T,参数

输出:修剪后的子树

(1)计算每个结点的经验熵

(2)递归地从树的叶结点向上回缩

(3)返回(2),直至不能继续为止,得到损失函数最小的子树

4、决策树算法

①    分类与回归树CART算法

CART(classificationand regression tree)分类与回归树,是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。

CART的组成:

1. 决策树的生成   基于训练数据集生成决策树,生成的决策树要尽量大

2. 决策树的剪枝   用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准

1. CART回归树的生成

决策树的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数(Gini index)最小化准则,进行特征选择,生成二叉树。

最小二乘回归树生成算法:

2. CART分类树的生成

CART分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点



3. CART剪枝

②   C5.0算法

1. C5.0算法从ID3,C4.5改进而来,嵌入了大规模学习常用的推进法。相对于ID3算法和C4.5算法,此算法兼具扩展性和效率;

2. C5.0是一种多叉树,即如果根结点或中间结点存在连续型自变量,则该变量会一分为二的展开两个分支;如果根结点或中间结点存在离散的自变量,则该变量会根据离散变量的水平数分开多个分支,这会导致某个变量一旦被使用,后面的结点将不会再启用该变量;

3. C5.0决策树的生长过程采用的是最大信息增益率原则,进行结点选择和分裂点选择。信息熵反应的是信息杂乱程度,信息越杂乱(越不纯),则信息熵越大;反之,信息熵越小;

4. C5.0决策树的剪枝采用“减少-误差”法和“减少-损失”法技术。其中,“减少-误差”法的核心思想是对比剪枝前后的误差率,如果剪枝后的误差率比剪枝前的误差率要低,则剪枝,否则不剪枝;“减少-损失”法是结合损失矩阵对树进行剪枝,其核心思想是比较剪枝前后损失量,如果剪枝后的损失要小于剪枝钱的损失,则剪枝,否则不剪枝;

5. C5.0算法只能解决分类问题。

③   卡方自动交互检测法CHAID(CHi-squaredAutomatic Interaction Detection)

1. CHAID的核心思想是根据给定的反应变量和解释变量对样本进行最优分割,按照卡方检验的显著性进行多元列联表的自动判断分组;

2. 利用CHAID可以快速、有效地挖掘出主要的影响因素,它不仅可以处理非线性和高度相关的数据,而且可以将缺失值考虑在内,能克服传统的参数检验方法在这些方面的限制;

3. CHAID的分类过程是:首先选定分类的反应变量,然后用解释变量与反应变量进行交叉分类,产生一系列二维分类表,分别计算二维分类表的χ2值,比较P值的大小,以P值最小的二维表作为最佳初始分类表,在最佳二维分类表的基础上继续使用解释变量对反应变量进行分类,重复上述过程直到P值大于设定的有统计意义的α值为止;

4. 为了防止模型的过度拟合,可以将分析数据随机分成两部分,一部分为训练样本,另一部分为检验样本,两者所占比例通常为70%和30%,先用训练样本建立树形模型,再利用检验样本对所建模型进行修正。对修正后的模型计算Risk统计量,该统计量用于评价树形模型预测的准确程度(Risk统计量越小,表明用该树形模型进行预测的准确程度越高),当反应变量为分类变量时,Risk统计量为错分例数与总例数之比;

5. 利用接受者工作特征曲线(receiver operating characte ristic curve,ROC曲线)下面积对卡方自动交互检测法的分析结果进行评价;

6. CHAID的优势是它的结果是非常直观的易于理解的。由于默认情况下CHAID采用多路分割,所以需要相当大的样本量,来有效地开展工作。

五、决策树的大规模训练方法

1、交叉验证法(Cross Validation)

交叉验证法(cross validation)是指重复地使用数据;把给定的数据进行切分,将切分的数据集组合成为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。交叉验证法有以下三种类型:

① 简单交叉验证

首先随机地将已给数据分为两部分,一部分作为训练集,另一部分作为测试集(例如,70%的数据为训练集,30%的数据为测试集);然后用训练集在各种条件下(例如,不同的参数个数)训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。

② S折交叉验证

首先随机地将已给数据切分为S个互不相交的大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型。

③ 留一交叉验证

S折交叉验证的特殊情形是S=N,N是给定数据集的容量。

2、袋装法(Bagging)

① 袋装法(Bagging)是一种在原始数据集上通过有放回抽样重新选出S个新数据集来训练分类器的集成技术。也就是说这些新数据集是允许重复的;

② 袋装法(Bagging)使用训练出来的分类器集合来对新样本进行分类,然后用多数投票或者对输出求均值的方法统计所有分类器的分类结果,结果最高的类别即为最终标签;

③ 袋装法(Bagging)是并行式集成学习代表方法,基于“自助采样法”(bootstrapsampling)。其中,自助采样法的机制是给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下一次采样时该样本还会被采到。这样,经过m次样本采集,我们得到包含m个样本的采样集。采样集中,有的样本出现过很多次,有的没有出现过。Bagging机制:我们采样出T个含m个样本的采样集。然后基于每个采样集训练出一个学习器,再将学习器进行结合。对分类任务使用投票法,对回归任务采用平均值法。

3、推进法(Boosting)

① 推进法(Boosting)是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数;

② 推进法(Boosting)是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器;

③ 推进法(Boosting)可以用来提高其他弱分类算法的识别率,也就是将其他的弱分类算法作为基分类算法放于Boosting 框架中,通过Boosting框架对训练样本集的操作,得到不同的训练样本子集,用该样本子集去训练生成基分类器;每得到一个样本集就用该基分类算法在该样本集上产生一个基分类器,这样在给定训练轮数 n 后,就可产生 n 个基分类器,然后Boosting框架算法将这 n个基分类器进行加权融合,产生一个最后的结果分类器,在这 n个基分类器中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别率,这样便提高了该弱分类算法的识别率。在产生单个的基分类器时可用相同的分类算法,也可用不同的分类算法,这些算法一般是不稳定的弱分类算法,如神经网络(BP) ,决策树(C4.5)等。

六、决策树的应用

1、优点

可以生成可以理解的规则;

计算量相对来说不是很大;

可以处理连续和种类字段;

决策树可以清晰的显示哪些字段比较重要;

条理清晰、程序严谨;

定量、定性分析相结合;

方法简单,易于掌握;

应用性强;

适用范围广

2、缺点

对连续性的字段比较难预测;

对有时间顺序的数据,需要很多预处理的工作;

当类别太多时,错误可能就会增加的比较快;

一般的算法分类的时候,只是根据一个字段来分类

3、适用范围

进行科学的决策

4、使用条件

应用决策树决策方法必须具备以下条件:

① 具有决策者期望达到的明确目标;

② 存在决策者可以选择的两个以上的可行备选方案;

③ 存在着决策者无法控制的两种以上的自然状态(如气候变化、市场行情、经济发展动向等);

④ 不同行动方案在不同自然状态下的收益值或损失值(简称损益值)可以计算出来;

⑤ 决策者能估计出不同的自然状态发生概率

5、决策树的应用实例

人脸检测,人体动作识别(Body Tracking)



本文首发于微信公众号“自由奇点”

参考资料:李航老师的《统计学习方法》及百度百科、CSDN、博客园等网络内容,如有侵权,请联系作者,谢谢!

猜你喜欢

转载自blog.csdn.net/sophiezjz/article/details/80280486