简介
决策树是与有监督学习中的常用方法。决策树的算法多见于分类问题中,即我们常说的分类树(Classification Tree);少数情况下,决策树也可以用于连续问题,即回归树(Regression Tree)。总体而言,决策树是基于树状结构来进行决策的,它模仿了人在面临决定时自然的处理方式,并将这种决策的过程用树的姿态展现出来。
一句话解释版本:
决策树是在模仿人的决策过程,构造树的指标有三个:信息增益、增益率、基尼系数与卡方值。
数据分析与挖掘体系位置
决策树是有监督学习中的一种模型。所以在数据分析与数据挖掘中的位置如下图所示。
决策树的理解
决策树(Decision Tree)是基于树状结构来模拟并完成决策问题。举一个最简单的二分类问题为例来理解:
假如,要决定“明天要不要出去玩?”这个问题时,通常我会进行一系列“子判断”:
- 首先,我要看“明天是不是双休日?”,如果“是”,则
- 第二,我要看“自己要不要加班?”,如果“是”,则
- 第三,我要看“女朋友愿不愿意跟我出去?”,如果是“OK。”,则
- 第三,我要看“明天天气怎么样?”,如果是“多云”,则
- 我得出最终决策:出去玩走起。
这个决策的过程可以这样显示:
在上面的整个决策过程中,每一个提出的问题都是对属性(Features)的一次测试,测试的结果可能会是下一个问题,或者是最终的决策。每个问题都是有顺序的进行的,其考虑范围是在上个测试结果的限定范围之内。就是说,我只有在确定了“加班 = 否”之后,才会考虑“女朋友意见 = ?”
决策树其实就是在模仿上面的过程。在决策树模型中,Y就是决策结果:出去/不出去;X就是是否双休日、是否加班、女朋友意见、天气情况。最终模型会输出一个与上图类似的结果,告诉我们如何进行决策。
一般来说,一个决策树包括如下部分:
- 根结点(1个):包含样本全集。
- 内部结点(N个):对应属性测试。
- 叶结点(N个):对应决策结果。对应上面的“出去玩”/“不去玩”。
从根结点到叶结点的路径是一个判定测试序列。一个完整的决策树,能够呈现一个决策事件中的全部情况,因此泛化能力强,处理未见示例的能力强。
决策树的算法
决策树的算法参考周志华的《机器学习》一书。
决策树算法的核心是:如何最合适的划分属性(Features)。由于决策树的过程是一步一步不断细化的,因此从根到叶的过程中所包含的样本越来越小。到了决策树的末端时,我们肯定希望结点中包含的样本尽可能的属于同一个类别。
我们把每个节点中包含样本属于一个类别的比率叫做:“纯度”(Purity)。如果一个节点中的样本都属于同一个类别,纯度就是100%。所以我们希望纯度是越高越好的。
那么,如何衡量样本集合的纯度呢?我们要用一个指标:“信息熵”(Information Entropy)。
信息增益与信息熵
信息熵(Information Entropy)
信息熵的功能:衡量样本纯度。
信息熵的公式: