集成算法(随机森林)【知识整理】

集成算法·随机森林的原理介绍(分析基础)

综述

整理一些关于数据分析的知识:本章为集成算法(随机森林)的原理介绍,具体的实现代码在下一章的titanic获救数据分析中具体讲述。

Ensemble Learning

  • 目的:让机器学习的效果更好。例如:单个决策树模型预测的准确性不太高,如果我们同时采用50棵决策树时可能达到的效果就比较好了。
  • 典型的两个模型:
    1、Bagging:训练多个分类器取平均值f(x)=1Mm=1Mfm(x) f(x)=\frac{1}{M}\sum_{m= 1}^{M}f_m(x)f(x)=M1​m=1∑M​fm​(x)
    2、Boosting:从弱学习器开始加强,通过加权来进行训练Fm(x)=Fm1(x)+argminhi=1nL(Fm1(xi)+h(xi)) F_m(x)=F_{m-1}(x)+argmin_h\sum_{i = 1}^{n}L(F_{m-1}(x_i)+h(x_i))Fm​(x)=Fm−1​(x)+argminh​i=1∑n​L(Fm−1​(xi​)+h(xi​))(加入一棵树后,效果上升)
    3、Stacking:聚合多个分类或回归模型(简单来说就是用很多个预测模型对数据进行预测,再将所有的预测值与实际值做线性回归,得到各个预测模型的权重,最后使用整个预测系统进行预测的方式)

Bagging模型

  • 全称:bootstrap aggregation (简单说就是并行的训练一堆分类器),最典型的代表就是随机森林
  • 随机处理:为了使得每次分类器得到的结果都不一样,我们通常采用随机选取60%-80%的样本和一定数据的特征,作为一个分类器的分类输入。注意:同一个模型中样本选取比例相同,特征值选取的数量相同
  • 森林:就是将多个分类器(决策树)并行放在一起,注意:并是树的数量越多越好有时候当数量达到一定值时,效果可能很难提升,甚至会下降
    集成算法(随机森林)【知识整理】

Random Forest

  • 构造树模型:由于二重随机性,使得每次树基本上都不会一样,最终的结果也会有区别
    集成算法(随机森林)【知识整理】
  • 树模型:每个树模型中我们都进行随机选取输入,是保证泛化能力,如果每棵树都一样就没有实际意义了。
  • 模型优势:
    1、它能处理很高纬度的数据,并且不用做特征选择(也可以做)
    2、在训练完后,它能够给出重要性较高的feature
    3、容易做成并行化方法,速度比较快
    4、可以进行可视化操作(但是当树过于庞大时不建议)
  • 拓展部分(随机森林如何判断feature重要性)
    现有AAA,BBB,CCC,DDD这4个特征这时候我们做随机森林的模型:A+B+C+DE1A+B+C+D\rightarrow E_1A+B+C+D→E1​
    当我们需要判断AAA特征的重要性时,我们可以将AAA中的数据用噪音数据代替掉,我们用AA'A′表示,在应用模型A+B+C+DE2A'+B+C+D\rightarrow E_2A′+B+C+D→E2​
    此时我们就得到了对于特征AAA的两个结果值,如果这两个结果值得偏差很小,那我们认为AAA对回归的作用是微乎其微的;反之,AAA有具体的作用。

KKN

该方法不太适合,使用这种方法很难去随机让模型的泛化能力变强。(具体介绍之后补充)

Boosting模型

该模型典型代表有Adaboost,Xgboost后者在以后哦的数据分析中具体说明。

Adaboost

Adaboost会根据前一次的分类效果调整数据的权重

  • 具体实现方式:如果一个数据在这次分错了,那么在下一次我就会给它更大的权重
  • 最终结果:每个分类器根据自身的准确性来确定各种的权重,再结合
  • 实例:
0 1 2 3 4
0.2 0.2 0.2 0.2 0.2

开始我们给这些数据的权重是相同的,当进行预测后:

0 1 2 3 4
0.2 0.2 0.2 0.2 0.2
×

发现 1 数据出错了,此时我们再调成权重:

0 1 2 3 4
0.1 0.6 0.1 0.1 0.1

大致上是这样一个思想。然后每个分类器都会有优劣,好的分类器权重越大,差的越小。

Stacking模型

  • 堆叠思想:简单粗暴,直接用很多个回归模型套数据,分类器可以多种多样(KNN,SVM,RF等等)
  • 分阶段:第一阶段每个模型得出各自的结果,第二阶段将用前一阶段结果进行训练得出模型。
    大致思想:
  • 第一阶段:单独预测
model 1 2 3 4
RF 1 0 1 0
LR 1 0 1 0
SVM 1 1 0 0
Xgboost 0 0 1 0

第二阶段:结果训练
(2)(1010101011000010)LR(1010) \left( \begin{matrix} 1 & 0 & 1& 0 \\ 1 & 0 & 1& 0 \\ 1 & 1 & 0& 0 \\ 0 & 0 & 1& 0 \end{matrix} \right ) \tag{2} \xrightarrow{LR} \left( \begin{matrix} 1 & 0 & 1& 0 \end{matrix} \right ) ⎝⎜⎜⎛​1110​0010​1101​0000​⎠⎟⎟⎞​LR​(1​0​1​0​)(2)

小结

如果数据分析时没有太好的方法做回归,推荐先使用随机森林看看效果。此外,集成算法看着比较高级,适合数学建模使用。具体的实现方式,在titanic分析中展示。

上一篇:适配器模式与外观模式


下一篇:如何在网页上添加一个微信关注链接