手记

盒马唠机器学习之随机森林

作为新兴起的、高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景。我发现最近几年的国内外大赛,包括2013年百度校园电影推荐系统大赛、2014年阿里巴巴天池大数据竞赛以及Kaggle数据科学竞赛,参赛者对随机森林的使用占有相当高的比例。此外,据我的了解来看,一大部分成功进入答辩的队伍也都选择了Random Forest 或者 GBDT 算法。所以可以看出,Random Forest在准确率方面还是相当有优势的,而且大多数情况下效果远要比svm,log回归,knn等算法效果好。

        要学随机森林,首先先简单介绍一下集成学习方法。

集成学习(Ensemble Learning)

        在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来(也就是单个不行,群殴走起)。

        在集成学习中,主要分为bagging算法和boosting算法和Stacking算法。

Bagging算法(套袋法)

        Bagging算法:其实就是训练多个分类器取平均。


        典型代表:

                随机森林:随机--数据采样随机,特征选择随机。森林--很多个决策树并行放在一起。

        其过程如下:


        (1)从原始样本集中使用Bootstraping方法(有放回)随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)

        (2)对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)

        (3)对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)

Boosting算法(提升法)

        Boosting算法:从弱学习器开始加强,通过加权来进行训练。



        典型代表:

                AdaBoost:如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重。最终的结果会每个分类器根据自身的准确性来确定各自的权重,再合体。

        过程如下:

        (1)对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。

        (2)进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)

Stacking方法

      Stacking方法:是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。理论上,Stacking可以表示上面提到的两种Ensemble方法,只要我们采用合适的模型组合策略即可。但在实际中,我们通常使用logistic回归作为组合策略。

随机森林

        决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善结果,我们假设随机森林使用了m棵决策树,那么就需要随机选取一定数量的样本集并随机的选取一定数量的特征来训练每一棵树,如果用全样本去训练决策树显然是不可取的,全样本训练忽视了局部样本的规律,对于模型的泛化能力是有害的。产生n个随机样本的方法采用Bootstraping法,这是一种有放回的抽样方法。而最终结果采用Bagging的策略来获得,即多数投票机制来确定结果。

原文出处

0人推荐
随时随地看视频
慕课网APP