|
本帖最后由 xmubingo 于 2013-4-27 16:24 编辑
Weka中自带了许多集成学习的算法。
比如: AdaboostM1, Bagging,Stacking,还有投票策略用的Vote。(不知道原始boosting在哪里)
在扩展包里也有一些新算法,如下图所示:
每种算法都不尽然相同,比如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,一句话,难用。
他们的论文Ensemble selection from libraries of models发表在04年的ICML上。工作由康奈尔大学学者完成。
强烈建议阿邱的libD3C向weka申请,组合进WEKA工具包。
两篇论文:
1. Ensemble selection from libraries of models
2. 选择性集成学习算法综述(计算机学报,其中也提到第一篇论文的工作)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|