文章主要从以下几个方面进行介绍随机森林算法:
决策树算法。
集成学习思想。
随机森林算法的形成
一、决策树算法
请查看
【ML算法】随机森林算法的总结(一)
二、集成学习思想
请查看
【ML算法】随机森林算法的总结(二)
三、随机森林算法的形成
随机森林属于集成学习(Ensemble Learning)中的bagging算法。在集成学习中,主要分为bagging算法和boosting算法。我们先看看这两种方法的特点和区别。
Bagging(套袋法)
bagging的算法过程如下:
从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)
Boosting(提升法)
boosting的算法过程如下:
对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)
Bagging,Boosting的主要区别
1)样本选择上:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
2)样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。
3)预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。
4)并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。
将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
Bagging + 决策树 = 随机森林
简单来说,随机森林就是Bagging+决策树的组合(此处一般使用CART树)。即由很多独立的决策树组成的一个森林,因为每棵树之间相互独立,故而在最终模型组合时,每棵树的权重相等,即通过投票的方式决定最终的分类结果。
随机森林算法主要过程:
1)样本集的选择。
假设原始样本集总共有N个样例,则每轮从原始样本集中通过Bootstraping(有放回抽样)的方式抽取N个样例,得到一个大小为N的训练集。在原始样本集的抽取过程中,可能有被重复抽取的样例,也可能有一次都没有被抽到的样例。
共进行k轮的抽取,则每轮抽取的训练集分别为T1,T2,…,Tk。
2)决策树的生成
假如特征空间共有D个特征,则在每一轮生成决策树的过程中,从D个特征中随机选择其中的d个特征(d
3)模型的组合
由于生成的k个决策树之间是相互独立的,每个决策树的重要性是相等的,因而在将它们进行组合时,无需考虑他们的权值,或者可以认为他们具有相同的权值。
对于分类问题,最终的分类结果使用所有的决策树投票来确定最终分类结果;对于回归问题,使用所有决策时输出的均值来作为最终的输出结果。
4)模型的验证
模型的验证需要验证集,而在此我们无需专门额外的获取验证集,只需要从原始样本集中选择没有被使用过的样例即可。
在从原始样本中选择训练集时,存在部分样例一次都没有被选中过,在进行特征选择时,也可能存在部分特征未被使用的情况,我们只需将这些未被使用的数据拿来验证最终的模型即可。
总结
随机森林主要有几个方面的特性:
1)有两个随机抽取过程:分别为从原始样本集中随机抽取训练集,和决策树的特征选择上随机抽取部分特征生成决策树。
2)各决策树之间的相互独立性。因为相互独立,故而在决策树的生成过程可以并行进行,大大提高了算法的时间效率。
▼
往期精彩回顾
▼