2

私はAdaBoostアルゴリズムが初めてです。sklearn SAMME アルゴリズムの _boost_discrete()、分類子の重みを「estimator_weight」として返します

def _boost_discrete(self, iboost, X, y, sample_weight):
    .......

    return sample_weight, estimator_weight, estimator_error

しかし、SAMME.Rアルゴリズムの場合、"_boost_real()" は推定量の重みを返す代わりに '1' を返します。

def _boost_real(self, iboost, X, y, sample_weight):
    .......

    return sample_weight, 1., estimator_error

私の質問は、SAMME.R アルゴリズムが estimator_weight を「1」として返す理由です。私は参考文献 [1] に従います。アルゴリズムを理解するのを手伝ってください。前もって感謝します。

参照: [1] J. Zhu、H. Zou、S. Rosset、T. Hastie、「マルチクラス AdaBoost」、2009 年。

4

1 に答える 1

12

2006 年のこのMulti-class Adaboost論文に続いて、SAMME.R アルゴリズムで重みが「1」に設定される理由についての私の理解は次のとおりです。あなたが言及した 2009 年の論文には、SAMME.R アルゴリズムが含まれていません。

論文 (2006) ではsample_weightw表さestimator_weightれ、alphaで表されます。

Algorithm 2 SAMMEを見ると

SAMME アルゴリズム

walphaが学習されると、新しいサンプルが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) (乗数として)の前に配置し、すべてのalphaに対して 1 と定義することができます。

ここに画像の説明を入力

estimator_weightこれにより、トレーニングの最後にすべての値が 1 になります。

于 2015-09-21T19:58:23.117 に答える