决策树
来源:互联网 发布:淘宝店铺显示未开店 编辑:程序博客网 时间:2024/05/21 18:33
信息论基础
熵
设随机变量取有限个值,其概率分布为
条件熵
随机变量
给定
当熵和条件熵中的概率由数据估计(如极大似然估计)得到时,对应的熵和条件熵分别是经验熵和经验条件熵。
信息增益
表示得知
特征
GINI指数
主要是度量数据划分或训练数据集D的不纯度为主。GINI值越小,表明样本的纯净度越高(即该样本只属于同一类的概率越高)。
基本问题
- 分裂准则
- 误差分析
- 如何防止过拟合,早停止,剪枝
分裂标准
使用纯度来作为分裂(split)准则,即训练方法,而不是一般的分类回归问题的最小均方误差、极大似然函数,其原因是:
误差分析(Measuring Error)
通过误差分析可以评估模型性能的好坏。常见的分类问题的误差分析方法有:误分率(misclassication rate),期望损失(expected loss), 归一化的极大似然函数(normalized negative log-likelihood), 也就是交叉熵( cross-entropy).
对于分类树的误差分析使用交叉熵,回归树使用军方误差。
过拟合
剪枝方法
三种算法
ID3算法
输入:训练数据集
输出:决策树
- 若
D 中所有实例属于同一类Ck ,则T 为单节点树,并将类Ck 作为该节点的类标记,返回T ; - 若
A=∅ ,则T 为单节点树,并将D 中实例数最大的类Ck 作为该节点的类标记,返回T ; - 否则,计算
A 中个特征对D 的信息增益,选择信息增益最大的特征Ag ; - 如果
T 的信息增益小于阈值ϵ ,则置T 为单节点树,并将D 中实例数最大的类Ck 作为该节点的类标记,返回T ; - 否则,对
A 的每一可能值ai ,依Ag=ai 将D 分割为若干非空子集Di ,将Di 中实例个数最大的类作为类标记,构建子节点,由结点其子节点构成树T ,并返回T ; - 对第
i 个子节点,以Di 为训练集,以A−{Ag} 为特征集,递归地调用1~5步,得到子树Ti ,返回Ti ;
C4.5算法
ID3算法偏向选择取值较多的特征,如存在唯一标识属性ID,则ID3会选择将其作为分裂属性,但是这种划分没有意义,C4.5中使用增益比来惩罚这种属性,
首先定义分裂信息,表示为
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)算法。
提升树利用加法模型和前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失时,每一步的优化较简单,但对于一般的损失函数,往往每一步的优化就不容易了。针对这一问题,提出梯度提升算法,利用最速下降法的近似方法。
参考文献
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- Cocos2d-x笔记记忆整理Day6-绘图原理及优化
- Codeforces 652 B. z-sort
- 批次查找原理
- Android学习笔记--监听按钮的点击事件
- 抽象类与 接口
- 决策树
- MotionEvent中getX()和getRawX()的区别
- find 命令查找文件时忽略某些目录
- String、StringBuffer和StringBuilder使用和区别
- 【USACO题库】2.4.3 Cow Tours牛的旅行
- 提高情商的方法
- 1006 最长公共子序列Lcs
- 转载http://www.yinwang.org/blog-cn/2013/03/07/linux-windows-mac
- linux源码Makefile的详细分析