weka[7] - Adaboost

前面已经分析完bagging,当然不得不提boosting了。boosting方法中名气最大的要数Adaboost了。

我记得以前看别人博客的时候,有个很形象的比喻,来说明adaboost如何工作的。

adaboost的训练过程,就好比小朋友读文章。同一篇文章,每次阅读的时候,读错的汉字,多读几次(加重weight),然后下一轮读的时候,自然而然能更好地区别。最后,把所有读过的记忆合起来,就能很好地阅读这篇陌生的文章了。

adaboost一般使用的base learner叫做decision stump。它是一棵单层的决策树,weka里也有实现。由于这个算法本身很简单,但是实现因为要考虑各种情况,代码比较长,所以这里不做解析了。

adaboost的优点就是泛化能力强,这个是因为boosting的误差理论上有一个upper bound,跟base learner的个数和base learner的准确度相关。

adaboost的缺点也很明显,那就是对outlier 太敏感。这个也很好理解,因为权重不断加深嘛(这点也可以利用起来做outlier detection)

基本的adaboost是一个二分类器。也有一些改造后的adaboost(比如M1,MH)可用于多分类器。

下面进入正题,来看看weka中的adaboost是如何实现的。

constructor:

  public AdaBoostM1() {
    
    m_Classifier = new weka.classifiers.trees.DecisionStump();
  }
这里可以看到weka中adaboost的base learner是decision stump

buildClassifier:

 public void buildClassifier(Instances data) throws Exception {

    super.buildClassifier(data);

    // can classifier handle the data?
    getCapabilities().testWithFail(data);

    // remove instances with missing class
    data = new Instances(data);
    data.deleteWithMissingClass();
    
    // only class? -> build ZeroR model
    if (data.numAttributes() == 1) {
      System.err.println(
	  "Cannot build model (only class attribut
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 Weka 开发[1]-Instances类 1 Weka开发[2]-分类器类 2 Weka开发[3]-Evaluation类 3 Weka开发[4]-特征选择 4 Weka开发[5]-半监督算法 6 Weka开发[0]-导入Weka包 8 半监督算法工具SVMlin使用 12 半监督算法工具SVMlin读取数据代码介绍 14 Weka开发[6]-参数设置 16 Weka开发[7]-LibSVM 17 Weka开发[8]-ID3源码介绍 18 Weka开发[9]—KMeans源码介绍 21 Weka开发[10]—NBTree源码介绍 25 Weka开发[11]—J48源代码介绍 31 Weka开发[13]-Ensemble 39 Weka开发[14]-AdaBoost源代码介绍 42 Weka开发[15]-ZeroR源代码介绍(入门篇) 45 Multi-Label Classification(多标签分类) 介绍 47 Weka开发[16]-OneR源代码介绍 47 Weka开发[-1]——在你的代码中使用Weka 51 挖掘多标签数据综述(multi-label data mining)[Available] 62 数据流-移动超平面(HyperPlane)构造 63 Weka开发[17]——关联规则之Apriori 66 Weka开发[18]——寻找K个邻居 67 Weka开发[19]——NaiveBayes源代码分析 69 Weka开发[20]——IB1源代码分析 74 Weka开发[21]——IBk(KNN)源代码分析 77 Weka开发[22]——REPTree源代码分析(1) 81 Weka开发[23]——PART源代码分析 94 Weka开发[24]——Apriori源代码分析(1) 101 Weka开发[24]——Apriori源代码分析(2) 106 Weka开发[25]——Bagging源代码分析 112 Weka开发[26]——Voting源代码分析 116 Weka开发[27]——SMO源代码分析[1] 122 Weka开发[27]——SMO源代码分析[2] 127 weka开发[27]——SMO源代码分析[3] 132 Weka开发[27]——SMO源代码分析[4] 138

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值