美文网首页
[Stay Sharp]决策树基础

[Stay Sharp]决策树基础

作者: 三千雨点 | 来源:发表于2018-12-22 17:05 被阅读0次

    决策树概念

    决策树是最常用的机器学习算法之一,它能被用来处理分类和回归问题。
    它是一棵树,每个节点对应一个特征(属性),每一条边(分支)代表一个决策(规则),而每个叶子节点表示一个结果(类别或者连续的数值)

    它经常模仿人类的处理问题的思路,所以比较容易解读它处理数据的流程。

    以下是常见的银行贷款的流程,决策树就像这样,我们很容易看清楚它的处理流程。

    image.png

    常用方法

    • ID3
    • C4.5
    • CART

    ID3

    ID3算法是Ross Quinlan提出的,它是C4.5算法的前辈,常常被用于机器学习和NLP领域中。
    我们以经典的天气数据集(根据天气来判断要不要外出运动)为例。它有四个输入特征(outlook 天气 ,temp 温度,humidity 湿度 和 windy 风)输出为是否适合外出运动。


    image.png

    我们要构造一棵树,首先要构造一个root(根节点),我们知道树的每一个节点代表着一个特征,那么我们该如何选择这个特征呢?一旦我们找到了这个特征,我们就可以把这个特征作为根节点,然后使用同样的方法对每个分支进行处理,直到所有节点都不能再继续拆分(属于同一类别)。

    如何找到最佳特征?

    在ID3算法中,我们使用信息增益来找到最佳特征。
    在引入信息增益前,我们要首先提出信息理论中的一个术语:entropy(熵),它用来表示一个数据集的纯度。它的公式是

    H ( X ) = - \sum _ { i = 1 } ^ { n } p \left( x _ { i } \right) \log p \left( x _ { i } \right)
    数据集中共含有n类样本,p \left( x _ { i } \right)表示第i类样本占所有样本的比例。对于二分类数据集而言,如果所有数据都属于同一类,那么数据集的熵最小,为0.而如果所有数据一半属于一类,另一半属于另一类,那么数据集的熵最大,为1.
    所以熵越小,该类的数据越纯。据此,我们引入信息增益的概念,信息增益表示分类前和分类后的熵的差,所以如果信息增益越大,表明分类后的熵越小,分类的数据越纯,分类越准确。因此我们的ID3流程变成了:

    1. 计算数据集的熵
    2. 对于每一个特征:
         1. 计算按该特征分类后的每一类的熵
         2. 计算出按该特征分类后的各类的平均熵
         3. 计算当前特征的信息增益
    3. 选取具有最大增益比的特征
    4. 对每一个子类重复进行以上的步骤,直到生成最后的决策树。
    

    以天气数据集举例,我们首先计算整个数据集的熵:
    共计14个样本,其中5个输出为no,9个输出为yes,熵的计算公式为:
    H ( X ) = - \sum _ { i = 1 } ^ { n } p \left( x _ { i } \right) \log p \left( x _ { i } \right) = - \dfrac{9}{14}*\log(\dfrac{9}{14}) - \dfrac{5}{14}*\log(\dfrac{5}{14}) = 0.94
    然后,我们分别计算按照每一个特征进行分类后的信息增益。
    首先计算使用特征outlook分类后的信息增益,outlook有三条决策(sunny、overcast、rainy):

    每一条决策后的熵为:
    E(Outlook=sunny) = - \dfrac{2}{5}*\log(\dfrac{2}{5}) - \dfrac{3}{5}*\log(\dfrac{3}{5}) = 0.971
    E(Outlook=overcast) = - {1}*\log(1) - - {0}*\log(0) = 0
    E(Outlook=rainy) = - \dfrac{3}{5}*\log(\dfrac{3}{5}) - \dfrac{2}{5}*\log(\dfrac{2}{5}) = 0.971
    按照outlook分类后平均的熵为:
    I(Outlook) = \dfrac{5}{14} * 0.971 + \dfrac{4}{14} * 0 + \dfrac{5}{14} * 0.971 = 0.693
    信息增益为:
    Gain(Outlook=rainy) = H ( X ) -I(Outlook) = 0.94 - 0.693 = 0.247
    以此类推,我们求出使用每一个特征的信息增益(如下图),我们发现按照Outlook进行分类后的信息增益最大,于是我们选用Outlook作为我们的根节点。

    image.png

    再对Outlook分类后的数据进行以上操作,最终生成类决策树:


    image.png

    C4.5

    C4.5是 Ross Quinlan在它的ID3基础扩展出来的算法,它使用的特征选择方法是增益率。信息增益方法对可取值数据较多的特征有所偏好,信息增益率对可取值数据较少的特征有所偏好。C4.5首先选出信息增益高于平均水平的特征,然后再从其中找出信息增益率最高的特征。

    \operatorname { Gain } \operatorname { ratio } ( D , a ) = \frac { \operatorname { Gain } ( D , a ) } { \operatorname { IV } ( a ) }
    其中

    \mathrm { IV } ( a ) = - \sum _ { v = 1 } ^ { V } \frac { \left| D ^ { v } \right| } { | D | } \log _ { 2 } \frac { \left| D ^ { v } \right| } { | D | }

    CART

    CART算法使用基尼指数进行特征划分。

    \text { Gini index } ( D , a ) = \sum _ { v = 1 } ^ { V } \frac { \left| D ^ { v } \right| } { | D | } \operatorname { Gini } \left( D ^ { v } \right)
    其中

    \begin{aligned} \operatorname { Gini } ( D ) & = \sum _ { k = 1 } ^ { | \mathcal { Y } | } \sum _ { k ^ { \prime } \neq k } p _ { k } p _ { k ^ { \prime } } \\ & = 1 - \sum _ { k = 1 } ^ { | \mathcal { Y } | } p _ { k } ^ { 2 } \end{aligned}

    优点

    • 白盒操作,易解读
    • 不用特征归一化
    • 能处理离线和连续数据(回归和分类)

    不足

    • 如果是连续数据,树会变得非常庞大,影响解读
    • 容易过拟合数据,尤其是特征很多而样本很少的情况,可以通过剪枝等方法来改善它。
    • 小的改动会生成完全不同的决策树。可以通过bagging, boosting和random forests来改善。

    参考

    李航《统计学习方法》

    周志华《机器学习》

    https://medium.com/deep-math-machine-learning-ai/chapter-4-decision-trees-algorithms-b93975f7a1f1

    相关文章

      网友评论

          本文标题:[Stay Sharp]决策树基础

          本文链接:https://www.haomeiwen.com/subject/jqtwkqtx.html