《机器学习实战(基于scikit-learn和TensorFlow)》第七章内容学习心得

本章主要讲述了“集成学习”和“随机森林”两个方面。html

重点关注:bagging/pastingboostingstacking三个方法。git

首先,提出一个思想,若是想提高预测的准确率,一个很好的方法就是用集成的方法。让多种预测器尽量相互独立,使用不一样的算法进行训练。最后以预测器中的预测结果的多数做为最终结果或者将平均几率最高的结果做为最后的结果。github

还有没有其余的方法呢,有的。算法

  • Bagging/Pasting方法:每一个预测器使用的算法相同,可是在不一样的训练集随机子集上进行训练,采样时将样本放回就是bagging方法,采样时样本不放回就是pasting方法。下图就是一个pasting/bagging训练集采样和训练。

image

      当训练完成后,咱们的集成函数通常就采用统计的方法便可。显然,咱们能够得出这样的结论,就是每一个预测器单独的误差都高于在原始训练集上的误差,可是经过聚合集成,咱们将会下降误差与方差,得出更精准的答案。决策树通常采用上述方法进行训练。固然,随机森林也能够采用上述方法。函数

sklearn中有相关bagging与pasting的工具包,这里再也不作赘述,请自行查阅相关文档。提示:使用BaggingClassifier类进行调用。工具

  • Boosting方法:是指几个弱学习器合成一个强学习器的任意的集成方式。目前最流行的方法就是AdaBoost(自适应提高法)和梯度提高法。

     Adaboost方法,思想就是更多地关注前序拟合不足地训练实例。从而使得新地预测器不断地愈来愈专一于难缠的问题。能够发现,该方法是一种存在时序关系的方法,咱们必需要获得前者地训练的状况,而后对数据中对前者状态的分类器拟合很差的数据再次进行训练,而后循环往复。故此,能够得出,这个方法不能并行计算,在拓展方面,不如bagging、boosting。学习

相关推导,请看Scorpio.Lu博主的文章:http://www.javashuo.com/article/p-tkpgxxsp-bh.htmlui

     梯度提高法:该方法是逐步在集成中添加预测器,每一个都对其前序作出改正,让新的预测器对前一个的预测器的残差进行拟合。具体的推导,请见刘建平Pinard博主的文章:http://www.javashuo.com/article/p-coowgizi-dv.htmlspa

  • Stacking方法:训练一个模型执行聚合集成全部预测器的预测,而后以预测器的预测做为输入再进行最后的预测。训练混合器的经常使用方式就是使用留存集。首先,将训练集分为两个子集,第一个子集训练第一层的预测器。而后,用第一层的预测器在第二个子集上进行预测。而后将在第二个子集上预测的值做为输入特征,建立一个新的训练集,保留目标值。在新的训练集上训练混合器,让其学习根据第一层的预测来预测目标值。经过该方法,能够训练多种不一样的混合器。
相关文章
相关标签/搜索