机器学习要点理解(四、随机森林)

一、随机森林的基本思想

Bagging思想,bootstrap aggregating,思想就是从总体样本当中随机取一部分样本进行训练,通过多次这样的结果,进行投票获取平均值作为结果输出,这就极大可能的避免了不好的样本数据,从而提高准确度。
随机森林采用Bagging思想,重复采样,生成多棵树。

二、随机森林生成规则

1、数据集为N,随机从数据集里采样N个(与数据集大小相同)训练样本,作为一棵树训练的数据集。
2、数据集特征为M,随机从M个特征中选取m个特征子集(m<M),每次树分列时从m个特征子集中选择最优。
3、每棵树都尽最大程度的生长,并且没有剪枝过程。
随机森林中的随机,指的就是这两个随机。
构建多棵这样的决策树,然后通过这样的决策树来投票。

三、分类效果的影响因素

  • 森林中两棵树的相关性,相关性越大,错误率越大。
  • 森林中每棵树的分类能力,每棵树的分类能力越强,整个森林的的错误率越低。
  • 减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围)

四、优缺点

优点很多,训练快,效果好,处理高维度特征数据等等。
缺点是

  • 被证明在某些噪音较大的分类或回归问题上会过拟合。
  • 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响。

五、随机森林如何处理缺省值

  • 首先,选择数据的中位数或者众数作为缺省值的估计值。
  • 然后,按照估计值跑一边随机森林,记录每一组数据在决策树中一步一步分类的路径,然后来判断哪组数据和缺失数据路径最相似。
  • 第三,引入一个相似度矩阵,来记录数据之间的相似度,比如有N组数据,相似度矩阵大小就是N*N,如果缺失值是类别变量,通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值。
  • 最后、迭代,得到稳定的估计值。

其实,该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测,先计算缺失特征与其他特征的相似度,再加权得到缺失值的估计,而随机森林中计算相似度的方法(数据在决策树中一步一步分类的路径)乃其独特之处。
在实际实现中,有两种方法:
1、(na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。
2、(rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次,这个补缺失值的思想和KNN有些类似。

六、OOB

袋外数据oob(out of bag),bagging方法中Bootstrap每次约有1/3的样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立,把这1/3的数据称为袋外数据oob(out of bag),它可以用于取代测试集误差估计方法。
计算方法如下:

  • 对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为O,用这O个袋外数据作为输入,带进之前已经生成的随机森林分类器,分类器会给出O个数据相应的分类
  • 因为这O条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进行比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小=X/O

这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值