决策树算法

决策树算法历史:

简单实例:

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 的测试属性

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

  

原文地址:https://www.cnblogs.com/a666/p/10050522.html