机器学习和生物信息学实验室联盟

标题: Weka中的Ensemble Learning [打印本页]

作者: xmubingo    时间: 2013-3-27 14:28
标题: Weka中的Ensemble Learning
本帖最后由 xmubingo 于 2013-4-27 16:24 编辑

Weka中自带了许多集成学习的算法。
比如: AdaboostM1, Bagging,Stacking,还有投票策略用的Vote。(不知道原始boosting在哪里)

扩展包里也有一些新算法,如下图所示:
[attach]1363[/attach]

每种算法都不尽然相同,比如AdaBoost首先初始化每个样本相同的权重,对样本进行多次训练。每次训练从训练集中根据样本权重抽取一部分样本,每次训练都对上次训练失败的样本提升其权重,使得之后训练集的抽样更有可能抽取到这些失败样本,多次训练这些错误样本提高准确率。训练过程中每次对多个预测函数进行评估,对预测准确率高的预测函数赋予高的权重,否则赋予低的权重。分类预测的采用投票方式,每个预测函数根据其自身的权重投票。
Bagging和AdaBoost类似,但是Bagging每次抽取训练集是随机的,采用boostrap放回重抽样算法,而并不是按照AdaBoost那样给样本赋予权重,每次抽样都依据上次训练的错误率。同时,Bagging的预测函数也没有权重,因此Bagging的训练集和预测函数在多次训练中相互独立,多次训练可以实现并行化。理论上AdaBoost加强了错分样本的训练,因此一般可以得到更高的准确率。
stacking对多种不同分类器进行组合建立分层结构,stackingC强化stacking的效率,multiBoostAB是建立多个Adaboost用Wagging算法组合起来,还有grading算法,我试过效果还不错。

最奇葩是这里的ensembleLibrary, 安装完之后多出一个EnsembleSelection分类器:
显然也是做分类器选择。他们的论文中集成了SVM,ANN,KNN,DT,BAG-DT,BST-DT等分类器建了2000个模型(不同算法,不同参数组合),采用爬山法,不断往分类器set里加入新的分类器让效果有所提高。据说跑一次要一个星期的时间。Weka中的Ensemble Selection要自己建立模型xml,一句话,难用。

[attach]1364[/attach]

他们的论文Ensemble selection from libraries of models发表在04年的ICML上。工作由康奈尔大学学者完成。
强烈建议阿邱的libD3C向weka申请,组合进WEKA工具包。

两篇论文:
1. Ensemble selection from libraries of models [attach]1365[/attach]
2. 选择性集成学习算法综述(计算机学报,其中也提到第一篇论文的工作)[attach]1366[/attach]




作者: zouquan    时间: 2013-3-27 22:14
这篇论文很有意思,邱诚和文强读一下。
作者: xmubingo    时间: 2013-3-28 09:34
zouquan 发表于 2013-3-27 22:14
这篇论文很有意思,邱诚和文强读一下。

软件学报那篇论文也提到Ensemble selection. 我两篇都传到帖子里了。
作者: chenwq    时间: 2013-3-28 19:02
本帖最后由 chenwq 于 2013-4-8 15:25 编辑
zouquan 发表于 2013-3-27 22:14
这篇论文很有意思,邱诚和文强读一下。


浏览了一下,发现这篇论文做的和我们不大一样,有它的高端之处。一个浅显片面的理解:
1、构造了规模相对较大的基分类集合:使用了121分类器,加上参数设置。构成了2000个基分类器
2、在1的1000个基分类器之上,虽然只使用了简单的forward stepwise selection,但是充分论证了Ensemble selection只要select出Top K个性能最好,且相互之间diversity大的基分类器就可以保证ensemble的总体性能(论文中分别针对10种metrics证明);以及使用Ensemble selection可以做类似于交叉验证的parameter estimate和类似于feature selection的classifier model selection。

我在想使这篇论文被ICML录用,1和2都有贡献。可能2的贡献会更大一点,但是没有1,2也没法论证。
还有一个是,这篇论文中的相关工作写得很全。让人发觉Ensemble还是一个活跃的研究热点,还有很多工作可以做。

找个时间我先向邱诚大牛请教下,怎么融合到我们实验室的libD3C上面。
作者: xmubingo    时间: 2013-3-28 19:44
chenwq 发表于 2013-3-28 19:02
浏览了一下,发现这篇论文做的和我们不大一样,有它的高端之处。一个浅显片面的理解:
1、构造了规模相 ...

说的好!可是他这么一搞,跑个数据集太TMD久了。
作者: chenwq    时间: 2013-3-28 19:51
本帖最后由 chenwq 于 2013-3-28 19:52 编辑
xmubingo 发表于 2013-3-28 19:44
说的好!可是他这么一搞,跑个数据集太TMD久了。


忘了实验所用集群和数据集大小,只记得是花了40个小时才训练完。包括速度最慢的ANN和SVMs。
这个是后面libD3C需要突破的一个大问题。
集思广益~
作者: chenwq    时间: 2013-4-3 16:47
本帖最后由 chenwq 于 2013-4-4 14:49 编辑
比如bagging是对同一种分类器建多个独立模型用投票策略表决,adaboost对同一种分类器拆分数据集迭代出多个模型加权投票

貌似反了吧?

boosting是指一族可以提升弱分类器为强分类器的算法。

AdaBoost(Additive Boosting)的出发点是要利用弱分类器之间的依赖性来提高分类或者回归的性能,所以,AdaBoost是在同一个数据集上训练的。

Bagging(Boostrap AGGregatING)的出发点是利用弱分类器的独立性来提高性能,所以,Bagging是在划分后的不相交子数据集上分别作训练的,很适合并行化或者分布式训练。
作者: xmubingo    时间: 2013-4-27 16:27
本帖最后由 xmubingo 于 2013-4-27 16:47 编辑
chenwq 发表于 2013-4-3 16:47
貌似反了吧?

boosting是指一族可以提升弱分类器为强分类器的算法。


不好意思,更新晚了。我已经更正了相关表述。

AdaBoost抽样是根据上次训练的错误率决定,加重对错分样本的训练。

Bagging采用boostrap放回抽样。因此Bagging的训练样本和预测函数都是独立,多次训练可并行化。

[attach]1430[/attach]




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2