Jae*_*ger 2 machine-learning adaboost scikit-learn ensemble-learning
我是AdaBoost算法的新手.在sklearn中, SAMME算法的_boost_discrete()将分类器权重返回为" estimator_weight "
def _boost_discrete(self, iboost, X, y, sample_weight):
.......
return sample_weight, estimator_weight, estimator_error
Run Code Online (Sandbox Code Playgroud)
但是,对于SAMME.R算法,"_ boost_real()" 返回 "1"而不是返回估计量权重.
def _boost_real(self, iboost, X, y, sample_weight):
.......
return sample_weight, 1., estimator_error
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么SAMME.R算法将estimator_weight返回为'1'.我正在关注ref [1].请帮我理解算法.提前致谢.
参考:[1] J. Zhu,H.Zou,S.Rosset,T.Hastie,"Multi-class AdaBoost",2009.
joc*_*ops 11
以下是我对于2006年多级Adaboost论文之后SAMME.R算法中权重可能设置为"1"的理解.您提到的2009年论文不包括SAMME.R算法.
在论文(2006)sample_weight
由下式表示瓦特和estimator_weight
由下式表示的α.
如果你看看算法2 SAMME
一旦 w和alpha,就会根据C(x)对新样本进行分类.注意,estimator_weight
(alpha ^(m))出现在C(x)中,可以解释为弱学习者m的更新强度.
现在让我们看看算法4 SAMME.R.
请注意,此算法中的任何位置都不会出现estimator_weight
(alpha).相反,弱学习者的特征在于加权类概率估计,并且新样本根据这个新的C(x)进行分类.即使estimator_weight
(alpha)不直接出现在C(x)中,也可以将它放在h_k ^(m)(x)前面(作为乘数)并将其定义为1为所有alpha:
这导致在estimator_weight
训练结束时所有值都为1.
归档时间: |
|
查看次数: |
2514 次 |
最近记录: |