集成学习概述

集成算法

Ensemble learning

  • 目的:让机器学习效果更好,单个不行,群殴走起

  • Bagging:训练多个分类器去平均
    f ( x ) = 1 / M ∑ i = 1 M f m ( x ) f(x) = 1/M \sum_{i=1}^{M}{f_m(x)} f(x)=1/Mi=1Mfm(x)

  • Boosting:从弱学习器开始加强,通过加权来进行训练,加入一棵树,比原来强
    F m ( x ) = F m − 1 ( x ) + a r g m i n h ∑ i = 1 n L ( y i , F m − 1 ( x i ) + h ( x i ) ) F_m(x) = F_{m-1}(x)+argmin_h \sum_{i=1}^{n}L(y_i,F_{m-1}(x_i)+h(x_i)) Fm(x)=Fm1(x)+argminhi=1nL(yi,Fm1(xi)+h(xi))

  • Stacking:聚合多个分类或回归模型(可以分阶段来做)

Bagging

  • 全称:bootstrap aggregation (说白了就是并行训练一堆分类器)
  • 最典型的代表就是随机森林
  • 随机:数据采样随机,特征选择随机
  • 森林:很多个决策树并行放在一起

随机森林优势

  • 他能够处理很高维度的数据,并且可以不用做特征选择
  • 在训练完后,它能够给出哪些feature比较重要(feature importance
  • 容易做成并行化方法,速度比较块
  • 可以进行可视化展示,便于分析

一般都是选择树模型作为基学习器,理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了。

Boosting

  • 典型代表:AdaBoost,Xgboost
  • Adaboost会根据前一次的分类效果调整数据权重
  • 解释:如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重
  • 最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体

Stacking

  • 堆叠:很暴力,拿来一堆学习器直接上(各种分类器都来了)
  • 可以堆叠各种各样的分类器(KNN,SVM,RF)等
  • 分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练
  • 为了刷结果,不择手段!

堆叠在一起确实能使得准确率提升,但是速度是个问题,集成算法是竞赛与论文神器,当我们更加关注结果时可以多尝试!

你可能感兴趣的:(集成学习,机器学习,决策树)