主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

アンサンブル学習のフレームワーク

さまざまな方法を使用して,複数の弱学習器の結果を1つの高品質のアンサンブル予測器に融合することができます。これらのメソッドは同じ構文に忠実に従っているため,コマンドで別のメソッドを試す場合でもわずかな変更で済みます。

分類のアンサンブルは菲特森布尔を使用して、回帰のアンサンブルはfitrensembleを使用して作成できます。

菲特森布尔を使用して分類用のアンサンブルに学習をさせるには,次の構文を使用します。

ens=fitcensemble(X,Y,名称,值)
  • Xは、データの行列です。各行には 1.つの観測値、各列には 1.つの予測子変数が含まれます。

  • Yは応答のベクトルで、Xの行で表される観測値の数と同じ数になります。

  • 名称、值では、1.つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、引数“方法”でアンサンブル集約法を、引数“NumLearningCycles”でアンサンブル学習のサイクル数を、引数“学习者”で弱学習器のタイプを指定できます。名前と値のペアの引数の完全なリストについては,関数菲特森布尔のページを参照してください。

アンサンブル分類を作成するために必要な情報を次の図に示します。

同様に、菲特森布尔と同じ構文に従うfitrensembleを使用して、回帰用のアンサンブルに学習をさせることができます。入力引数および名前と値のペアの引数の詳細については、関数fitrensembleのページを参照してください。

分類または非線形回帰の問題では,次の手順を実行してアンサンブルを作成します。

予測子データの準備

どの教師あり学習手法でも,このドキュメンテーションでは通常Xと表記されている予測子データから始まります。Xは行列またはテーブルに格納できます。Xの各行は 1.つの観測値を、Xの各列は 1.つの変数または予測子を表します。

応答データの準備

応答データには,さまざまなデータ型を使用できます。

  • アンサンブル回帰の場合、YXの行数と同じ数の要素をもつ数値ベクトルでなければなりません。

  • アンサンブル分類の場合、Yは数値ベクトル、明确的ベクトル、文字配列、一串配列、文字ベクトルの 单间牢房配列、必然的ベクトルが可能です。

    たとえば,応答データに3つの観測,符合事实的错误的符合事实的がこの順序で含まれているとします。この場合、Yは次のように表現できます。

    • [1;0;1](数値ベクトル)

    • 范畴({'true','false','true'})(分类的ベクトル)

    • (真的,假的,真的)(合乎逻辑ベクトル)

    • (“真正的”,“假”;“真正的”)(各行が同じ長さになるように空白が埋め込まれた,文字配列)

    • [“真”、“假”、“真”](弦配列)

    • {'true','false','true'}(文字ベクトルの 单间牢房配列)

    最も適切なデータ型を使用してください。欠損値は論理エントリでは表現できないため、Yに欠損値が存在するときには論理エントリは使用しないでください。

菲特森布尔fitrensembleは,アンサンブルを作成するときにYの欠損値を無視します。次の表は,欠損値を表現する方法を示しています。

データ型 欠損値
数値ベクトル
明确的ベクトル <未定义>
文字配列 空白行
一串配列 < >失踪または""
文字ベクトルの 单间牢房配列 ''
必然的ベクトル (表現されない)

適用するアンサンブル集約法の選択

菲特森布尔fitrensembleでそれぞれアンサンブル分類とアンサンブル回帰を作成するには,次のリストから適切なアルゴリズムを選択します。

  • 2.つのクラスによる分類:

    • “AdaBoostM1”

    • “LogitBoost”

    • “绅士之声”

    • “RobustBoost”(优化工具箱™が必要)

    • “LPBoost”(优化工具箱が必要)

    • “TotalBoost”(优化工具箱が必要)

    • “RUSBoost”

    • “子”

    • “包”

  • 3.つ以上のクラスによる分類:

    • “AdaBoostM2”

    • “LPBoost”(优化工具箱が必要)

    • “TotalBoost”(优化工具箱が必要)

    • “RUSBoost”

    • “子”

    • “包”

  • 回帰:

    • “LSBoost”

    • “包”

各アルゴリズムの説明については、アンサンブル アルゴリズムを参照してください。

適切なアンサンブル アルゴリズムの選択に関するヒントを参照してください。

次の表は、各アルゴリズムの特徴の一覧です。この表では、以下のように表記されています。

  • 不平衡——不均衡な(あるクラスの観測値数が他のクラスよりはるかに多い)データの場合に適切

  • 停止— アルゴリズムが自動終了

  • 稀疏的— 必要な弱学習器の数が他のアンサンブル アルゴリズムより少ない

アルゴリズム 回帰 バイナリ分類 マルチクラス分類 クラスの不均衡 停止 稀疏的
× × ×
AdaBoostM1 ×
AdaBoostM2 ×
LogitBoost ×
温柔的 ×
稳健性增强 ×
LPBoost × × × ×
全速推进 × × × ×
RUSBoost × × ×
LSBoost ×
子空间 × ×

稳健性增强LPBoost全速推进には优化工具箱ライセンスが必要です。LPBoostの前に全速推进を使用してみてください。全速推进の方がロバストな場合があります。

適切なアンサンブル アルゴリズムの選択に関するヒント

  • 回帰LSBoostまたはを選択します。ブースティングとバギングの主な違いについては,アンサンブル アルゴリズムの一般的な特徴を参照してください。

  • バイナリ分類— まずAdaBoostM1を選択し,次のように変更します。

    データの特徴 推奨アルゴリズム
    予測子が多数ある 子空间
    データが歪んでいる (1 つのクラスだけに観測が多数ある) RUSBoost
    ラベル ノイズ (一部の学習データのクラスが誤っている) 稳健性增强
    観測が多数ある LPBoost全速推进は使用しない
  • マルチクラス分類— まずAdaBoostM2を選択し,次のように変更します。

    データの特徴 推奨アルゴリズム
    予測子が多数ある 子空间
    データが歪んでいる (1 つのクラスだけに観測が多数ある) RUSBoost
    観測が多数ある LPBoost全速推进は使用しない

これらのアルゴリズムの詳細は,アンサンブル アルゴリズムを参照してください。

アンサンブル アルゴリズムの一般的な特徴

  • 促进アルゴリズムでは一般的に非常に浅いツリーが使用されます。この作成処理にかかる時間は比較的短く,メモリの消費量も少なくなります。ただし,効果的な予測を行うには,ブースティング木で必要なアンサンブルメンバーの数がバギング木の場合より多くなることがあります。そのため,どちらのアルゴリズムが優れているかは一概には言えません。

  • では一般的に深いツリーが作成されます。この作成処理は時間がかかり,メモリの消費量も非常に多くなります。このため,予測は比較的低速になります。

  • では、追加の交差検証を行わずに汎化誤差を推定できます。渗出物を参照してください。

  • 子空间を除くすべてのブースティングおよびバギング アルゴリズムは決定木学習器に基づいています。子空间では判別分析またはK最近傍法学習器を使用できます。

各アンサンブル メンバーの特徴の詳細は、分類アルゴリズムの特性を参照してください。

アンサンブルメンバー数の設定

速度と精度のバランスが適切に保たれるアンサンブルのサイズを選択します。

  • アンサンブルのサイズが大きいと、学習や予測の生成に時間がかかります。

  • アンサンブル アルゴリズムのタイプによっては、サイズが大きすぎると、過学習になる (精度が低下する) 可能性があります。

適切なサイズを設定するには、アンサンブルのメンバー数を数十から数百程度から開始して、アンサンブルを学習させ、その後でアンサンブル品質テストで説明している方法でアンサンブル品質をチェックします。メンバー数を増やす必要があると判断できる場合は、コマンド ラインで简历メソッド (分類木の場合)、または简历メソッド(回帰木の場合)を使用します。メンバーを追加してもアンサンブル品質が改善されなくなるまで手順を繰り返します。

ヒント

分類上、LPBoost全速推进アルゴリズムは自動終了型です。そのため,適切なアンサンブルサイズを調べる必要はありません。NumLearningCycles500に設定してみてください。アルゴリズムは通常、これより少ないメンバーで終了します。

弱学習器の準備

現在,弱学習器タイプには次のものがあります。

  • “歧视性”(子空间アンサンブルに推奨されます)

  • “KNN”(子空间アンサンブルのみ対象)

  • “树”(子空间を除くすべてのアンサンブル用)

アンサンブルにおける弱学習器のタイプを設定する方法には、次の 2.つがあります。

  • 既定の弱学習器オプションでアンサンブルを作成するには、名前と値のペアの引数“学习者”の値として弱学習器の名前の文字ベクトルまたは 一串スカラーを指定します。以下に例を示します。

    ens=fitcensemble(X,Y,'Method','Subspace',…'NumLearningCycles',50,'Learner','KNN');%或ens=fitrensemble(X,Y,'Method','Bag',…'NumLearningCycles',50,'Learner','Tree');
  • 既定の設定でない弱学習器オプションでアンサンブルを作成するには,適切な样板メソッドを使用して既定の設定でない弱学習器を作成します。

    たとえば、欠損データがあり、精度を向上させるため代理分岐がある分類木を使用する場合は次のようにします。

    templ = templateTree(“代孕”,“所有的”);ens = fitcensemble(X,Y,'Method','AdaBoostM2',…“NumLearningCycles”,50岁的“学习者”,templ);

    標本サイズの少なくとも10%の観測数がリーフに含まれている木を成長させるには,次のようにします。

    templ = templateTree (MinLeafSize,大小(X, 1) / 10);ens = fitcensemble(X,Y,'Method','AdaBoostM2',…“NumLearningCycles”,50岁的“学习者”,templ);

    あるいは、木ごとの最大分割数を選択します。

    templ = templateTree (MaxNumSplits, 4);ens = fitcensemble(X,Y,'Method','AdaBoostM2',…“NumLearningCycles”,50岁的“学习者”,templ);

    fitrensembleでは、既定以外の弱学習器も使用できます。

学習器テンプレートの 单间牢房配列を菲特森布尔fitrensembleに渡すことができますが、最も一般的な使用法は 1.つの弱学習器テンプレートだけを渡すことです。

テンプレートの使用例は、アンサンブル分類における不均衡データまたは一様ではない誤分類コストの処理代理分岐を参照してください。

決定木では、X値を処理できます。このような値を“欠損している”と呼びます。X行の一部に欠損値が存在する場合は、決定木は欠損していない値のみを使用して最適分割を検出します。行全体がで構成されている場合、菲特森布尔fitrensembleはその行を無視します。Xのデータに含まれる欠損値の比率が高い場合は、代理決定分岐を使用します。代理分岐の例は、アンサンブル分類における不均衡データまたは一様ではない誤分類コストの処理代理分岐を参照してください。

ツリー弱学習器の一般的な設定

  • 弱学習器のツリーの深さによって,学習時間,メモリ使用量および予測精度が変化します。次のパラメーターで深さを制御します。

    • 最大数分裂― 枝ノード分割の最大数は、ツリーあたり最大数分裂です。最大数分裂に大きい値を設定するとツリーが深くなります。バギングの既定値は尺寸(X,1)-1です。ブースティングの既定値は1.です。

    • 小叶大小——各リーフには少なくとも小叶大小の観測値があります。小叶大小に小さい値を設定するとツリーが深くなります。分類の既定値は1.、回帰の既定値は5.です。

    • MinParentSize——ツリーの各枝ノードには少なくともMinParentSizeの観測値があります。MinParentSizeに小さい値を設定するとツリーが深くなります。分類の既定値は2.、回帰の既定値は10です。

    MinParentSize小叶大小の両方を指定した場合、リーフが大きくなるツリー (浅いツリー) を生成する設定が学習器で使用されます。

    MinParent=max(MinParent,2*MinLeaf)

    最大数分裂をさらに指定した場合,3つの分割基準のいずれかが満たされるまでツリーが分割されます。

  • 代理代理“开”のときに、代理分岐をもつ決定木を成長させます。代理分岐はデータに欠損値があるときに使用します。

    メモ

    代理分岐を行うと,学習速度が低下し,メモリ使用量が増えます。

  • PredictorSelection菲特森布尔fitrensembleおよび树人は既定で標準购物车アルゴリズム[11]を使用して木を成長させます。予測子変数が異種混合の場合、または一部の予測子に多くのレベルがあり他の予測子はレベルの数が少ない場合、標準 运货马车は多くのレベルをもつ予測子を分割予測子として選択する傾向にあります。予測子がもつレベルの数に対してロバストな分割予測子選択については、“曲率”または“交互曲率”の指定を検討してください。これらの指定では,各予測子とその応答との間,または各予測子ペアとその応答との間の関連についてのカイ二乗検定を実施します。p値が最小になる予測子が特定のノードの分割予測子になります。詳細は,分割予測子選択手法の選択を参照してください。

    メモ

    決定木をブースティングする場合、曲率検定または交互作用検定を使用する分割予測子の選択は推奨されません。

菲特森布尔またはfitrensembleの呼び出し

菲特森布尔fitrensembleの構文は同じです。fitrensembleの場合,構文は次のとおりです。

ens=fitrensemble(X,Y,名称,值)
  • Xは、データの行列です。各行には 1.つの観測値、各列には 1.つの予測子変数が含まれます。

  • Yは応答で、Xの行で表される観測値の数と同じ数になります。

  • 名称、值では、1.つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、引数“方法”でアンサンブル集約法を、引数“NumLearningCycles”でアンサンブル学習のサイクル数を、引数“学习者”で弱学習器のタイプを指定できます。名前と値のペアの引数の完全なリストについては,関数fitrensembleのページを参照してください。

fitrensemble菲特森布尔の結果は,新しいデータに対する予測の作成に適したアンサンブルオブジェクトです。アンサンブル回帰の作成に関する基本的な例は,アンサンブル回帰に学習をさせるを参照してください。アンサンブル分類の作成に関する基本的な例は、アンサンブル分類に学習をさせるを参照してください。

名前と値のペアを設定する状況

名前と値のペアの引数には、菲特森布尔またはfitrensembleに渡すことができるものと,弱学習器(templateDiscriminant模板templateTree) に適用されるものがあります。どの名前と値のペアの引数がアンサンブルまたは弱学習器に適しているかを判断する基準は次のとおりです。

  • テンプレートの名前と値のペアを使用して、弱学習器の特性を制御します。

  • 菲特森布尔またはfitrensembleの名前と値のペアの引数を使用して、アルゴリズムまたは構造のいずれかについてアンサンブル全体を制御します。

たとえば、ブースティング分類木のアンサンブルで各ツリーが既定より深い場合、templateTreeの名前と値のペアの引数小叶大小およびMinParentSizeに既定より小さい値を設定します。または、最大数分裂を既定より大きい値にします。すると,ツリーのリーフが多く(ツリーが深く)なります。

アンサンブル分類の予測子の名前を指定するには(アンサンブルの構造の一部にするには),菲特森布尔の名前と値のペアPredictorNamesを使用します。

参考

|||||||

関連するトピック