欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld

技术交流QQ群:433250724,欢迎对算法、技术感兴趣的同学加入。

前面机器学习方法(四)决策树讲了经典的决策树算法,我们讲到决策树算法很容易过拟合,因为它是通过最佳策略来进行属性分裂的,这样往往容易在train data上效果好,但是在test data上效果不好。随机森林random forest算法,本质上是一种ensemble的方法,可以有效的降低过拟合,本文将具体讲解。

Background


Decision trees are a popular method for various machine learning tasks. Tree learning “comes closest to meeting the requirements for serving as an off-the-shelf procedure for data mining”, say Hastie et al.[1], because it is invariant under scaling and various other transformations of feature values, is robust to inclusion of irrelevant features, and produces inspectable models. However, they are seldom accurate


先讲一讲decision tree[2]的好处:(1)特征数据放缩不变性;(2)面对无关特征更鲁棒;(3)得到确定的model。

但是decision tree往往不够准确,因为很容易产生over-fitting:一颗很深的树往往有low bias, high variance;而随机森林Random Forest通过对对多个决策树进行平均,可以显著降低variance来减少过拟合。RF带来的问题是稍稍增加一点bias,以及模型的可解释性,但是获得的收益是显著提高了准确率。


bagging

bagging[4],也称为 bootstrap aggregating,是一种非常简单而通用的机器学习集成学习算法。RF需要用到bagging,但是其他的分类或者回归算法都可以用到bagging,以减少over-fitting(降低model的variance)。


Given a standard training set D of size n, bagging generates m new training sets D_i, each of size n′, by sampling from D uniformly and with replacement. This kind of sample is known as a bootstrap sample. The m models are fitted using the above m bootstrap samples and combined by averaging the output (for regression) or voting (for classification).


简单的来说,就是从原始训练数据集中,有放回的采样出若干个小集合,然后在每个小集合上train model,对所有的model output取平均(regression)或者投票(classification)。


bagging的每一个小集合中,不同的样本数量的期望满足这样一个性质[3]:

when drawing with replacement n′ values out of a set of n (different and equally likely), the expected number of unique draws is

n(1−e−n′/n).

回到random forest算法:给定一个有n个样本的训练集{X,Y},

for b=1,…,B:

1. 从X中有放回的采样n个样本,组成集合{Xb,Yb};

2. 在{Xb,Yb}上训练决策树(或者回归树);

end

训练完成后,取所有model的平均作为输出(或者用majority vote投票决定):

f^=1B∑b=1Bf^b(x′)

单个决策树模型很容易受到噪音数据的影响,而混合模型就不容易会。但是如果在同样的数据上train多棵树,也很容易得到强相关的树(或者是一样的树),那效果就不好了;上面的bootstrap sampling的方法就是让model看到不同的train data。

B是一个可调节的参数,一般来说选用几百或者几千棵树,或者通过cross-validation来选择最佳的B。另外,也可以通过观察out-of-bag error:在所有训练数据xi上的平均预测error(预测xi用的是些那没有用到xi来训练的trees。)同时观察train error和test error(out-of-bag error)会发现,在一定数量的tree之后,两种error会分开。


random subspace selection

在上面的tree bagging基础上,每一个model训练的时候对所选取的data split随机选取一部分特征子集(random subset of the features)来训练。这样做的目的也是为了让学到的tree不要太相似——如果有几个特征和output是强相关的,那么在很多tree里面,这些特征都会被挑选出来(train决策树的时候往往不会太深,这样就可能不会用到所有的feature。),或者在树的靠近根部,这样这些tree就很相似。

一般来说,在classification任务中,如有总共有p个features,那么在每一个split中选取p√个features;在regression任务中,推荐使用p/3(不小于5)个features。

以上就是random forest算法的内容,在决策树的基础上,做样本和特征的随机选择,是一种典型的集成算法。


Extensions

(1)ExtraTrees

进一步扩展RF算法,是一种叫extremely randomized trees,(ExtraTrees)的算法:在RF采取bagging和random subspace的基础上,进一步在每一棵树train决策树的时候,选取的split value采用随机生成。

原先决策树针对是连续数值的特征会计算局部split value,(一个特征可能可以产生多个split value,都计算一下,然后评估所有的特征中的哪一个split value最好,就以该特征的该split value分裂);但是现在,对每一个特征,在它的特征取值范围内,随机生成一个split value,再计算看选取哪一个特征来进行分裂(树多一层)。

(2)Relationship to nearest neighbors

RF和KNN算法在形式上有类似的地方。这两个算法都可以用下面的公式来表示:

在训练集{(xi,yi)}ni=1上, 预测x’的label:

y^=∑i=1nW(xi,x′)yi.

In k-NN, the weights are W(xi,x′)=1k if xi is one of the k points closest to x’, and zero otherwise.

In a tree, W(xi,x′)=1k′ if xi is one of the k’ points in the same leaf as x’, and zero otherwise.

而RF是对m棵树的平均,以单独的weight functions Wj

y^=1m∑j=1m∑i=1nWj(xi,x′)yi=∑i=1n⎛⎝1m∑j=1mWj(xi,x′)⎞⎠yi.

由此可见,RF整体也是一个近邻加权的方法( weighted neighborhood scheme)——The neighbors of x’ in this interpretation are the points x_i which fall in the same leaf as x’ in at least one tree of the forest.


References

[1] Hastie, Trevor; Tibshirani, Robert; Friedman, Jerome (2008). The Elements of Statistical Learning (2nd ed.).

[2] https://en.wikipedia.org/wiki/Random_forest

[3] Aslam, Javed A.; Popa, Raluca A.; and Rivest, Ronald L. (2007); On Estimating the Size and Confidence of a Statistical Audit.

[4] https://en.wikipedia.org/wiki/Bootstrap_aggregating

机器学习方法(六):随机森林Random Forest,bagging的更多相关文章

  1. sklearn_随机森林random forest原理_乳腺癌分类器建模(推荐AAA)

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  2. 机器学习(六)—随机森林Random Forest

    1.什么是随机采样? Bagging可以简单的理解为:放回抽样,多数表决(分类)或简单平均(回归): Bagging的弱学习器之间没有boosting那样的联系,不存在强依赖关系,基学习器之间属于并列 ...

  3. 随机森林random forest及python实现

    引言想通过随机森林来获取数据的主要特征 1.理论根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器之间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系 ...

  4. 【机器学习】随机森林(Random Forest)

    随机森林是一个最近比较火的算法 它有很多的优点: 在数据集上表现良好 在当前的很多数据集上,相对其他算法有着很大的优势 它能够处理很高维度(feature很多)的数据,并且不用做特征选择 在训练完后, ...

  5. 【机器学习】随机森林 Random Forest 得到模型后,评估参数重要性

    在得出random forest 模型后,评估参数重要性 importance() 示例如下 特征重要性评价标准 %IncMSE 是 increase in MSE.就是对每一个变量 比如 X1 随机 ...

  6. 第九篇:随机森林(Random Forest)

    前言 随机森林非常像<机器学习实践>里面提到过的那个AdaBoost算法,但区别在于它没有迭代,还有就是森林里的树长度不限制. 因为它是没有迭代过程的,不像AdaBoost那样需要迭代,不 ...

  7. 随机森林(Random Forest)

    决策树介绍:http://www.cnblogs.com/huangshiyu13/p/6126137.html 一些boosting的算法:http://www.cnblogs.com/huangs ...

  8. 随机森林——Random Forests

    [基础算法] Random Forests 2011 年 8 月 9 日 Random Forest(s),随机森林,又叫Random Trees[2][3],是一种由多棵决策树组合而成的联合预测模型 ...

  9. 04-10 Bagging和随机森林

    目录 Bagging算法和随机森林 一.Bagging算法和随机森林学习目标 二.Bagging算法原理回顾 三.Bagging算法流程 3.1 输入 3.2 输出 3.3 流程 四.随机森林详解 4 ...

随机推荐

  1. HDOJ.2072 单词数(map)

    单词数 点我挑战题目 点我一起学习STL-MAP 题意分析 给出一行单词,判断这行有不同种的单词多少个,用map可以轻松解决. 代码总览 /* Title:HDOJ.2072 Author:pengw ...

  2. Cydia Substrate based DexDumper's weakness

    得益于Cydia Substrate框架,HOOK Native函数变得简单,也给脱壳带来方便. 像ijiami免费版,360,classes.dex被加密到so文件并运行时释放到内存,因此针对相关函 ...

  3. 删除空格-sed

    如下,我需要提取出‘wan’这个字符串.可以发现在‘wan’的前后是有空格,需要将其删除. # lxc list # lxc list | grep lxdbr0 | awk -F "|&q ...

  4. swift的UIlabel

    let label = UILabel(frame:CGRect(x:,y:,width:,height:)); label.text="i am a am a label am a lab ...

  5. [solr]solr的安装

    solr是什么? 翻译: SolrTM is the popular, blazing fast open source enterprise search platform from the Apa ...

  6. 【题解】互不侵犯 SCOI 2005 BZOJ 1087 插头dp

    以前没学插头dp的时候觉得这题贼难,根本不会做,学了才发现原来是一裸题. 用二进制表示以前的格子的状态,0表示没放国王,1表示放了国王. 假设当前位置为(x,y),需要记录的是(x-1,y-1)至(x ...

  7. HDU1540 区间合并

    Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  8. mac os x之解决npm安装包失败,或者nodejs工程缺少依赖

    在国内做开发,由于各种各样的原因,导致网络总是那么不好,对于我们前端开发者,在使用npm的时候很可能因为网络问题导致包安装失败,然后我们又匆匆启动项目,导致缺少依赖等各种问题,下面将会介绍一个淘宝的n ...

  9. swiper 、css3制作移动端网站,折叠导航

    swiper .css3制作移动端网站,折叠导航 前几天公司要更新改版移动端的官网,由于网站本身没有多少内容,所以设计师就做成了整屏滑动的样子,起初我并没有看设计稿就一口答应了,拿到手后发现了几个问题 ...

  10. 数学:拓展BSGS

    当C不是素数的时候,之前介绍的BSGS就行不通了,需要用到拓展BSGS算法 方法转自https://blog.csdn.net/zzkksunboy/article/details/73162229 ...