随机森林相对于Adaboost或者是GBDT等集成学习算法来说,是比较简单易懂的,思想也很自然.要是上面列出的基础知识心里有数之后,就非常容易的理解随机森林了.
一.随机森林算法
先用比较简单的语言描述一下随机森林算法,注意和bagging思路的对比哦.
随机森林在bagging的基础上做了一些修改,大致的算法是:
1.从样本集中随机采样选择n个样本;
2.从所有属性中随机选择k个特征,选择最佳分割特征作为节点建立CART决策树;
3.重复上面两步m次,那么就建立了m棵决策树;
4.这m个CART形成随机森林,通过投票表决,决定数据属于哪一类.
非常非常简单的思路,看完之后应该对于随机森林有了一个感性的认识.这里再详细补充一些:
首先,你会看到,随机森林使用的基本分类器(弱分类器)是CART(要是熟悉CART的话,基本上随机森林是秒懂的).
同时,可以发现,相对于传统的CART,这里并没有选择全部的特征,而是通过随机选择特征的方式建立CART.
当一次性选择全部特征的时候,这时的CART和传统的CART并没有什么区别.
但是要是随机选择特征的数量小于所有特征的数量的时候,随机森林模型的泛化能力会提高.随机选择的特征数量越小,模型越健壮.模型的方差会减小.但是偏差会变大 所以在实践中常常通过交叉验证,选择一个合适的随机特征选择数量.
再次详细的总结一下随机森林算法:
输入样本

:,弱分类器迭代次数T
输出:为最终强分类器
对于
:
(1)对训练集进行第t次随机采样,共采集n次,得到包含n个样本的采样集
(2)用采样集
训练第t个弱学习器
如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。
如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
二.优缺点分析
优点:
1.由于采用了随机采样,训练出的模型的方差小,泛化能力强。同时特征也是随机选择,所以对于高维度数据依然能够处理.
2.思路和实现都比较简单.