码迷,mamicode.com
首页 > 系统相关 > 详细

Ensemble method of machine learning 机器学习中的组合方法

时间:2015-07-26 14:17:37      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:machine learning   ensemble   机器学习   经验   组合方法   

最近做了不少的kaggle机器学习竞赛,总结除了一个经验:做好了feature enginering可以进到前百分之20,如果要进到前百分之10,那么就需要Ensemble method的支持了,所以最近专门深入了解了以下组合的各种方法。通过学习发现组合方法真的是屡试不爽,在竞赛的后期,黔驴技穷,走投无路之时,不妨试试组合方法,会让人豁然开朗,

组合历史提交答案

这是最简单的一种组合方法,只需要把以前提交的答案组合起来再提交一遍就能得到效果,在比赛后期与他人组队的时候,这招也尤为有效,可以直接将自己的结果与他人ensemble,只要保证足够的多样性,可以得到明显的效果。

Voting ensembles

投票组合,故名思议,就是在分类任务中让多个结果来投票,得票数多的类别就是最终答案。

Error correcting codes

投票的方法常见于通信系统中的错误编码纠正,例如有以下编码:
1110110011101111011111011011
但是由于某种原因变为了:
1010110011101111011111011011
在编码纠正中的常见技术是传递冗余编码,假设对于以上编码,同一码字传送3遍,最终可以通过投票来纠正偶尔错误的编码:
Original signal:
1110110011

Encoded:
10,3 101011001111101100111110110011

Decoding:
1010110011
1110110011
1110110011

Majority vote:
1110110011

投票组合例子

假设有以下正确结果:
1111111111
我训练了3个分类器,每个分类器可以达到70%的正确率,最后从概率上来计算一下投票组合方法能达到多大的正确率:
All three are correct
  0.7 * 0.7 * 0.7
= 0.3429

Two are correct
  0.7 * 0.7 * 0.3
+ 0.7 * 0.3 * 0.7
+ 0.3 * 0.7 * 0.7
= 0.4409

Two are wrong
  0.3 * 0.3 * 0.7
+ 0.3 * 0.7 * 0.3
+ 0.7 * 0.3 * 0.3
= 0.189

All three are wrong
  0.3 * 0.3 * 0.3
= 0.027
最后组合方法可以达到~78% (0.3429 + 0.4409 = 0.7838)的正确率。

投票者的数量

接下来咱们看看投票者的数量对最终结果的影响:
技术分享
学过通信的都知道,当信噪比比较低的时候,编码的误码率就越高,但是可以通过传送冗余的编码,最后投票来纠正一些编码的错误,上图展示了不同次数的冗余编码对最终误码率的影响,可以看到当信噪比(SNR)比较低的时候,随着重复次数的增多,组合个数的增加,编码错误是降低的。

模型相关性

在对提交结果做组合的时候,多个结果之间相关性较低会给组合带来较大的增益,why?
例如有以下三次提交结果:
1111111100 = 80% accuracy
1111111100 = 80% accuracy
1011111100 = 70% accuracy.
投票结果:
1111111100 = 80% accuracy
因为最终结果的高相关性,所以组合出来的效果并不理想。

例如有以下另外三个model的结果:
1111111100 = 80% accuracy
0111011101 = 70% accuracy
1000101111 = 60% accuracy
最终投票结果:
1111111101 = 90% accuracy
所以提交结果之间的高多样性,低相关性会增加ensemble的效果。

Weighing

为什么要再ensemble的时候引入权重,其实就是为了让牛逼的model又更高的话语权,在voting ensemble中,默认的是大家有一样的投票权,weighing就是为了打破这种平衡,对表现好的结果寄予较高的权重。或者也可以认为是为了让一些比较差的model来修复较好model的一些错误。

Averaging

以上讲述的方法主要应用于分类问题,对于回归问题,可以用平均的方法来达到ensemble的目的。通过对结果们的平均,还能从一定程度上防止overfitting,从下图可以得到一些启发,绿色的线代表着我们提交的某一次结果,当咱们把多个结果平均后,会得到一条更接近于黑色的线,这条线可以很好的分开红蓝两种类别。
技术分享

Rank averaging

在ranking这类问题中,如果我们直接去平均结果,往往会出现一些问题,例如分类器对于ranking有以下输出:
Id,Prediction
1,0.35000056
2,0.35000002
3,0.35000098
4,0.35000111
如果以上的结果和另一个分类器的结果来ensemble,结果并没有改变。
Id,Prediction
1,0.57
2,0.04
3,0.96
4,0.99
所以面对ranking这类问题,我们可以对结果做一些calibration,例如初始结果如下:
Id,Rank,Prediction
1,1,0.35000056
2,0,0.35000002
3,2,0.35000098
4,3,0.35000111
我们可以normalizing下结果,这样就能比较好的去组合其他的结果了。

Id,Prediction
1,0.33
2,0.0
3,0.66
4,1.0

Stacked Generalization & Blending

未完待续......




























































版权声明:本文为博主原创文章,未经博主允许不得转载。

Ensemble method of machine learning 机器学习中的组合方法

标签:machine learning   ensemble   机器学习   经验   组合方法   

原文地址:http://blog.csdn.net/frog_in_a_well/article/details/47066975

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!