机器学习之决策树

Posted hgt6688

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之决策树相关的知识,希望对你有一定的参考价值。

、决策树概述 

  前面我们讲的kNN算法,虽然可以完成很多分类任务,但它最大的缺点是无法给出数据的内在含义,而决策树的主要优势就在于数据形式非常容易理解。决策树算法能够读取数据集合,决策树的一个重要任务是为了数据所蕴含的知识信息,因此,决策树可以使用不熟悉的数据集合,并从中提取一系列规则,在这些机器根据数据集创建规则是,就是机器学习的过程。

  在构造决策树时,第一个需要解决的问题就是,如何确定出哪个特征在划分数据分类是起决定性作用,或者说使用哪个特征分类能实现最好的分类效果。这样,为了找到决定性的特征,划分川最好的结果,我们就需要评估每个特征。当找到最优特征后,依此特征,数据集就被划分为几个数据子集,这些数据自己会分布在该决策点的所有分支中。此时,如果某个分支下的数据属于同一类型,则该分支下的数据分类已经完成,无需进行下一步的数据集分类;如果分支下的数据子集内数据不属于同一类型,那么就要重复划分该数据集的过程,按照划分原始数据集相同的原则,确定出该数据子集中的最优特征,继续对数据子集进行分类,直到所有的特征已经遍历完成,或者所有叶结点分支下的数据具有相同的分类。

  划分数据集的大原则是:将无序的数据变得更加有序。在划分数据集前后信息发生的变化称为信息增益,如果我们知道如何计算信息增益,就可以计算每个特征值划分数据集获得的信息增益,而获取信息增益最高的特征就是最好的特征。

     那么如何计算信息增益呢?而提到信息增益我们又不得不提到一个概念"香农熵",或者简称熵。熵定义为信息的期望值。如果待分类的事物可能会出现多个结果x,则第i个结果xi发生的概率为p(xi),那么我们可以由此计算出xi的信息熵为l(xi)=p(xi)log(1/p(xi))=-p(xi)log(p(xi)),那么,对于所有可能出现的结果,事物所包含的信息希望值(信息熵)就为:H=-Σp(xi)log(p(xi)),i属于所有可能的结果。这样,假设利用数据集中某一特征A对数据集D(D的分类类别有n种)进行分类,而特征A取值有k种,那么此时,利用特征A对数据集进行分类的信息增益为:信息增益H(D,A)=原始数据集的信息熵H(D)-特征A对数据集进行划分后信息熵H(D/A),其中H(D/A)=∑|Aj|/|D|*H(Aj),j属于A的k种取值,|Aj|和|D|分别表示,特征A第j种取值的样本数占所有取值样本总数的比例,以及数据集的样本总数

  在知道了如何选取划分数据的最优特征后,我们就可以依据此来构建决策树了。

二、算法伪代码

训练样本集D={(x1,y1),(x2,y2)……(xn,yn)}

属性集A={a1,a2,……,an}

TreeGenerate(D,A):

      生成节点node

if D中样本全属于同一类别C:

      将node标记为C类叶节点

      return

end if

if 属性集A为空或者D的所有属性值均一样:

      将node标记为最多类

      return

end if

      从A中选取最佳划分属性a*

for a in a*:

      为node生成一个分支,令Dv表示D中在a*属性值为a的样本子集

      if Dv为空:

            continue;

      else:

            TreeGenerate(Dv,A\{a*})递归继续

      end if

end for

三、算法小结

  值得注意的是决策树算法可能或出现的过度匹配(过拟合)的问题,当决策树的复杂度较大时,很可能会造成过拟合问题。此时,我们可以通过裁剪决策树的办法,降低决策树的复杂度,提高决策树的泛化能力。比如,如果决策树的某一叶子结点只能增加很少的信息,那么我们就可将该节点删掉,将其并入到相邻的结点中去,这样,降低了决策树的复杂度,消除过拟合问题。

  本文是系列文,会完整记录自己学习《机器学习》这本书的心得体会,喜欢的同学可以敬请期待!

 

以上是关于机器学习之决策树的主要内容,如果未能解决你的问题,请参考以下文章

机器学习之监督学习-分类模型决策树的基本概念

机器学习之决策树

机器学习之决策树

机器学习之决策树

机器学习之决策树算法

python机器学习之决策树