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

    1.      什么是决策树(Decision Tree)

    • 决策树是一种类似流程图的树形结构。每一个内部节点表示一个測试(查询),该节点的每一个分支表示该測试的一个结果。每一个叶节点表示一个类别。
    • 决策树是一种简单可是广泛使用的分类器。通过训练数据构建决策树,能够高效的对未知数据进行分类。

    2.      样例

    ID

    拥有房产
    (是/否)

    婚姻情况
    (单身,已婚,离婚)

    年收入
    (单位:千元)

    无法偿还债务
    (是/否)

    1

    单身

    125

    2

    已婚

    100

    3

    单身

    70

    4

    已婚

    120

    5

    离婚

    75

    6

    已婚

    60

    7

    离婚

    220

    8

    单身

    85

    9

    已婚

    75

    10

    单身

    90

    由上表的数据构造决策树例如以下:


    新用户:无房产,单身,年收入55K。那么依据上面的决策树。能够预測他无法偿还债务。

    3.      什么情况下适合使用决策树

    1)  使用场景:预測

    2)  决策树的变量

    • 数字型(Numeric)

                 整数或浮点数,如前面样例中的“年收入”。

    用“>=”。“>”,“<”或“<=”作为切割条件

    • 名称型(Nominal)

                 类似编程语言中的枚举类型,变量仅仅能从有限的选项中选取。比方前面样例中的“婚姻情况”,仅仅能是“单身”,“已婚”或“离婚”。使用“=”来切割

    4.      决策树的核心问题

    l  决策树的生长

    1)生长过程


    决策树的生长过程本质是对训练样本的重复分组过程。当对某组数据继续分组不再有意义时,决策树相应的分枝便不再生长;当全部数据组的继续分组均不再有意义时,决策树的生长过程结束。

    2)  决策树的分枝准则

    • 怎样从众多的输入变量中选择一个当前最佳的分组变量?
    • 怎样从分组变量的众多取值中找到一个最佳的切割点?

    l  决策树的剪枝

    1)  为什么要剪枝

    完整的决策树对训练样本特征的描写叙述“过于精确”,随着决策树生长和样本数量不断降低,所体现的数据特征越个性化,一般性就越差,因此完整的决策树并非一棵分类预測新数据对象的最佳树。比方极端情况下可能产生这种推理规则:“年收入大于50000元且年龄大于50岁且姓名是张三的人购买某种商品”。

    这条推理尽管精确可是失去了一般性,非常可能因其失去一般代表性而无法用于对新数据的分类预測(过度拟合)。

    2)  剪枝的方法

    Ø  预修剪

    • 事先指定决策树生长的最大深度
    • 为防止某个树节点上的样本数过少,事先指定一个最小样本量

    Ø  后修剪

    边修剪边检验(使用检验样本)的过程。在剪枝过程中,它不断计算当前决策子树对输出变量的预測精度或误差。能够事先指定一个同意的最大错误率。当剪枝达到某个深度时,当前的错误率高于同意的最大值。则停止剪枝,否则继续剪枝。

    决策树算法
    决策树算法 适用范围 改进的方式 改进的效果
    ID3 离散型属性数据     -- --
    C4.5 离散型
    连续型属性数据
    对连续型属性的离散化
    採用GainRatio作为切割变量准则
    使其适用范围更广泛
    避免ID3算法的过度拟合问题
    C5.0 处理大数据集 採用Boosting/BoostingTrees方式 提高模型准确率。计算速度比較快。占用内存资源较少

    1)  怎样从众多的输入变量中选择一个当前最佳的分组变量?

    2)  怎样从分组变量的众多取值中找到一个最佳的切割点

    试想:怎样评估切割点的好坏

    假设一个切割点能够将当前的所有节点分为两类。使得每一类都非常“纯”,也就是同一类的记录较多。那么就是一个好切割点。比方上面的样例,“拥有房产”。能够将记录分成了两类,“是”的节点所有都能够偿还债务,非常“纯”。“否”的节点。能够偿还贷款和无法偿还贷款的人都有,不是非常“纯”。

    扩展

    量化“纯度”

    1)不纯度

    • Gini不纯度:
    • 熵(Entropy):

    • 错误率(Error):

    上面三种计算纯度的公式均为值越大,表示越“不纯”,越小表示越“纯”。

    实践证明三种公式的选择对终于分类准确率的影响并不大,一般使用熵公式。

    样例:

    以C5.0算法为例,使用信息增益率(GainRatio)为标准确定最佳分组变量和切割点。


    在信息论中信息传递过程看作是一个由信源、信道和信宿组成的传递系统实现的,信源是信息的发送端,信宿是信息的接收端。在2中的样例。拥有房产(T1)。婚姻情况(T2)。年收入(T3)作为输入变量,无法偿还债务为输出变量。

    决策树将输出变量(无法偿还债务)看作信源发出的信息U,输入变量看作信宿接收到的一系列信息V。

                                                     (无法偿还债务:2  能够偿还债务:8)

    (拥有房产:3  无房产:7)

     

     

    (单身:4(3,1)   离婚:2(1,1)   已婚:4(4,0))

    由上面的计算可知,T1的信息增益率(0.133)大于T2的信息增益率(0.130)。因此应选择T1作为最佳分组变量。

     

    在婚姻情况中有3个属性,分别为单身。离婚,已婚。怎样选择切割点?

     

    由上面的计算可知。已婚的信息增益率(1.444)大于单身的信息增益率(0.795)和离婚的信息增益率(1.127)。因此应选择已婚作为最佳分组变量。

    3)  怎样剪枝

    C5.0採用后修剪方法从叶节点向上逐层剪枝。其关键是错误率即误差的预计及剪枝标准的设置。

    Ø  误差预计

    利用统计学置信区间的预计方法,直接在训练样本集中预计误差。

    Ø  剪枝标准

    在得到误差预计后,採用“降低-误差”法推断是否剪枝。即先计算待剪子树中叶节点的加权误差,然后与父节点的误差进行比較,假设大于父节点的误差则剪掉。

    5.      决策树的长处

    l  决策树模型可读性好。具有描写叙述性,有助于人工分析。

    l  效率高,决策树仅仅须要一次构建,重复使用,每一次预測的最大计算次数不超过决策树的深度。

    l  能够非常自然的嵌入专家的先验知识

    參考资料

    1. http://www.cnblogs.com/bourneli/archive/2013/03/15/2961568.html

    2. http://www.cnblogs.com/bourneli/archive/2012/11/17/2775405.html

    3. http://blog.csdn.net/soso_blog/article/details/5755457

    4. clementine数据挖掘方法及应用

  • 相关阅读:
    编译原理第一次作业
    【码制】关于原码,反码,补码的一些笔记和理解
    输出1到50以内的所有素数【C】
    方法和数组
    if条件判断和switch,for do while
    变量
    全选,删除,添加
    java基础
    二级联
    轮播图
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6812683.html
Copyright © 2011-2022 走看看