第七章:集成学习(利用AdaBoost元算法...)

---恢复内容开始---

  集成学习其实不能算一个算法,应该算是一种框架,集百家之长。集成算法具体有Bagging与Boosting两种大类。两者区别:

  1)Bagging是并行的,它就好比找男朋友,美女选择择偶对象的时候,会问几个闺蜜(几个算法)的建议,最后选择一个综合得分最高的一个作为男朋友。bagging中目前最流行的是随机森林;

      Boosting是串行的,它就好比追女友,3个帅哥追同一个美女,第1个帅哥失败->(传授经验:姓名、家庭情况) 第2个帅哥失败->(传授经验:兴趣爱好、性格特点) 第3个帅哥成功。boosting中目前比较流行的是AdaBoosting.

  2)Bagging是几个不同的分类器都决策后,对结果进行投票决定(票数多的),或者取平均等等。这里不同的分类器有两种方法产生,第一,用不同的算法,比如一个用决策树,一个用kNN;第二,相同的算法,比如都是决策树,但是训练集不同,也就是说每次从训练集中抽不同的部分给不同的分类器模型去训练。这样又有两种情况,一种是有放回的抽取,一种是无放回的抽取。一般用第二种方法。

    Boosting是几个分类器串行训练,Bagging中训练集的权重是相同的,但是Boosting中是不同的。第一个分类器训练后,将错误的训练集中错误的部分进行加大权重。依此类推,其实它就是不断改变将训练集分块(对错分块),改变权重。

  下面主要介绍随机森林与AdaBoosting算法。

  随机森林(random forest,RF)其具体原理与自写模块看这里。下面主要说一下用sklearn中的随机森林模块:

  还是与前几章一样用iris数据集分类举例,(ps:sklearn中不仅有随机森林分类模块RandomForestClassifier,也有回归RandomForestRegressor,调参参不多):

调试时发现,这里的参数n_estimators=150对结果影响很大很大,而且就算是相同的参数,这次运行结果准确率是100%,下一次说不定是95%。下面具体说一下RandomForestClassifier()中的参数。

详细参看这里

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/maxiaonong/p/10034155.html