应用机器学习(六):决策树

决策树

决策树( decision tree )是一个树状图。其中,树里的每一个节点代表着对某一个属性的检验。例如,一次掷币试验出现正面还是反面。每一个分支代表一个检验的结果,每一个叶子节点代表一个类标签,即,经过所有属性计算后的决策结果。这样,从树根到叶子的不同路径代表了不同的分类规则。目标变量取离散值的树模型称分类树;目标变量取连续值的决策树称回归树。举个例子,根据周六上午的天气状况决定是否适合打网球。


这里写图片描述

  • each node: 检验一个特定的属性;

  • each branch from a node: 选择属性的一个值;

  • each leaf node: 预测是否适合打网球。

决策树适用的问题

  • 实例由属性和互斥的属性值的集合表示。例如,属性 *Temperature, 值Hot, Mild, Cold.*

  • 目标函数取离散的输出值。例如,图1的分类树给每一个实例一个二值分类( yes or no ).

  • 训练集可能包括误差或缺失属性值。决策树学习方法对训练实例的分类误差和属性值误差是健壮的。

决策树学习

决策树学习使用带有类标签的训练实例构建一棵决策树。一棵决策树是一个类似流程图的结构,每一个内部节点代表一个对某属性的检验,每一个分支代表一个检验结果,每一个叶子节点则代表一个类标签。特别地,称树的最上层节点为根节点。常用的决策树学习算法有:

  • ID3 (Iterative Dichotomiser 3)
  • C4.5 ((successor of ID3)
  • CART (Classification and Regression Tree)

下面,介绍基本的 ID3 算法:

ID3 算法初始将数据集 S 作为根节点。在算法的每一次迭代,对任一未使用的属性,计算集 S 的熵 H(s) (也称信息增益 IG(S) )。然后,选择具有最小熵(或最大信息增益)值的属性。集 S 随后根据所选属性(例如,人的年龄小于50,在50到100之间,还是大于100)被拆分成若干个数据子集。算法继续在子集上递归,仅仅考虑之前从未被选择的属性。子集上的递归遇到下列情况之一则停止:

  • 子集中的每一个实例属于相同的类,那么节点变成了叶子节点,类标签为实例所属的类。

  • 不再有未使用过的属性可选,但实例仍然不属于相同的类,那么节点变成了叶子节点,类标签为子集中多数实例所属的类。

  • 子集中没有实例,这是因为在父集(上一层集)里没有实例对应所选属性的某个特定的值(例如,没有年龄大于100的人)。这时,也产生一个父集下的叶子节点,类标签为父集里多数实例所属的类。

纵观整个算法,在决策树构建过程中,每一个非终端节点代表一个选择的属性,数据依该属性的不同值被拆分,而终端节点代表分支最终的子集的类标签。

  • ID3 算法概要

    1. 计算每一个属性在数据集 S 上的熵;

    2. 根据最小熵(拆分后)的属性拆分集 S;

    3. 产生一个包含属性的决策树节点;

    4. 使用剩余的属性在子集上递归。

ID3 算法伪代码

ID3 (Examples, Target_Attribute, Attributes)
    Create a root node for the tree
    If all examples are positive, 
    Return the single-node tree Root, with label = +.
    If all examples are negative, 
    Return the single-node tree Root, with label = -.
    If number of predicting attributes is empty, 
    then Return the single node tree Root,
    with label = most common value of the target attribute
    in the examples.
    Otherwise Begin
        A ← The Attribute that best classifies examples.
        Decision Tree attribute for Root = A.
        For each possible value, vi, of A,
            Add a new tree branch below Root, corresponding 
            to the test A = vi.
            Let Examples(vi) be the subset of examples that 
            have the value vi for A
            If Examples(vi) is empty
                Then below this new branch add a leaf node 
                with label = most common target value 
                in the examples
            Else 
            below this new branch add the subtree ID3 
            (Examples(vi), Target_Attribute, 
            Attributes – {A})
    End
    Return Root

ID3 算法测度

  • 熵(Entropy)

H(S) 度量数据集 S 的不确定性总量,定义为

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值