决策树

来源:互联网 发布:淘宝店铺显示未开店 编辑:程序博客网 时间:2024/05/21 18:33

信息论基础


设随机变量取有限个值,其概率分布为P(X=xi)=pi,i=1,2,...,n则随机变量X的熵的定义为

H(X)=i=1npilogpi
对数以2e为底时,熵的单位分别为比特(bit)或纳特(nat).由定义可知熵与X的取值无关,而与X的分布有关,所以熵记作H(p),即
H(p)=i=1npilogpi

条件熵
随机变量(X,Y)联合分布为P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m,在已知X的前提下Y的不确定性成为条件熵H(Y|X),定义为
给定X的条件下,Y的条件概率分布熵对X的数学期望
H(Y|X)=i=1npiH(Y|X=xi)
这里pi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据估计(如极大似然估计)得到时,对应的熵和条件熵分别是经验熵和经验条件熵。

信息增益
表示得知X的信息而使Y的信息的不确定性减少的程度。特征A对训练数据集D的信息增益g(D,A),定义集合D的经验熵与给定
特征A的条件下D的经验条件熵H(D|A)之差,即

g(D,A)=H(D)H(D|A)

GINI指数
主要是度量数据划分或训练数据集D的不纯度为主。GINI值越小,表明样本的纯净度越高(即该样本只属于同一类的概率越高)。

基本问题

  • 分裂准则
  • 误差分析
  • 如何防止过拟合,早停止,剪枝

分裂标准

使用纯度来作为分裂(split)准则,即训练方法,而不是一般的分类回归问题的最小均方误差、极大似然函数,其原因是:

误差分析(Measuring Error)

通过误差分析可以评估模型性能的好坏。常见的分类问题的误差分析方法有:误分率(misclassication rate),期望损失(expected loss), 归一化的极大似然函数(normalized negative log-likelihood), 也就是交叉熵( cross-entropy).
对于分类树的误差分析使用交叉熵,回归树使用军方误差。

过拟合

剪枝方法

三种算法

,根据不同的划分准则分为以ID3(及其改进版C4.5)和CART两种。

ID3算法

输入:训练数据集D,特征集A,阈值ϵ;
输出:决策树T.

  1. D中所有实例属于同一类Ck,则T为单节点树,并将类Ck作为该节点的类标记,返回T;
  2. A=,则T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;
  3. 否则,计算A中个特征对D的信息增益,选择信息增益最大的特征Ag;
  4. 如果T的信息增益小于阈值ϵ,则置T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;
  5. 否则,对A的每一可能值ai,依Ag=aiD分割为若干非空子集Di,将Di中实例个数最大的类作为类标记,构建子节点,由结点其子节点构成树T,并返回T;
  6. 对第i个子节点,以Di为训练集,以A{Ag}为特征集,递归地调用1~5步,得到子树Ti,返回Ti;

C4.5算法

ID3算法偏向选择取值较多的特征,如存在唯一标识属性ID,则ID3会选择将其作为分裂属性,但是这种划分没有意义,C4.5中使用增益比来惩罚这种属性,
首先定义分裂信息,表示为

split_infoA(D)=j=1v|Dj||D|log(|Dj||D|)
信息增益比定义为
gain_ratio(A)=gain(A,D)split_infoA(D)

C4.5用信息增益比作为分裂属性,算法的其他步骤与ID3类似,不再赘述。

CART

ID3算法和C4.5算法虽然可以从训练样本集中尽可能多地挖掘信息,但其生成的决策数分支、规模较大,CART算法的二分法可以简化决策树的规模,提高生成决策树的效率。
对于分类树,用基尼系数(Gini index)最小化准则,进行特征选择。对于回归树,用平方误差最小化准则进行特征选择。

比较

效率

决策树组合

该部分内容主要是将Bagging、Boosting这两种统计学习方法应用到多决策树的组合中,关于Bagging 、Boosting可参考我的博文Bagging、Bosting。

Bagged Tree

Random Forest

与Bagged tree不同的是每次对树的划分时,RF (Random Forest)是从M个特征中随机抽取P个作为依据,而Bagging方法是使用所有的M个特征。在Bagged trees中考虑所有的特征作为划分依据,这样可能造成它们选取的较强特征是相似的,那么这些树的相关性就比较高,不能很好地降低模型方差。Random Forest在此基础上进行了改进,每次划分时,随机抽取所有特征的一部分作为划分依据,这样得到的模型更具稳定性和可靠性。
软件
R 中的randomForest包,可用来进行Bagging和RandomForest实验。

Boosting Tree

提升方法实际是采用加法模型(基函数的线性组合)与前向分步算法,以决策树为弱学习器的提升方法为提升树。
正则化方法:限制决策树的数量。
软件
R 包gbm

boost.boston =gbm(medv~.,data=Boston [train ,], distribution="gaussian",n.trees =5000 , interaction.depth =4)

其中,distribution指明训练数据集的分布,”gaussian”表示误差函数为均方误差,”bernoulli”表示0-1逻辑回归,其误差函数为交叉熵,”adaboost” 表示0-1输出的AdaBoost指数误差函数。n.trees 表示采用的树的数量,控制了模型的复杂度,是一种正则化手段;interaction.depth 表示每棵树的深度,之所以用interaction这个词是指所选特征之间的交互作用,通过设置改变量限制了模型特征之间的交互阶。对于输入和输出之间只存在低阶交互的情景,可设置interaction.depth为1,2等这样较小的值,对于高阶交互情景需要设置较大的值。但通常我们是不知道实际输入和输出之间的关系的,所以需要通过模型选择技术(如交叉验证)来设置这些参数。

GBDT

梯度提升树(Gradient Boost Decision Tree,GBDT)是弱学习器为决策树的梯度提升(Gradient Boost)算法。
提升树利用加法模型和前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失时,每一步的优化较简单,但对于一般的损失函数,往往每一步的优化就不容易了。针对这一问题,提出梯度提升算法,利用最速下降法的近似方法。

参考文献

0 0