このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
さまざまな方法を使用して,複数の弱学習器の結果を1つの高品質のアンサンブル予測器に融合することができます。これらのメソッドは同じ構文に忠実に従っているため,コマンドで別のメソッドを試す場合でもわずかな変更で済みます。
分類のアンサンブルは菲特森布尔
を使用して、回帰のアンサンブルはfitrensemble
を使用して作成できます。
菲特森布尔
を使用して分類用のアンサンブルに学習をさせるには,次の構文を使用します。
ens=fitcensemble(X,Y,名称,值)
X
は、データの行列です。各行には 1.つの観測値、各列には 1.つの予測子変数が含まれます。
Y
は応答のベクトルで、X
の行で表される観測値の数と同じ数になります。
名称、值
では、1.つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、引数“方法”
でアンサンブル集約法を、引数“NumLearningCycles”
でアンサンブル学習のサイクル数を、引数“学习者”
で弱学習器のタイプを指定できます。名前と値のペアの引数の完全なリストについては,関数菲特森布尔
のページを参照してください。
アンサンブル分類を作成するために必要な情報を次の図に示します。
同様に、菲特森布尔
と同じ構文に従うfitrensemble
を使用して、回帰用のアンサンブルに学習をさせることができます。入力引数および名前と値のペアの引数の詳細については、関数fitrensemble
のページを参照してください。
分類または非線形回帰の問題では,次の手順を実行してアンサンブルを作成します。
どの教師あり学習手法でも,このドキュメンテーションでは通常X
と表記されている予測子データから始まります。X
は行列またはテーブルに格納できます。X
の各行は 1.つの観測値を、X
の各列は 1.つの変数または予測子を表します。
応答データには,さまざまなデータ型を使用できます。
アンサンブル回帰の場合、Y
はX
の行数と同じ数の要素をもつ数値ベクトルでなければなりません。
アンサンブル分類の場合、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
と全速推进
アルゴリズムは自動終了型です。そのため,適切なアンサンブルサイズを調べる必要はありません。NumLearningCycles
を500
に設定してみてください。アルゴリズムは通常、これより少ないメンバーで終了します。
現在,弱学習器タイプには次のものがあります。
“歧视性”
(子空间
アンサンブルに推奨されます)
“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
を使用します。
菲特森布尔
|fitrensemble
|渗出物
|简历
|简历
|templateDiscriminant
|模板
|templateTree