zoukankan      html  css  js  c++  java
  • 决策树算法

    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)

    决策树剪枝:

      先剪枝

      后剪枝

    决策树的优点:

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

    决策树缺点:

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

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

      可规模性一般

  • 相关阅读:
    build tools
    文档系统总结
    各进制及其转换详解
    JQuery 函数执行顺序
    计算页面宽高的函数
    Linq中的多表左联,详细语句
    css设置滚动条颜色与样式以及如何去掉与隐藏滚动条
    基于JQUERY写的 LISTBOX 选择器
    js/jquery 实时监听输入框值变化的完美方案:oninput & onpropertychange
    JQuery select控件的相关操作
  • 原文地址:https://www.cnblogs.com/lpgit/p/9648296.html
Copyright © 2011-2022 走看看