第十章 决策树与随机森林
决策树属于经典的十大数据挖掘算法之一,是一种类似于流程图的树结构,其规则就是if……then……的思想,可以用于数值型因变量的预测和离散型因变量的分类。
节点字段的选择
根节点和中间节点的字段选择,如果选择合理的话,决策树的分类效果将非常好,即叶节点的输出会比较 “ 纯净 ”。
"纯净"度该如何度量?
答:“纯净”度的衡量指标,即信息增益、信息增益率和基尼指数。
信息增益
熵
原本是物理学中的一个定义,后来香农将其引申到了信息论领域,用来表示信息量的大小。
信息量越大(分类越不“纯净”),对应的熵值就越大,反之亦然。
例子: 某公司部门经理的两句话:“今年我们部门有一个名额可以出国访问”和“今年我们部门可以出国访问”。对于第一句话来说,员工之间就开始推测谁可能出国,想象空间比较多,因为每个员工都有出国的机会,对应的信息量很大,引申到熵,其熵值就会很大;而第二句话来说,大家就不会讨论谁去的问题,因为这件事是确定所有人都去,没有其他可能性,故对应的信息量就会很低,熵值也会很低。
决策树中的算法选择根节点或中间节点的字段时所使用的指标:
ID3算法 | 信息增益指标 |
C4.5算法 | 信息增益率指标 |
CART算法(也称分类回归树) | 基尼指数 |
信息熵的计算公式:
信息增益
决策树在生长过程中,从根节点到最后的叶节点,信息熵是下降的过程,每一步下降的量就称为信息增益。
信息增益的计算公式:GainA( D )= H( D ) - H( D|A )
由公式可知,对于已知的事件A来说,事件D的信息增益就是D的信息熵与A事件下D的条件熵之差,事件A对事件的影响越大,条件熵H( D|A )就会越小(在事件A的影响下,事件D被划分得越“纯净”),体现在信息增益上就是差值越大,进而说明事件D的信息熵下降得越多。所以,在根节点或中间节点的变量选择过程中,就是挑选出各自变量下因变量的信息增益最大的。
信息增益率
信息增益指标有一个非常明显的缺点,即信息增益会偏向于取值较多的字段。为了克服这个缺点,可以使用信息增益率。
结论:
如果用于分类的数据集中各离散型自变量的取值个数没有太大差异,那么信息增益指标与信息增益率指标在选择变量过程中并没有太大的差异,所以它们之间没有好坏之分,只是适用的数据集不一致。
基尼指数
C4.5算法和ID3算法一致,都只能针对离散型因变量进行分类。为了能够让决策树预测连续性的因变量,Breiman等人在1984年提出了CART算法,该算法也称为分类回归树,它使用的字段选择指标是基尼指数。
以上即为三种决策树节点变量的选择方法,其中ID3和C4.5都属于多分支的决策树,CART则是二分支的决策树,在树生长完成后,最终根据叶节点中的样本数据决定预测结果。对于离散型的分类问题而言,叶节点中哪一类样本量最多,则该叶节点就代表了哪一类,对于数值型的预测问题,则将叶节点中的样本均值作为该节点的预测值。
Python中的sklearn模块选择了一个较优的决策树算法,即CART算法,它既可以处理离散型的分类问题(分类决策树),也可解决连续型的预测问题(回归决策树)。这两种树分别对应DecisiionTreeClassifier类和DecisionTreeRegressor类,这两个类的语法和参数定义如下: