平台:windows10 64位
IDE:Pycharm
Python版本:Python 3.5
github代码:源代码my_DecisionTree.py
1 目录
决策树(decision tree)是一种常见的机器学习方法,其实在生活中我们已经用到了决策树相关的知识,比如说,女生相亲时的想法就是决策树的一种体现:
那么对于一般女生来说,首选的就是看对方年龄,根据年龄是否超过30来决定见不见南方,如果超过,不见,如果没有超过就继续判断,依次类推,这就是一个决策树。
那么对于上面的决策树来说,要解决的问题就是对当前男生的数据构建一颗决策树,用来对未来男生进行分类,即当要进行下一次相亲时,根据决策树来判断是否见面。
一般的,一颗决策树包含一个根节点、若干个内部节点和若干个叶节点,叶节点对应决策及结果,其他节点对应于一个属性的测试。可以很轻松的理解到,上图中年龄为根节点,长相、收入、公务员为内部节点,见或不见为叶节点。
2 基本算法
3 数据划分
要想建立一个决策树,首先需要建立一个根节点,对于以上的数据集来说就是先根据那个类别来划分,即‘outlook、temperature、humidity、windy’中的哪个类别作为根节点,这就需要一个量来作为度量,那就是信息增益,以信息增益来作为划分依据的成为ID3(Iterative Dichotomiser迭代二分器)算法,还有以增益率(gain ratio)来划分的称为C4.5算法,以基尼系数(Gini index)划分的成为CART决策树。
4 信息增益
4.1 信息熵
信息熵(information entropy)是用来度量信息源的不确定度。它的公式如下:
其中 pk p k 为数据集 D D 中的 类样本所占的比例, Ent(D) E n t ( D ) 越小,则 D D