ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

アンサンブル アルゴリズム

アンサンブル学習にはさまざまなアルゴリズムを使用できます。アルゴリズムのいくつかはアンサンブル分類のみに適用され、またいくつかはアンサンブル回帰のみに適用されます。アンサンブルを作成するアルゴリズムを使用するには、fitcensemble または fitrensemble の名前と値のペアの引数 'Method' の値を指定します。このトピックでは、さまざまなアルゴリズムの説明を提供します。LPBoostTotalBoostRobustBoost など一部のアルゴリズムを使用するには Optimization Toolbox™ のライセンスが必要であることに注意してください。

AdaBoostM1

AdaBoostM1 は、バイナリ分類のブースティング アルゴリズムとして一般的に利用されています。アルゴリズムでは、学習器に連続的に学習を行わせます。インデックス t をもつすべての学習器について、AdaBoostM1 は重み付き分類誤差を計算します。

εt=n=1Ndn(t)I(ynht(xn)),

ここで、

  • xn は、観測値 n の予測子値のベクトルです。

  • yn は真のクラス ラベルです。

  • ht はインデックス t をもつ学習器の予測 (仮説) です。

  • I はインジケーター関数です。

  • dn(t) は、ステップ t における観測値 n の重みです。

AdaBoostM1 は、次に学習器 t によって誤分類された観測値の重みを増加させ、学習器 t によって正しく分類された観測値の重みを減少させます。次の学習器 t + 1 は、更新された重み dn(t+1) をもつデータで学習を行います。

学習が完了した後で、AdaBoostM1 は次の式を使用して新しいデータの予測を計算します。

f(x)=t=1Tαtht(x),

ここで、

αt=12log1εtεt

は、アンサンブルに存在する弱仮説の重みです。

AdaBoostM1 による学習は、指数損失の逐次最小化と見なすことができます。

n=1Nwnexp(ynf(xn)),

ここで、

  • yn ∊ {–1,+1} は真のクラス ラベルです。

  • wn は最大で 1 まで正規化される観測値の重みです。

  • f(xn) ∊ (–∞,+∞) は予測された分類スコアです。

観測値の重み wn は、fitcensemble に渡した元の観測値の重みです。

AdaBoostM1 アンサンブル分類の predict メソッドの 2 番目の出力は、2 つのクラスと N 個の観測値の N 行 2 列の行列です。この行列の 2 列目は常に 1 列目の負数に等しくなります。predict メソッドはマルチクラス モデルと一致する 2 つのスコアを返します。ただし、2 番目の列は常に最初の列の負数になるため、これは冗長です。

AdaBoostM1 が最もよく使用されるのは、木の決定株 (既定の設定) または浅いツリーで使用される場合です。ブースティングされた決定株の性能が低い場合は、最小親ノード サイズを学習データの 4 分の 1 に設定します。

既定の設定では、ブースティング アルゴリズムの学習率は 1 です。学習率を低い値に設定した場合には、アンサンブル学習率は低くなりますが、最終的には良い結果が得られます。最もよく使用される学習率は、0.1 です。1 より低い学習率を使用することは、“縮小” と呼ばれる場合があります。

AdaBoostM1 の使用例は、RobustBoost の調整を参照してください。

AdaBoostM1 に関連する参考資料は、Freund と Schapire [20]、Schapire など[40]、Friedman、Hastie、Tibshirani [22]、および Friedman [21]を参照してください。

AdaBoostM2

AdaBoostM2 は、複数クラスに対応するために拡張された AdaBoostM1 です。重み付き分類誤差の代わりに、AdaBoostM2 では、N 個の観測値と K クラスに対して、重み付き疑似損失を使用します。

εt=12n=1Nkyndn,k(t)(1ht(xn,yn)+ht(xn,k)),

ここで、

  • ht(xn,k) はステップ t での学習器の予測における信頼性であり、0 (まったく信頼できない) から 1 (信頼性が高い) までの範囲のクラス k で表されます。

  • dn,k(t) は、ステップ t におけるクラス k の観測値の重みです。

  • yn は真のクラス ラベルで、K の値のいずれかになります。

  • 2 番目の合計は、真のクラス yn 以外のすべてのクラスを対象としたものです。

疑似損失の解釈は分類誤差より難しいですが、基本的概念は同じです。疑似損失は、アンサンブル内の任意の学習器の分類精度を測定するために使用できます。疑似損失は、通常は AdaBoostM1 の重み付き分類誤差と同じように動作します。ブースティングされたアンサンブルの最初のいくつかの学習器では、疑似損失の値は低くなります。その後、学習ステップが進むと、アンサンブル学習速度は遅くなり、疑似損失値は 0.5 に接近するほどに増加します。

AdaBoostM2 の使用例は、アンサンブル分類に学習をさせるを参照してください。

AdaBoostM2 に関連する参考資料は、Freund と Schapire [20]を参照してください。

バギング

"bootstrap aggregation" を意味する "バギング" (bagging) は、アンサンブル学習の一種です。データセット上の決定木などの弱学習器をバギングするには、このデータセットのブートストラップ複製を数多く生成し、この複製上で決定木を成長させます。N からの N 個の観測値を復元抽出法により無作為に選択することにより、各ブートストラップ複製を取得します (N はデータセット サイズです)。学習したアンサンブルの予測された応答を見つけるには、個々のツリーからの予測の平均を取ります。

バギングされた決定木は MATLAB® R2009a で導入されており、TreeBagger と呼ばれます。関数 fitcensemble および fitrensemble を使用すると、ブースティングと同じ方法でバギングできます。fitcensemble または fitrensemble によってそれぞれ返されるバギングされた決定木のアンサンブル ClassificationBaggedEnsemble または RegressionBaggedEnsemble は、TreeBagger とほぼ同等の機能を提供します。TreeBagger と新しいフレームワークの相違点は、fitensemble と fitrensemble にはない TreeBagger の機能で詳しく説明されています。

バギングは、リサンプリングされたバージョンのデータで学習器を訓練することで機能します。このリサンプリングは、通常は観測値のブートストラップによって行われます。つまり、N 個の観測値から、新しい学習器ごとに N 個を復元抽出法により選択します。さらに、アンサンブルのすべてのツリーでは、決定分岐の予測子を無作為に選択できます。これは、バギングされた決定木の精度を改善するためによく使用される手法です。

既定の設定では、バギングされたツリーの最小リーフ サイズは、分類では 1に、また回帰では 5 に設定されます。通常、既定の設定のリーフ サイズを使用して成長したツリーは、非常に深くなります。これらは、アンサンブルの予測力を高めるにはほとんど最適な設定です。多くの場合、予測力を低下させずにリーフ サイズの大きなツリーを成長させることができます。そうすることによって、学習済みアンサンブルのメモリ使用量が少なくなるだけでなく、学習や予測の時間も短縮されます。

もう 1 つの重要なパラメーターとして、決定分岐ごとに無作為に選択される予測子の数があります。分割が起きるごとにこの無作為な選択が行われるため、深いツリーには常に多くの分割が存在します。既定の設定では、このパラメーターは分類では予測子数の平方根に、また回帰では予測子数の 3 分の 1 に設定されています。

バギングされた決定木の特徴量のいくつかは固有なアルゴリズムになります。N 個の観測値から N 個を復元抽出すると、決定木ごとに平均 37% の観測値が省略されます。これが "out-of-bag" 観測です。それらを使用して、予測力と特徴量の重要度を推定することができます。観測ごとに out-of-bag 予測を推定するには、この観測が out-of-bag になっているアンサンブル内のすべてのツリーからの予測を平均します。それから、この観測値の応答に対して、計算された予測を比較することができます。学習に使用されたすべての観測値の応答に対して out-of-bag の予測応答を比較することにより、平均 out-of-bag 誤差を推定することができます。この out-of-bag の平均は真のアンサンブル誤差の不偏推定量です。また、一度に 1 変数または列全体にわたりランダムに out-of-bag データを並べ替え、この並べ替えによって増加する out-of-bag 誤差を推定することにより、特徴量の重要度の out-of-bag 推定を取得することができます。増加がより大きいほど、特徴はより重要になります。そのため、バギングされたアンサンブルに検定データを供給する必要がありません。バギングの長所である学習プロセス中に取得する予測力と特徴量の重要性の推定が信頼できるからです。

バギングされた決定木のもう 1 つの優れた特徴が近接行列です。あるツリーの同じリーフに 2 つの観測値が着地するたびに、その近接度は 1 増加します。正規化するには、これらの近接度をアンサンブル内のすべてのツリーにおいて合計し、ツリーの数で除算します。生成される行列は、対角要素が 1 に等しく非対角要素が 0 ~ 1 の範囲にある対称行列です。この行列を使用すると、多次元尺度構成法により外れ値の観測値とクラスターをデータから探すことができます。

バギングの使用例は、以下を参照してください。

バギングに関連する参考資料としては、Breiman [8][9]、および[10]を参照してください。

TreeBagger とバギングされたアンサンブルの比較

fitcensemble および fitrensemble は、TreeBagger オブジェクトの (すべてではなく) ほとんどの機能をもつバギングされたアンサンブルを生成します。また、新しいバギングされたアンサンブルでは、一部の機能の名前が異なります。

fitensemble と fitrensemble にはない TreeBagger の機能

機能TreeBagger のプロパティTreeBagger のメソッド
近接行列の計算Proximityfillproxmdsprox
外れ値の計算OutlierMeasure該当なし
予測子の重要度に関する out-of-bag 推定OOBPermutedPredictorDeltaMeanMargin および OOBPermutedPredictorCountRaiseMargin 該当なし
個別に学習させた 2 つのアンサンブルのマージ該当なしappend
並列計算によるアンサンブルの作成名前と値のペア UseParalleltrue に設定該当なし

メモ

fillprox を使用して TreeBagger モデルの近接行列と外れ値を推定するときに、MATLAB は n 行 n 列の行列の近似計算をメモリ内で行わなければなりません。n は観測値の個数です。したがって、n が中程度~大規模の場合、近接行列と外れ値の推定は行わないようにしてください。

TreeBagger とバギングされたアンサンブルにおける名前の違い

機能TreeBaggerバギングされたアンサンブル
予測子ごとの分離基準の貢献度DeltaCriterionDecisionSplit プロパティpredictorImportance (分類) または predictorImportance (回帰) の最初の出力
予測子の関連付けSurrogateAssociation プロパティpredictorImportance (分類) または predictorImportance (回帰) の 2 番目の出力
予測子の重要度に関する out-of-bag 推定OOBPermutedPredictorDeltaError プロパティoobPermutedPredictorImportance (分類) または oobPermutedPredictorImportance (回帰) の出力
誤差 (誤分類の確率または平均二乗誤差)error メソッドと oobError メソッドが用意されています。lossoobLoss メソッド (分類)、lossoobLoss メソッド (回帰)
追加のツリーの育成とアンサンブルへの追加growTrees メソッドresume メソッド (分類)、resume メソッド (回帰)
ツリーごとの分類マージンの平均meanMargin メソッドと oobMeanMargin メソッドが用意されています。edgeoobEdge メソッド (分類)

さらに、バギングされたアンサンブル分類の学習と予測には、2 つの重要な変更点があります。

  • TreeBagger に誤分類コスト行列を渡す場合は、この行列をツリーに沿って渡します。fitcensemble に誤分類コスト行列を渡す場合には、この行列を使用してクラスの事前確率を調整します。その後で、fitcensemble は調整された事前確率と既定のコスト行列をツリーに渡します。既定のコスト行列は、K クラスでは ones(K)-eye(K) です。

  • 新しいフレームワークの loss メソッドと edge メソッドとは異なり、TreeBaggererror メソッドと meanMargin メソッドでは、それぞれのクラスの事前確率について、入力観測値の重みを正規化しません。

GentleBoost

GentleBoost (Gentle AdaBoost としても知られています) では、AdaBoostM1LogitBoost の機能が結合されています。AdaBoostM1 と同様に、GentleBoost は指数損失を最小化します。ただし、数値最適化の設定は異なります。LogitBoost と同様に、すべての弱学習器は回帰モデルを応答値 yn ∊ {–1,+1} にあてはめます。そのため、GentleBoost は、複数レベルのカテゴリカル予測子をもつデータのバイナリ分類にも利用できます。

fitcensemble はアンサンブル オブジェクトの FitInfo プロパティに平均二乗誤差を計算して格納します。平均二乗誤差は次の式で求められます。

n=1Ndn(t)(y˜nht(xn))2,

ここで、

  • dn(t) は、ステップ t における観測値の重みです (重みの合計は 1)。

  • ht(xn) は、応答値 yn に近似された回帰モデル ht の予測です。

個々の学習器の強度が弱くなるに従って、重み付けられた平均二乗誤差は 1 に近づきます。

GentleBoost の使用例は、不均衡な分類コストによるアンサンブルの学習カテゴリカル レベルの数が多い分類を参照してください。

GentleBoost に関連する参考資料は、Freund、Hastie、および Tibshirani [22]を参照してください。

LogitBoost

LogitBoost もバイナリ分類に利用されることが多いアルゴリズムです。LogitBoostAdaBoostM1 と同じように動作しますが、二項分布からの逸脱度が最小になる点が異なります。

n=1Nwnlog(1+exp(2ynf(xn))),

ここで、

  • yn ∊ {–1,+1} は真のクラス ラベルです。

  • wn は最大で 1 まで正規化される観測値の重みです。

  • f(xn) ∊ (–∞,+∞) は予測された分類スコアです。

二項分布からの逸脱度により、誤分類の程度が大きい観測値 (ynf(xn) が高い負の値になる観測値) への重みの割り当てが低くされます。LogitBoost を使用すると、クラスが適切に分割されないようなデータに対しても、AdaBoostM1 より高い平均精度を達成できます。

LogitBoost アンサンブルの学習器 t は、回帰モデルを応答値にあてはめます。

y˜n=yn*pt(xn)pt(xn)(1pt(xn)),

ここで、

  • y*n ∊ {0,+1} は、(-1 ではなく 0 に) ラベルを付け直されたクラスです。

  • pt(xn) は、観測値 xn がクラス 1 になる確率を現在のアンサンブルで推定した値です。

ブースティングのステップを行うごとに回帰モデルを近似することによって、複数レベルのカテゴリカル予測子をもつデータの計算が飛躍的に有利になります。レベル数が L のカテゴリカル予測子があるとします。このような予測子の最適な決定分岐を求めるには、2L-1 - 1 個の分割を分類木で検討する必要があります。回帰木では検討する必要があるのは L – 1 個の分割だけなので、処理時間はかなり短くなります。多くのレベルをもつカテゴリカル予測子では、LogitBoost の使用が推奨されます。

fitcensemble はアンサンブル オブジェクトの FitInfo プロパティに平均二乗誤差を計算して格納します。平均二乗誤差は次の式で求められます。

n=1Ndn(t)(y˜nht(xn))2,

ここで、

  • dn(t) は、ステップ t における観測値の重みです (重みの合計は 1)。

  • ht(xn) は、応答値 y˜n にあてはめた回帰モデル ht の予測です。

値 yn の範囲は –∞ ~ +∞ です。そのため、平均二乗誤差には、明確な限界がありません。

LogitBoost の使用例は、カテゴリカル レベルの数が多い分類を参照してください。

LogitBoost に関連する参考資料は、Freund、Hastie、および Tibshirani [22]を参照してください。

LPBoost

LPBoost (線形プログラミング ブースティング) は、TotalBoost と同様に、学習セットの最小 "マージン" の最大化を試行することにより、マルチクラス分類を実行します。この試行では最適化アルゴリズム (具体的には LPBoost の線形計画法) が使用されます。そのため、LPBoostTotalBoost を使用するには Optimization Toolbox のライセンスが必要です。

分類のマージンは、真のクラスについて予測されたソフト分類 "スコア" と、偽のクラスの最大スコアの差を表します。ツリーの場合、葉ノードの分類の "スコア" は、そのノードでの分類の事後確率です。あるノードにおける分類の事後確率とは、分類によって実際にそのノードに達するのに要した学習シーケンスの数を、そのノードまでの学習シーケンスの数で除算した値です。詳細は、margin定義を参照してください。

最小マージンを最大化するのはなぜでしょうか。まず、汎化誤差 (新しいデータでの誤差) は負のマージンが発生する確率です。Schapire と Singer [41] は、負のマージンが発生する確率に関して次のような不等式を確立しました。

Ptest(m0)Ptrain(mθ)+O(1NVlog2(N/V)θ2+log(1/δ)).

ここで、m はマージン、θ は任意の正の数値、V は分類器空間の Vapnik-Chervonenkis 次元、N は学習セットのサイズ、δ は正の少数です。この不等式は、多数の独立同一分布の学習セットとテスト セットに対して確率が 1–δ の場合に成立します。この不等式から、汎化誤差を小さくするには、学習セットで観測数を最小化してマージン θ より小さくすればよいことがわかります。

LPBoost は、一連の線形プログラミングの問題によって最小マージンの最大化するよう反復します。同様に、その双対性から、LPBoost は最大 "エッジ" を最小化します。エッジとは重み付けされた平均マージンです (定義を参照してください)。反復を実行するたびに、問題の制約が増えていきます。そのため、大きな問題に対しては、最適化の問題の制約が非常に多くなり、解決に時間がかかることになります。

LPBoost は通常、重み付けされた多数の学習器をもつアンサンブルを作成します。この重みは、他の学習器の桁数より小さい桁数です。そのため、重要でないアンサンブルのメンバーをより確実に削除できるようにするため、compact メソッドでは LPBoost アンサンブルのメンバーを重みの大きい順に並べ替えられます。これにより、removeLearners メソッドを使用して、重要性が最も低いメンバーをアンサンブルから簡単に削除できるようになります。

LPBoost の使用例は、小さいアンサンブルでの LPBoost と TotalBoostを参照してください。

LPBoost に関連する参考資料については、Warmuth、Liao および Ratsch[44]を参照してください。

LSBoost

LSBoost (最小二乗ブースティング) はアンサンブル回帰の近似に使用します。ステップごとに、アンサンブルは新しい学習器を、実際に観測された応答とこれまでに学習させたすべての学習器を対象に集約された予測との差分にあてはめます。アンサンブルは近似によって平均二乗誤差を最小化します。

LearnRate パラメーターを渡すことによって、LSBoost を縮小で使用できます。既定の設定では、このパラメーターは 1 に設定されており、アンサンブルは最大速度で学習を行います。LearnRate0 から 1 までの値に設定した場合は、アンサンブルはすべての新しい学習器を yn - ηf(xn) にあてはめます。ここで、

  • yn は、観測された応答です。

  • f(xn) は、これまでに観測値 xn について学習を行ったすべての弱学習器から集約された予測です。

  • η は学習率です。

LSBoost の使用例は、アンサンブル回帰に学習をさせるアンサンブル回帰の正則化を参照してください。

LSBoost に関連する参考資料は、Hastie、Tibshirani および Friedman[24]の第 7 章 (モデルの評価と選択) と 第 15 章 (ランダム フォレスト、[9]も参照) を参照してください。

RobustBoost

AdaBoostM1LogitBoost などのブースティング アルゴリズムでは、ブースティングのステップごとに誤分類された観測値の重みを増加させます。これらの重みは非常に大きくなる可能性があります。その場合は、ブースティング アルゴリズムが少数の誤分類された観測値に集中して、学習データの大部分が無視されてしまう可能性があります。その結果、平均分類精度が低下します。RobustBoost を使用するには Optimization Toolbox のライセンスが必要です。

この場合には、RobustBoost を使用できます。このアルゴリズムでは、全データ分の重みを少数の誤分類された観測値に割り当ててしまうようなことはほとんど起こりません。そのため、優れた平均分類精度を達成できます。

AdaBoostM1LogitBoost とは異なり、 RobustBoost では、特定の損失関数を最小化することはありません。代わりに、一定のしきい値を超える分類マージンをもつ観測値の数を最大化します。

RobustBoost は、時間発展に基づいて学習を行います。このアルゴリズムは、t = 0 から始まります。ステップごとに、RobustBoost は最適化問題を解いて、時間 Δt での肯定的なステップと、それに対応する学習データ Δm の平均マージンにおける肯定的な変更を行います。次の 3 つの条件のいずれかが真の場合に、RobustBoost は学習を停止し、終了します。

  • 時間 t が 1 に到達する。

  • Δt および Δm の更新によっては、RobustBoost が最適化問題の解を求めることができなくなる。

  • RobustBoost は、要求した数の学習器を作成できます。

RobustBoost の結果は、どのような終了条件でも使用できます。交差検証または独立したテスト セットを使用することによって、分類精度を推定します。

RobustBoost で得られる精度を高くするには、関数 fitcensemble で次の 3 つのパラメーターを調整します。このパラメーターは RobustErrorGoalRobustMaxMargin および RobustMarginSigma です。はじめに、RobustErrorGoal の値を 0 から 1 まで変化させます。RobustErrorGoal について指定できる最大値は、他の 2 つのパラメーターによって決まります。高すぎる値を指定した場合は、fitcensemble はエラー メッセージを表示し、RobustErrorGoal に使用できる値の範囲を示します。

RobustBoost の使用例は、RobustBoost の調整を参照してください。

RobustBoost に関連する参考資料は、Freund [19]を参照してください。

RUSBoost

RUSBoost は、不均衡なデータを分類する場合に特に効果的です。つまり、学習データの一部のクラスのメンバーが、他のクラスよりはるかに少ない場合です。RUS は「Random Under Sampling」の略です。このアルゴリズムでは、N (学習データで最もメンバー数が少ないクラスのメンバー数) をサンプリングの基本単位として使用します。これよりメンバー数が多いクラスは、各クラスの観測値の中から N 件だけを抽出してアンダーサンプリングされます。つまり、クラス数が K の場合、アンサンブル内の弱学習器のそれぞれについて、RUSBoost は K 個のクラスのそれぞれから N 件の観測値があるデータのサブセットを抽出します。ブースティングはAdaBoostM2の手順に従って実行され、アンサンブルの再度の重み付けと構築が行われます。

RUSBoost アンサンブルを構築する場合、RatioToSmallest という名前のオプションの名前と値のペアがあります。K 個の値 (各値は割り当てられたクラスの標本数 N の倍数) があるベクトルを指定します。たとえば、最も小さいクラスのメンバー数が N = 100 の場合、RatioToSmallest = [2,3,4] は各弱学習器のメンバー数がクラス 1 では 200、クラス 2 では 300、クラス 3 では 400 であることを表します。RatioToSmallest が特定のクラスのメンバー数より大きい値を導き出した場合、RUSBoost はメンバーを復元抽出します。それ以外の場合、RUSBoost はメンバーを非復元抽出します。

RUSBoost の使用例は、不均衡データでの分類を参照してください。

RUSBoost に関連する参考資料については、Seiffert など[43]を参照してください。

部分空間

ランダム部分空間アンサンブル (Subspace) を使用して、判別分析 (ClassificationDiscriminant) または k 最近傍 (ClassificationKNN) 分類器の精度を向上させます。また、Subspace アンサンブルはすべての予測子をもつアンサンブルよりも少ないメモリを使用し、さらに欠損値 (NaN) も処理できます。

基本のランダム部分空間アルゴリズムでは以下のパラメーターを使用します。

  • m は各学習器で標本を取り出す次元 (変数) の数です。m の設定には名前と値のペア NPredToSample を使用します。

  • d はデータ内の次元数で、X データ行列の列 (予測子) の数を示します。

  • n は、アンサンブル内に存在する学習器の数です。NLearn を入力して n を設定します。

基本のランダム部分空間アルゴリズムは以下の手順を実行します。

  1. m 予測子のセットを非復元抽出法により d の候補値から無作為に選択します。

  2. m 個の選択された予測子のみを使用して、弱学習器を学習させます。

  3. 弱学習器が n になるまで、手順 1 と 2 を繰り返します。

  4. 弱学習器の score 予測を平均して予測し、score の平均が最も高いカテゴリを分類します。

d の次元から選択可能なすべての m 個の予測子のセットで、弱学習器が作成されるよう選択できます。これを行うには、学習器の数を示す n を 'AllPredictorCombinations' に設定します。この場合、アンサンブルには nchoosek(size(X,2),NPredToSample) 個の弱学習器があります。

関数 fitcensemble は、後続の学習器が前に使用された予測子を使用する確率が下がるように、学習器の予測子を選択した後で予測子の重みを小さくします。このように重み付けを行うと、一様に重み付けするよりも学習器内の予測子が均等に分布される傾向をもちます。

Subspace の使用例は、ランダム部分空間の分類を参照してください。

ランダム部分空間アンサンブルについては、Ho [26]を参照してください。

TotalBoost

TotalBoost は、線形プログラミング ブースティング (LPBoost) と同様に、学習セットの最小 "マージン" の最大化を試行することにより、マルチクラス分類を実行します。この試行では最適化アルゴリズム (TotalBoost の二次計画法) が使用されます。そのため、LPBoostTotalBoost を使用するには Optimization Toolbox のライセンスが必要です。

分類のマージンは、真のクラスについて予測されたソフト分類 "スコア" と、偽のクラスの最大スコアの差を表します。ツリーの場合、葉ノードの分類の "スコア" は、そのノードでの分類の事後確率です。あるノードにおける分類の事後確率とは、分類によって実際にそのノードに達するのに要した学習シーケンスの数を、そのノードまでの学習シーケンスの数で除算した値です。詳細は、margin定義を参照してください。

最小マージンを最大化するのはなぜでしょうか。まず、汎化誤差 (新しいデータでの誤差) は負のマージンが発生する確率です。Schapire と Singer [41] は、負のマージンが発生する確率に関して次のような不等式を確立しました。

Ptest(m0)Ptrain(mθ)+O(1NVlog2(N/V)θ2+log(1/δ)).

ここで、m はマージン、θ は任意の正の数値、V は分類器空間の Vapnik-Chervonenkis 次元、N は学習セットのサイズ、δ は正の少数です。この不等式は、多数の独立同一分布の学習セットとテスト セットに対して確率が 1–δ の場合に成立します。この不等式から、汎化誤差を小さくするには、学習セットで観測数を最小化してマージン θ より小さくすればよいことがわかります。

TotalBoost は、"エッジ" (重み付きマージン) が特定の値より下であるという制約のもとで、現在の重み分布と初期の重み分布の間のカルバック・ライブラー ダイバージェンスのプロキシを最小限にします。このプロキシは、このダイバージェンスの 2 次展開です。

D(W,W0)=n=1NlogW(n)W0(n)n=1N(1+W(n)W0(n))Δ+12W(n)Δ2,

ここで、Δ は W(n) (現在の反復と次の反復の重み) と W0 (初期の重み分布。一様分布です) の差を表します。この最適化定式によって、重みは 0 になりません。反復を実行するたびに、問題の制約が増えていきます。そのため、大きな問題に対しては、最適化の問題の制約が非常に多くなり、解決に時間がかかることになります。

TotalBoost は通常、重み付けされた多数の学習器をもつアンサンブルを作成します。この重みは、他の学習器の桁数より小さい桁数です。そのため、重要でないアンサンブルのメンバーをより確実に削除できるようにするため、compact メソッドでは TotalBoost アンサンブルのメンバーを重みの大きい順に並べ替えられます。これにより、removeLearners メソッドを使用して、重要性が最も低いメンバーをアンサンブルから簡単に削除できるようになります。

TotalBoost の使用例は、小さいアンサンブルでの LPBoost と TotalBoostを参照してください。

TotalBoost に関連する参考資料は、Warmuth、Liao および Ratsch [44]を参照してください。

参考

| | | | | | | | | | | |

関連するトピック