决策树方法小结

决策树

  决策树是常见且强大的分类器,简单地解释为,if-then判断规则组成的形如树状的预测模型。
  我在这里总结了几种常见决策树模型(不做过多原理解释,只总结方法),ID3(多叉树),C4.5(多叉树),C5.0(多叉树),CART(二叉树),CHAID(多叉树),RandomForest(二叉树群)。其生成树的思想大同小异,区别在于属性选择指标和树的形式。

基础知识

  几个基础概念需要了解,熵,信息增益,信息增益率,Gini指数等。
  
  物理意义 - - 描述了物质的混乱程度。
  数学定义 - - Entropy=iPilnPi
  其中, Pi 表示 y=i 的样本的比例(概率)。
  信息增益
  物理意义 - - 用于衡量属性F降低样本集合S混乱程度多少。
  数学定义 - -
   G(S,F)=Entropy(S)j|Sj||S|Entropy(Sj)
  其中, j 表示按属性 F 分的类别表示, |Sj| 表示属性 F=j 的样本, |Sj||S| 表示按照属性 F 中各类别的比例, Entropy(Sj) 表示属性 F=j 的样本的熵。
  信息增益率
  物理定义- - 将纯度作为分母考虑进来,计算混乱降低的程度。
  数学定义- - GainRatio(S,F)=Gain(S,F)Split(S,F)
     其中 Split(S,F)=j|Sj||S|ln|Sj||S|
  Gini指数
  物理意义 - - 表示一个随机选中的样本被分错的概率。
  数学定义 - - Gini(P)=Kj=1Pj(1Pj)=Kj=1(PjP2j)=1Kj=1P2j
  其中,类别越多,Gini指数越大,跟熵的概念有些相似。Gini=0表示类别完全一样。

决策树的关键

  生成树的关键在于节点属性选择及分裂值的标准,剪枝的关键在于衡量全局损失的代价函数。 ID3 用信息增益作为选择属性的评估指标, C4.5 用信息增益率, C5.0 用?, CART 用Gini指数, RandomForest 用Gini指数(CART)。

ID3介绍

   ID3 用信息增益作为选择属性的评估指标。其算法过程如下。

 
输入:X-数据;y-标签;
输出:决策树
过程:
1. 属性集Fea = {F1, F2, F3, ... Fn}。
计算属性集内所有属性对应的信息增益G(S, Fi)。
2. 选择信息增益最大值对应的属性,作为当前分裂节点属性Fopt。
按照Fopt属性的类别,划分子集(分叉)
剔除已经选择的属性,Fea = Fea - Fopt。
重复步骤1和2,直到属性集Fea为空。
3. 剪枝

  上述过程没有具体说明,如何迭代地进行。
   ID3 优缺点
  (1)便于理解,形象直观。
  (2)可以处理费数值型数据。
  (3)信息增益倾向于分类更多的属性,作为当前最优属性Fopt。
  (4)由第2步中,划分子集看出来,ID3不能处理连续值。
  (5)可伸缩性不够,无法处理大规模数据集。

C4.5介绍

  C4.5是ID3的改进算法。

 
输入:X-数据;y-标签;
输出:决策树
过程:
1. 离散化处理,将连续型的属性变量进行离散化处理,形成训练集
1.1 按照连续变量从大到小的顺序排序
1.2 假设有N个属性值,则计算两两之间的中间值,N-1个候选属性值分割点。
1.3 用信息增益率选择最佳属性。
缺失值处理,处理空缺的属性值策略。
1.4 策略一:丢弃该样本
1.5 策略二:赋值为该属性对应的均值
1.6 策略三:赋予其可能值的概率。(计算信息增益如何使用?)
2. 属性集Fea = {F1, F2, F3, … Fn}。
计算属性集内所有属性的信息增益率GainRatio(S, Fi)。
3. 选择信息增益率最大值对应的属性,作为当前分裂节点属性Fopt。
按照Fopt属性的类别,划分子集(分叉)
剔除已选的属性,Fea = Fea – Fopt。
重复步骤2和3,知道属性集Fea为空。
4. 剪枝。

  上述过程也不说明具体如何迭代。
   C4.5优缺点
  (1)继承了ID3的优点。
  (2)用信息增益率选择属性,克服了信息增益选择属性时,偏向于多分类属性的问题。
  (3)能够处理连续值,引入了离散化处理。
  (4)能够处理空缺值,引入了空缺值处理。
  (5)构造树的过程中,多次顺序扫描数据集并且排序,效率较低。
  (6)可伸缩性不强,无法处理大规模数据。
  C5.0是C4.5的改进算法,引入Boosting方法,提高效率,节省内存。

CART介绍

  Classification and Regression Tree(CART)是一种大样本的统计分析方法,样本量较小时,模型不稳定。

 
1. 连续值的处理
1.1 对取值进行升序排序。
1.2 取相邻两点的中点,作为可能的分裂点。
1.3 #计算GiniGain,选择最佳属性分裂点。
(修正GiniGain,则减去log2(N-1)/|D|,N是连续特征取值个数,D是训练数据数量)
缺失值的处理
2. 属性集Fea = {F1, F2, F3, … Fn}。
2.1 回归树-利用方差选择分支特征。
(计算组内方差最小,组间方差最大,使得左右分支的差异化最大。)
方差计算方法:数据集均值std,计算每个数据点与std的方差,然后平方求和。
组间方差:两组的均值,求方差。
2.2 分类树-利用GiniGain选择分支特征。
将所有二分情况下可能存在的GiniGain计算一遍,选择最小值对应的属性及分裂值,作为当前分裂属性Fopt和分裂点。
如果:左右分支上的Fopt的取值>=2,则Fopt保存,
否则:Fea = Fea – Fopt
重复2.1和2.2步骤
(终止条件,计算X2,X2很小时表示分类条件和类别是独立的,此时节点停止分裂。)
3. 剪枝。

  严格意义上,CART不是真的回归,其回归预测值是离散的。因为回归树返回的是一团数据的均值,而不是具体的、连续的预测值。
   CART优缺点
  (1)可以处理连续值、非数值数据
  (2)分类、回归同时实现。
  (3)二叉树结构简洁,避免了多分叉树的数据碎片偏多现象。
  (4)只能产生两个子节点;类别过多时,错误可能会增加。
  (5)无法处理大规模数据。

CHAID介绍

  CHAID从统计显著检验角度建树。chi-squared automatic interaction detection-卡方自动交互检测。

 
1. 属性变量的预处理。
1.1 如果是离散变量,则进行卡方检验;如果是连续变量,则进行F检验。
1.2 如果仅有一个或者两个分组,则不做合并处理。
1.3 离散变量,在其多个分类水平中找到对目标变量取值影响不显著(P-value > a-merge)的分类,并合并它们。连续变量,先按分位点分组,然后再合并具有同质性的组(P-value > a-merge)。若是还考虑合并的问题,则新近合并的组中如果包括三个以上的原始分组,根据P-value < a-split 拆分为两组。
2. 确定当前分裂变量和分裂值。
2.1 计算各属性变量于目标变量的卡方检验值和P-值。
2.2 选择P-值最小的变量(于目标变量联系最为紧密)作为当前的最佳分支变量,该变量的所有分组形成该分支下的子节点。
3. 判断停止条件,达到最大深度或者所有分支都符合P值条件。

   CHAID优缺点
  (1)目标变量可以定距或者定类,最适合于分类变量。
  (2)从统计显著性的角度确定分支变量和分割值。
  (3)建立在因果关系讨论中,依据目标变量实现对输入变量的多水平划分。
  (4)无法处理大规模的数据。
  (5)输入变量需要离散化操作。
  (6)连续变量,在缺省的情况下自动分为10段。

RandomForest

  随机森林的树用CART,引入了集成学习的思想。
  随机森林的树生成过程如下:

 
1. 在M个原始训练集中,采用有放回的方法随机抽样M次得到新的训练集,根据树的个数K,生成K个新训练样本集。
2. 每个节点的候选分裂属性集选择策略。
当属性较多时,随机采样L=log2(N+1)个属性,作为当前节点的候选分裂属性集。N是原始属性集的属性个数。
当属性较少时,采用随机选择+线性组合的方法生成候选属性。假设随机选择x个属性,用服从[-1, +1]均匀分布的随机权重加权求和,作为一个候选分裂属性,共这样生成L个候选分裂属性。
3. 按照CART的策略最大化生成每一棵树,不剪枝。

  随机森林方法是投票决策。
  out-of-bag error,步骤1中每次生成新训练集,都会有不被包括在原始训练集中的样本(互斥的部分样本),把所有新训练集的对应面样本,进行随机森林方法投票判断,得到的误差。(The study of error estimates for bagged classifiers in Breiman (1996), gives empirical evidence to show that the outof-bag estimate is as accurate as using a test set of the same size as the training set.)
   RandomForest优缺点
  (1)它能够处理很高维度(feature很多)的数据,并且不用做特征选择。
  (2)在训练过程中,能够检测到feature间的互相影响;在训练完后,它能够给出哪些feature比较重要。
  (3)在创建随机森林的时候,对generlization error使用的是无偏估计。
  (4)训练速度快,实现比较简单,不容易过拟合。
  (5)容易做成并行化方法。
  

小结

  只要是决策树,就要解决两个问题,当前节点的最优分裂属性选择,和分裂点的选择。根据不同的选择标准,分成了不同的决策树方法。(又有将决策树集成的想法,于是引入了随机森林算法)

你可能感兴趣的:(技术博客)