【ML算法】随机森林算法的总结(一)之决策树

文章主要从以下几个方面进行介绍随机森林算法:
1.决策树算法。
2.集成学习思想。
3.随机森林算法的形成

【ML算法】随机森林算法的总结(一)之决策树_第1张图片
一、决策树算法

1.决策树是什么?

决策树是一种基本的分类和回归方法。其主要优点是模型具有可读性。决策树学习主要包括3个步骤:特征选择、决策树的生成、决策树的修剪。决策树学习常有的算法有ID3、C4.5、CART。
它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。
【ML算法】随机森林算法的总结(一)之决策树_第2张图片
其中决策树的叶结点表示数据集中的类label,内部结点表示选择划分的特征。

优点:
决策树算法中学习简单的决策规则建立决策树模型的过程非常容易理解,
决策树模型可以可视化,非常直观,应用范围广,可用于分类和回归,而且非常容易做多类别的分类,能够处理数值型和连续的样本特征

缺点:
很容易在训练数据中生成复杂的树结构,造成过拟合(overfitting)。剪枝可以缓解过拟合的负作用,常用方法是限制树的高度、叶子节点中的最少样本数量。
学习一棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪心算法建立的,这种算法不能保证建立全局最优的决策树。Random Forest 引入随机能缓解这个问题。

决策树学习算法通常是一个递归地选择最优 的特征,并根据该特征对训练数据进行分割,使得对各个数据集有一个最好的分类的过程。
决策树生成对应于模型的局部选择,决策树的则考虑全局最优。

2.特征选择
重要概念:熵、条件熵、信息增益。

特征选择在于选取对训练数据具有分类能力的特征,通常特征选择的准则是信息增益或者信息增益比。


在信息论和概率统计中,熵(entropy)是表示随机变量不确定性的度量。熵越大,随机变量的不确定性就越大。公式为:
在这里插入图片描述
其中Pi表示选择该分类的概率。

条件熵

条件熵H(Y|X):表示在己知随机变量X的条件下随机变量Y的不确定性,定义为X给定条件下Y的条件概率分布的熵对X的数学期望,公式为:
在这里插入图片描述
信息增益

特征A对训练数据集D的信息增益,g(D,A), 定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即 g(D,A)=H(D)-H(D|A).
信息增益(Information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
—般地,熵H(Y)与条件熵H(Y|X)之差称为互信息(mutual information).决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益大的特征具有更强的分类能力。

信息增益的算法

(1)计算数据集D的经验熵H(D)
在这里插入图片描述
(2)计算特征A对数据集D的经验条件熵H(D|A)
在这里插入图片描述
(3)计算信息增益: g(D,A)=H(D)-H(D|A).

信息增益比
在这里插入图片描述
3.决策树的生成

各种决策树生成算法的区别主要在挑选特征时所使用的准则不同。

构建决策树的原则:每次选出这个特征后,可以最大限度地减小分类的可能性。

ID3算法

算法思想:递归地构建决策树,从根节点开始,对所有特征计算信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归地调用以上方法构建决策树;知道所有特征的信息增益均很小或者没有特征可以选择为止。最后得到一个决策树。
  在算法中有三种情形导致递归返回:(C4.5算法一样)
(1)当前节点包含的样本全属于同一类别,无需划分。
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分。 (此时将所含样本最多的类别设置为该叶子节点类别)
(3)当前节点包含的样本集合为空,不能划分。(将其父节点中样本最多的类别设置为该叶子节点的类别)
算法构建决策树伪代码:
【ML算法】随机森林算法的总结(一)之决策树_第3张图片

C4.5算法
算法思想:实际上,信息增益准则对可取值数目较多的特征有所偏好,会造成过拟合。为了减少这种偏好可能带来的不利影响,C4.5算法中将采用信息增益比来进行特征的选择。信息增益比准则对可取值数目较少的属性有所偏好。

C4.5算法同ID3算法过程相似,仅在选择特征时,使用信息增益比作为特征选择准则。
算法构建决策树伪代码:
【ML算法】随机森林算法的总结(一)之决策树_第4张图片

CART(分类回归树)算法
CART算法(CART,Classification And Regression Tree)是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。

目标变量是类别的 — 分类树。
目标变量是连续的 — 回归树

CART算法由两部分组成:决策树生成、决策树剪枝

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

分类树的输出是类别,而回归树的输出是一个值。

分类决策树

基尼系数介绍
【ML算法】随机森林算法的总结(一)之决策树_第5张图片

构建分类决策树过程步骤:
【ML算法】随机森林算法的总结(一)之决策树_第6张图片

回归决策树
【ML算法】随机森林算法的总结(一)之决策树_第7张图片
【ML算法】随机森林算法的总结(一)之决策树_第8张图片
构建回归决策树过程步骤:

【ML算法】随机森林算法的总结(一)之决策树_第9张图片
【ML算法】随机森林算法的总结(一)之决策树_第10张图片
4.决策树的修剪
针对于决策树的最后一个问题:当训练数据量大、特征数量较多时构建的决策树可能很庞大,这样的决策树用来分类是否好?答案是否定的。决策树是依据训练集进行构建的,当决策树过于庞大时,可能对训练集依赖过多,也就是对训练数据过度拟合。从训练数据集上看,拟合效果很好,但对于测试数据集或者新的实例来说,并不一定能够准确预测出其结果。因此,对于决策树的构建还需要最后一步----即决策树的修剪。

【作用】
它是为了减少决策树过拟合,如果每个属性都被考虑,那决策树的叶节点所覆盖的训练样本基本都是“纯”的,这时候的决策树对训练集表现很好,但是对测试集的表现就会比较差。

决策树很容易发生过拟合,可以改善的方法有:
1、通过阈值控制终止条件,避免树形结构分支过细。
2、通过对已经形成的决策树进行剪枝来避免过拟合。
3、基于Bootstrap的思想建立随机森林。

决策树的修剪,也就是剪枝操作,主要分为两种:
  (1)预剪枝(Pre-Pruning)
  (2)后剪枝(Post-Pruning)

  接下来我们将详细地介绍这两种剪枝方法。

预剪枝(Pre-Pruning)

预剪枝是指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶节点。
我们使用例子进一步理解预剪枝的过程。
将本文开始的西瓜数据集表划分成两部分,一部分作为训练集用来构建决策树,一部分作为验证集用来进行决策树的剪枝。具体划分见下图:

【ML算法】随机森林算法的总结(一)之决策树_第11张图片
使用ID3算法进行决策树的构建,即使用信息增益进行特征的选择。首先选择特征“脐部”作为决策树根节点,如何判断该节点是否需要剪枝,需要对剪枝前后验证集精度进行比较。由“脐部”这个特征将产生三个分支“凹陷”、“稍凹”、“平坦”,并认定其分支结果(可采用多数表决法,当分类数量相当时,任选一类即可),如下图:

【ML算法】随机森林算法的总结(一)之决策树_第12张图片

查看验证集,若将“脐部”看做节点,并将其标记为“好瓜”,那么划分前的精度为:3/7=0.428。符合“脐部”=“凹陷”的样本有: 4,5,13,其中正样本(是好瓜)为 4,5,正样本个数为2,按照上图预测正确数为2;同理“脐部”=“稍凹”的样本中正样本个数为1,预测正确数为1;“脐部”=“平坦”的样本中负样本个数为2,预测正确个数为2。因此使用“脐部”这个特征进行划分,划分后的精度为: 5/7=0.714。由于预测后精度大于预测前精度,因此不对“脐部”进行剪枝,即将其作为划分点进行划分。

【ML算法】随机森林算法的总结(一)之决策树_第13张图片

同理我们“色泽”以及“根蒂”特征进行划分前后精度的计算。对于“色泽”,划分后的精度为 0.571,而划分前为 0.714 ,划分使得结果变差,因此不以该特征进行划分,即将该节点记为叶子节点并标记为“好瓜”;同理“根蒂”特征划分前后的精度都为 0.714 ,效果并未提升,因此也不将该特征进行划分,而是将其作为叶子节点并标记为“好瓜”。由此,决策树构建完毕。此时的决策树为只有一层的树。

可有由图中看出,该决策树有点过于简单,虽然降低的过拟合的风险,但是由于其基于“贪心”的本质禁止了其它分支的展开,给预剪枝决策树带来了欠拟合的风险。

后剪枝(Post-Pruning)

后剪枝是指先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策能力的提升,则将该子树替换成叶节点。
我们使用例子进一步理解后剪枝的过程。
同样适用上面数据中的划分数据集。针对已建立好的决策树,我们首先对“纹理”特征节点进行处理,判断其是否需要剪枝,见下图。

【ML算法】随机森林算法的总结(一)之决策树_第14张图片

首先,使用整个决策树对验证集进行预测,并将其预测结果与真实结果进行对比,可得到如下结果(预测结果与真实结果相同,标记为“正确”,否则标记为“不正确”):

{(4,正确),(5,不正确),(8,不正确),(9,不正确),(11,正确),(12,正确),(13,不正确)}

首先我们判断是否需要对“纹理”进行剪枝:剪枝前精确度由上结果可以得到为 3/7=0.429 ,剪枝后(即将该节点标记为“好瓜”),此时对于样本 ((8,正确)),其它样本结果不变,其精度提升到 4/7=0.571 ,因此对该节点进行剪枝。对节点5“色泽”,剪枝前精确度为 0.571 ,剪枝后仍旧为 0.571 ,对此我们可以不进行剪枝(但在实际情况下仍旧会需要剪枝);同理对“根蒂”、节点2“色泽”进行计算,所得结果见上图。由此得到后剪枝决策树。

后剪枝决策树通常比预剪枝决策树保留了更多的分支,一般情况下,后剪枝决策树欠拟合的风险很小,其泛化能力往往优于预剪枝预测数。但由于其是基于创建完决策树之后,再对决策树进行自底向上地剪枝判断,因此训练时间开销会比预剪枝或者不剪枝决策树要大。

微信扫码关注“AI与机器学习”,获得更多AI内容
【ML算法】随机森林算法的总结(一)之决策树_第15张图片

你可能感兴趣的:(机器学习算法)