决策树和随机森林

三种决策树的剪枝过程算法相同,区别仅是对于当前树的评价标准不同:

信息增益(ID3),信息增益率(C4.5),基尼指数(CART)

一个属性的信息增益越大,表明属性对样本的熵减少的能力越强。这个属性使得数据由不确定性变为确定性的能力越强。


决策树的评价:

对于决策树的某叶节点,假定该叶节点包含有样本数目为n,其中第k类的样本数目节点为Nk,k=1,2,3,4...,k


评价函数越小越好。

决策树的剪枝:



算法过程:

随机森林在bagging基础上做了修改

从样本中用Bootstrap采样选出n个样本

从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树

重复以上步骤m次,即建立了m颗CART决策树

这m颗CART形成随机森林,通过投票表决,决定数据属于哪一类。


影响随机森林分类性能的主要因素:

森林中单颗树的分类强度(Strength):每颗树的分类强度越大,则随机森林的分类性能越好。

森林中树之间的相关度(Correlation):树之间的相关度越大,则随机森林的分类能力越弱。


OOB估计:以样本为单位,

对每个样本,计算它作为OOB样本的树对它的分类情况(约1/3的树);然后以简单多数投票作为该样本的分类结果。

最后用误分个数占样本总数的比率作为随机森林的OOB误分率。




构建决策树的时候,可以让树进行完全生长,也可以通过参数控制树的深度或叶子节点的数量,通常完全生长的树会带来过拟合的问题。过拟合一般由数据中的噪声和离群点导致,一种解决过拟合的方法是进行剪枝,去除树中的一些杂乱的枝叶。


在实际应用中,一般可用随机森林来代替,随机森林在决策树的基础上,会有更好的表现,尤其是防止过拟合。


在组合算法中,一类是Bagging,一类是Boosting,随机 森林便是Bagging中的代表。


随机就是让每棵树不一样,如果都一样,组合后的效果不会有任何提升。假设每棵树不一样,单独预测错误率大概都是40%,但三颗树组合后的错误率就变成了35.2%(至少两一半以上同时犯错结果才会犯错)


从数据抽样开始,每棵树都随机地在原有数据的基础上进行有放回的抽样。假定训练数据有1万条,随机抽取8千条,因为是有放回的抽样,可能原数据中有500条被抽了两次,即最后的8000条中有500条是重复的数据。每棵树都进行独立的随机抽样,这样保证了每棵树学习到的数据侧重点都不一样,保证了树之间的独立性。


抽取了数据,就可以开始构建决策分支了,在每次决策分支时,也需要加入随机性。假设数据有20个特征,每次只随机取其中的几个来判断决策条件。假设取4个属性,从这4个特征中来决定当前的决策条件,即忽略其他它的特征。取特征的个数,通常不能太小,太小了使得单棵树的精度太低,太大了树之间的相关性会加强,独立性会减弱。通常取总特征数的平方根,或log2(特征数)+1


在节点进行分裂的时候,除了先随机取固定个特征,然后选择最好的分裂属性这种方式,还有一种方式,就是在最好的几个(依然可以指定sqrt与log2)分裂属性中随机选择一个来进行分裂。scikit-learn中实现了两种随机森林算法,一种是RandomForest,另外一种是ExtraTrees, ExtraTrees就是用这种方式。


总结起来:

随机有放回的抽取数据,数量可以和原数据相同,也可以略小。

随机选取N个特征,选择最好的属性进行分裂

在N个最好的分裂特征中,随机选择一个进行分裂。


随机性是为了保证各个算法模型之间的相互独立,从而提升组合后的精度。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值