决策树算法

Posted yd2018

tags:

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

0. 机器学习中分类和预测算法的评估:
    - 准确率
    - 速度
    - 强壮性
    - 可规模性
    - 可解释性
    
1. 决策树(decision tree)
    决策树是一个类似于流程图的树结构:
        - 每个内部结点表示在一个属性上的测试
        - 每个分支代表一个属性输出
        - 每个树叶结点代表类或类分布
    树的最顶层是根结点
    
2. 构造决策树的基本算法
2.1 熵(entropy)的概念
    变量的不确定性越大,熵也就越大
  H(x) = -∑(P(x) * log(P(x)))
2.2 决策树归纳算法(ID3) 选择属性判断结点 信息获取量(信息增益)(Information Gain):Gain(A) = Info(D) - Info_A(D)      # A是特征(属性) 通过A来作为节点分类获取了多少信息

例子(怎么构造决策树):

技术分享图片

Info(D) = -(9/14) * log(9/14) - (5/14) * log(5/14) = 0.940 bits

Info_age(D) = (5/14) * (-(2/5) * log(2/5) - (3/5) * log(3/5))

      + (4/14) * (0)

      +(5/14) * (-(3/5)* log(3/5) - (2/5) * log(2/5))

      = 0.694 bits

以年龄为分类的信息获取量:

Gain(age) = Info(D) - Info_age(D) = 0.940 - 0.694 = 0.246 bits

同理:

Gain(income) = 0.029 bits, Gain(student) = 0.151 bits, Gain(credit_rating) = 0.048 bits

所以, 选择age作为第一个根结点.

接着:

技术分享图片

可以看到,当age = middle_aged 时,结果全为yes,故这个结点就不需要再往下分了.

对于另外两个结点,重复最初的步骤,选择合适的属性进行往下分

不断重复,一直到分完,或者到达一个限制

 

ID3算法总结:

1. 树以代表训练样本的单个结点开始

2. 如果样本都在同一个类,则该结点成为树叶,并用该类标号(比较少见)

3. 否则, ID3算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性. 该属性成为该结点的‘测试’或‘判定’属性.

4. 在这个例子中,所有的属性都是分类的,即离散值。若是连续属性必须离散化.

5. 对测试属性的每个已知的值,创建一个分支,并据此划分样本

6. ID3算法使用同样的过程,递归的形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代上考虑它.

7. 递归划分步骤仅当下列条件之一成立停止:

  (a) 给定结点的所有样本属于同一类

  (b) 没有剩余属性可以用来进一步划分样本。在此情况下,使用多数表决.

    这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。

其他算法:

  1. C4.5

  2. CART(Classification and Regression Trees)

  共同点:都是贪心算法,自上而下

  区别:属性选择度量方法不同:

    ID3:信息增益(Information Gain)

    C4.5:信息增益率(Gain Ratio)    -->    信息增益的熵 / 自身熵值

    CART:GINI系数(Gini index)

决策树剪枝:

  先剪枝

  后剪枝

决策树的优点:

  直观,便于理解,小规模数据集有效

决策树缺点:

  处理连续变量不好(选择的阈值对结果影响很大)

  类别较多时,错误增加的比较快

  可规模性一般

 

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

机器学习-------决策树算法

《全网最强》详解机器学习分类算法之决策树(附可视化和代码)

5.10 决策树与ID3算法

分类算法——决策树

Python机器学习算法之决策树算法

算法干货----决策树算法中的熵与信息增益