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

    决策树算法历史:

    简单实例:

    Q1:如何对客户分类?

    Q2:如何根据分类的依据,对销售人员给出销售意见?

    已该种方式选取各节点产生树形图:(怎么选取节点会更优?)

    二、决策树算法框架

      1、决策树主函数

      各种决策树主函数都大同小异,本质上是一个递归函数。其主要有如下几个功能:

    • 1、输入需要分类的数据集合类别标签
    • 2、根据某种分类规则得到最优的划分特征,并创建特征的划分节点--计算最优特征子函数。
    • 3、按照该特征的每个取值划分数据集为若干部分--划分数据集子函数
    • 4、根据划分子函数的计算结果构建出新的节点,作为数生长出新的分支
    • 5、检验是否符合递归的终止条件
    • 6、将划分的新节点包含的数据集和类别标签作为输入,递归执行上述步骤

      2、计算最优特征子函数

      计算最优特征子函数是除主函数外最重要的函数,构建的决策树不同,一般是因为最优特征标准有差异,例如 ID3的最优特征选择标准是信息增益、C4.5是信息增益率、CART是节点方差的大小

      在算法逻辑上,一般选择最优特征要遍历整个数据集,评估每个特征,返回最优特征。

      3、划分数据集

      4、分类器

      决策树的分类器基石通过遍历整个决策树,找到测试集中叶子节点对应的类别标签

      5、信息熵测度

      一般在数据集中经常有一些定型的字符串数据,也就是标称数据,直接只用这些数据会使得算法缺乏泛化能力,在实际计算中需要定量化为数字,也就是离散化。

      通常一个信源发出时什么事件是不确定的,可以根据其出现的概率来度量。概率越大,发生的机会就越大,不确定性小;反之不确定就大。 # 单调递减性质,事件独立要可加

      不确定性函数 I 就称为事件的信息量,是事件U发生概率p的单调递减函数;两个独立事件所产生的不确定性等于各不确定性之和,即 I(p1,p2) = I(p1) + I(p2),

      这称为可加性,同时满足这两个条件的函数 I 是对数函数。

          I(U) = Log(1/p) = -Log(p)    # 满足单调递减可加

      在一个信源(数据集)中,要考虑所有信源可能情况的不确定性。假设信源有n中情况,对应发生的概率也有n种,且各事件独立,信源的平均不确定性为各事件不确定性的平均值

      ,可称为信息熵。

          H(U) = E[-Log(p_i)]

      在决策树中,信息熵可以用来度量包含不同特征(多列)的数据样本与类别(标签)的不确定性,即某个特征列向量的信息熵越大,说明该向量的不确定性程度越大,即混乱程度越大

      ,就应该优先从该向量着手进行划分。信息熵为决策树的划分提供了最重要的依据和标准。

      假设数据集S有s个样本,m 个标签类别,s_m对应某个标签类别数据集个数,

      某类标签的信息熵如下式:

        I(s_m) = -p_i * Log_2(p_i)   #  计算整个数据集的信息熵

      p_i是某类标签对应样本发生的概率,p_i = s_i / S     --  S属于样本总数

      然后计算每个特征列的信息熵:以上述数据为例,计算 “年龄” 的信息熵

      先将年龄分为三类,青年;中年;老年,计算出各类年龄段的 买或不买的数量,以青年年龄段为例,计算出青年买的数量 S(青年/买) ,S(青年/不买)

      P(青年/买) =  S(青年/买) / S(青年/总), P(青年/不买) =  S(青年/不买) / S(青年/总)

       青年对应的信息增益为:I(青年) =  --P(青年/买) * log2(P(青年/买))

      同样方法算出其他年龄段的信息熵, I(中年), I(老年),特征年龄的信息熵为各年龄段平均信息熵(信息熵的可加性), E(年龄) = (I(青年) + I(中年) + I(老年)) / 3

      然后计算出该特征的信息增益,他是确定决策树分支的划分依据,是决策树某个分支上整个数据集信息熵与当前节点信息熵的差值:

        Gain(A) =I(s1, s2..s_m) -- E(A)

      具有最高信息增益的特征可选做给定集合 S 的测试属性

      根据上述同样方法算出其他特征列的信息增益

      

  • 相关阅读:
    JAVA处理Clob大对象
    计院生活第二章 深入虎穴(上)
    我的2008
    Quartz入门到精通
    DOM4J使用教程
    JNI简介及实例
    《JavaScript凌厉开发 Ext详解与实践》3月5日开始上架销售
    计院生活第二章 深入虎穴(下)
    Access转Sql Server问题
    提高网站可用性的10个小技巧
  • 原文地址:https://www.cnblogs.com/a666/p/10050522.html
Copyright © 2011-2022 走看看