Ensemble Learning是机器学习里最常见的建模方法,RandomForest 和 GBDT 采用了Ensemble Learning模式,只是具体方法不同。

下面简单翻译下一 https://www.analyticsvidhya.com/blog/2015/09/questions-ensemble-modeling/ 这篇文章,再来理解一下Ensemble Learning模式。

与Ensemble Learning相关的常见问题

1、什么是Ensemble Learning?

2、什么是bagging, boosting, stacking?

3、同一个ML算法怎么做集成(ensemble)?

4、不同的模型如何确定权重?

5、ensemble模型有什么优势?

下面一个一个来回答。

1、什么是Ensemble Learning?

文中举了一个垃圾邮件检测的例子,简单来说就是,仅凭单个规则很难准确识别垃圾邮件,但是使用多条规则会提高识别的准确率。这个例子是为了说明,ensemble learning是一个“多合一”的方法。“多”指的是多个个体模型(individual models),注意,并非是多个独立模型;“合一”指的是多个模型共同形成一个识别/回归结果。Ensemble的一般特点是,多个模型间的相关性越低,合成之后的识别/回归效果越好。

具体的合成方法有多种,其中最典型的ensemble算法是随机森林(Random Forest)。引用文中的话是:

It (Random Forest)performs better compared to individual CART model by classifying a new object where each tree gives “votes” for that class and the forest chooses the classification having the most votes (over all the trees in the forest). In case of regression, it takes the average of outputs of different trees.

2、什么是bagging, boosting, stacking?

Bagging是对样本进行采样,构造出若干个新数据集,然后对应训练出若干个模型,再把这些模型合而为一,得到输出结果。其本质是降低了模型的方差(Variance)。

Boosting是一种模型迭代方法,初始化时,有一个简单的模型、各样本权重相等,由此得到识别结果,根据识别结果调整样本权重,判错的样本权重变大,据此得到新的模型,把新模型迭代到老模型上,再得到识别结果,如此循环迭代下去,最终若干个模型叠加在一起,得到最终的输出模型。

Boosting一般精确率比Bagging更高,但是容易过拟合(over-fit)。

常见的两种Boosting算法是 AdaBoost 和 Gradient Boosting。

[原文中的图没看懂,就不附图了]

Stacking就是简单的模型合成,先从原数据中训练得到若干个模型,然后用一个函数把若干个模型合成,输出最终的识别/回归结果。这里并没有介绍如何做合成,日后遇到具体案例再来细聊。

3、同一个ML算法怎么做集成(ensemble)?

可以把相同的模型集成起来,但是这样做的效果通常不会太好,更提倡的做法是把不同类型的模型集成起来,比如 把Random Forest , KNN 和 Naive Beyes集成起来,模型之间越是不同,集成后的效果往往越好。

文中举了个反直觉的例子,三个模型(A, B, C),识别的精确率分别是85%,80%和50%,A和B相关性很强,C和A, B的相关性很低,此时把A和B做集成是错误的,应该把A和C或者B和C做集成。

4、不同的模型如何确定权重?

不用动脑子的权重设置方法是等权重,动动脑子的方法有以下几个:

1. 计算多个base model的collinearity,基于得到的collinearity矩阵做model筛选,然后根据筛选出的model的cross validation score来确定model 的weight。   [这段话没有真正理解,需要实践来验证]

2. 利用单独的算法来确定权重,文中推荐了一篇文章 Finding Optimal Weights of Ensemble Learner using Neural Network 。

3. 可以借鉴其他算法,例如  Forward Selection of learners  Selection with Replacement  Bagging of ensemble methods 。

还可以到Kaggle上查找优秀的解决方案,学习那些方案中的ensemble方法。

5、ensemble模型有什么优势?

ensemble的优势在于两点:一是判别的精确率更高,二是模型更稳定,换一种说法是,ensemble可以减小偏差,减小方差,最终减小模型的泛化误差。

后记:ensemble learning方法本身不难理解,难在如何应用,待后续工作中有了应用案例再来写续篇。

Ensemble Learning的更多相关文章

  1. 7. ensemble learning & AdaBoost

    1. ensemble learning 集成学习 集成学习是通过构建并结合多个学习器来完成学习任务,如下图: 集成学习通过将多个学习学习器进行结合,常可以获得比单一学习器更优秀的泛化性能 从理论上来 ...

  2. 【软件分析与挖掘】Multiple kernel ensemble learning for software defect prediction

    摘要: 利用软件中的历史缺陷数据来建立分类器,进行软件缺陷的检测. 多核学习(Multiple kernel learning):把历史缺陷数据映射到高维特征空间,使得数据能够更好地表达: 集成学习( ...

  3. Ensemble Learning 之 Bagging 与 Random Forest

    Bagging 全称是 Boostrap Aggregation,是除 Boosting 之外另一种集成学习的方式,之前在已经介绍过关与 Ensemble Learning 的内容与评价标准,其中“多 ...

  4. Ensemble Learning: Bootstrap aggregating (Bagging) & Boosting & Stacked generalization (Stacking)

    Booststrap aggregating (有些地方译作:引导聚集),也就是通常为大家所熟知的bagging.在维基上被定义为一种提升机器学习算法稳定性和准确性的元算法,常用于统计分类和回归中. ...

  5. 第七章——集成学习和随机森林(Ensemble Learning and Random Forests)

    俗话说,三个臭皮匠顶个诸葛亮.类似的,如果集成一系列分类器的预测结果,也将会得到由于单个预测期的预测结果.一组预测期称为一个集合(ensemble),因此这一技术被称为集成学习(Ensemble Le ...

  6. 壁虎书7 Ensemble Learning and Random Forests

    if you aggregate the predictions of a group of predictors,you will often get better predictions than ...

  7. 7. 集成学习(Ensemble Learning)Stacking

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  8. 6. 集成学习(Ensemble Learning)算法比较

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  9. 5. 集成学习(Ensemble Learning)GBDT

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  10. 3. 集成学习(Ensemble Learning)随机森林(Random Forest)

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

随机推荐

  1. R绘制中国地图,并展示流行病学数据

    流行病学的数据讲究“三间分布”,即人群分布.时间分布和空间分布.其中的“空间分布”最好是在地图上展示,才比较清楚.R软件集统计分析与高级绘图于大成,是最适合做这项工作了.关于地图的绘制过程,谢益辉.邱 ...

  2. Spring 4 官方文档学习(七)核心技术之Spring AOP APIs

    请忽略本篇内容!!! 1.介绍 2.Spring中的pointcut API 2.1.概念 2.2.对pointcut的操作 2.3. AspectJ expression pointcut 2.4. ...

  3. YUV数据YUY2到I420

    /* 主要的采样格式有YCbCr 4:2:0.YCbCr 4:2:2.YCbCr 4:1:1和 YCbCr 4:4:4.其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度 ...

  4. (转)typedef 函数指针的用法

    typedef 函数指针的用法   在网上搜索函数指针,看到一个例子.开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它.其实很多时候都 ...

  5. 【AngularJS】AngularJS整合Springmvc、Mybatis环境搭建

    近期想学习AngularJS的使用,网上搜了一圈后,折腾了半天解决bug后,成功使用AngularJS整合Springmvc.Spring.Mybatis搭建了一个开发环境.(这里Spring使用的版 ...

  6. c++ json cpp

    一 编译链接 1 在相应官网下载jsoncpp 2 解压得到jsoncpp-src-0.5.0文件 3 打开jsoncpp-src-0.5.0 -> makefiles -> vs71 - ...

  7. linux 访问远程务器代码

    比如用SSH  访问远程 登陆名为hadoop 的IP为192.168.1.35的主机,则用ssh hadoop@192.168.1.35,然后依据提示输入密码即可.

  8. [java ] java.util.zip.ZipException: error in opening zip file

    严重: Failed to processes JAR found at URL [jar:file:/D:/tools/apache-tomcat-7.0.64_2/webapps/bbs/WEB- ...

  9. 工作流JBPM_day02:1-回顾_2-设计流程Transition

    工作流JBPM_day02:1-回顾 1,工作流框架 处理流程的 流程多,有变化 2,准备环境 + HelloWorld 一.概念 Deployment部署对象 ProcessDefinition 流 ...

  10. Java精选笔记_IO流(转换流、常用流、流操作规律、字符编码)

    IO流 用来处理设备之间的数据传输,java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中 按操作数据分为:字节流和字符流:按流向分为:输入流和输出流. 程序从输入流中读取数据,向输 ...