原文链接:https://blog.csdn.net/qq_41020194/article/details/79942316
写在前面的话
上一篇博文讲过了决策树啦,正好给这一篇的随机森林做铺垫(讲真,我是想先讲随机森林的,无奈随机森林的基础是决策树,因此只能先决策树知识来一波)。至于我为啥这么稀罕随机森林呢,是因为从进科研室的时候起,我就对随机森林这个名字产生了特殊的兴趣,因为一听这个名字,你会不由得想到一片绿油油的森林。但是,它明明是个模型的嘛。内心很纠结,就小小的学习了下其中的原理,嘿,原理倒不难理解,但是功能却很强大。所以呀,要好好说说它。
决策树与随机森林
前面讲过决策树,而在随机森林这里不用过多的纠结决策树的原理,在这里只要把它想象成两种树好啦,一种是回归树,一种是分类树。
随机森林的建立
那随机森林是怎样建立的呢?它的随机性体现在什么地方呢?
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支----集成算法。
具体来说,首先看随机森林的建立过程:
1、首先用N来表示原始训练集样本的个数(即样本数量),M来表示变量的数目(变量的个数)
2、从N个样本中通过bootstrap有放回的随机抽取n个新的自主样本集,并由此形成n棵决策树,而每次未被抽到的样本组成了n个袋外数据。
3、在树的每个节点处从M个特征中随机挑选m(m<M)个特征,按照结点不纯度最小原则进行分支生长(结点不纯度属于决策树的部分)
4、随机森林中每棵树都为二叉树,其生成遵循自顶向下的递归原则。每棵树都会完整的生长而不会被剪枝。
5、根据生成的多个决策树分类器对需要进行预测的数据进行预测。根据每棵决策树的投票结果,如果是分类树的话,最后取票数最高的一个类别;如果是回归树的话,利用简单的平均得到最终结果。
小细节:每个袋外数据会对相应的树作预测,评估其误差(称为袋外误差);随机森林中的绝大多数树为Cart树
直接上个简单的图方便理解:
决策树的随机性
从随机森林建立过程中不难看出,它的随机性表现在两个方面:一个是样本抽取的随机,另一个是特征抽取的随机。这两点随机性正好提升了系统的多样性,从而提升分类性能。
随机森林优缺点
由于训练时树与树之间是相互独立的,可以并行实现,(与之相对的不能并行实现的一个算法为GBDT算法,可能在以后的博文中会做总结)。这样使得训练速度比较快。更重要的是它不容易过拟合,除非是在噪声过大的分类和回归问题中。
R中的随机森林
R中的随机森林常用到的包就是randomForest。这个包特别滴强大,它不仅能做随机森林模型,还能进行特征选择,就是里边的importance()函数。当然,这个函数选取的特征不一定就是好的,具体情况还得具体分析。目前特征选择比较专业的方法就是进行特征工程。
补充
分类树:主要将数据集分类到响应变量所对应的不同类别里,响应变量可能对应两个或者两个以上的类别。
回归树:适用于目标变量为连续型,如预测某人的月收入,可以建立回归树,当预测其月收入所属区间,如[1000,2000],[2000,3000]......
总结
有了前边决策树的铺垫,随机森林理解起来就简单多了。如果大家看完之后有什么补充或者疑问,欢迎评论,欢迎讨论。