このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
templateEnsemble
アンサンブル学習テンプレート
構文
説明
例
入力引数
出力引数
ヒント
NLearn
は数十から数千までさまざまな数になります。通常、予測力が高いアンサンブルでは数百から数千の弱学習器が必要です。しかし、このような多数のサイクルの学習をアンサンブルが一度に行う必要はありません。数十個の学習器の学習から開始してアンサンブルの性能を調査し、必要な場合は分類問題用のresume
または回帰問題用のresume
を使用して弱学習器の数を増やすことができます。アンサンブルの性能は、アンサンブルの設定と弱学習器の設定によって決まります。つまり、既定のパラメーターを使用する弱学習器を指定すると、アンサンブルの性能が低下する可能性があります。このため、アンサンブルの設定と同じように、テンプレートを使用して弱学習器のパラメーターを調整し、汎化誤差が最小になる値を選択することをお勧めします。
Resample
を使用してリサンプリングを指定する場合は、データ セット全体に対してのリサンプリングをお勧めします。つまり、FResample
の既定設定である1
を使用します。分類問題の場合 (つまり、
Type
が'classification'
の場合)アンサンブル集約法 (
Method
) が'bag'
であり、誤分類コストが非常に不均衡である場合、in-bag の標本について、ペナルティが大きいクラスから一意な観測値がオーバーサンプリングされます。
クラスの事前確率の歪みが大きい場合、事前確率が大きいクラスから一意な観測値がオーバーサンプリングされます。
これらの組み合わせにより、標本サイズが小さい場合、ペナルティまたは事前確率が大きいクラスから抽出される out-of-bag 観測値の相対頻度が非常に低くなる可能性があります。この結果、out-of-bag の推定誤差の変動幅が非常に大きくなり、解釈が困難になる可能性があります。特に標本サイズが小さい場合に、out-of-bag の推定誤差の変動幅が大きくならないようにするには、近似関数の名前と値のペアの引数
Cost
を使用して誤分類コスト行列をより平衡にするか、近似関数の名前と値のペアの引数Prior
を使用して事前確率ベクトルの歪みを小さくします。一部の入力引数および出力引数の順序は学習データ内の各クラスに対応するので、近似関数の名前と値のペアの引数
ClassNames
を使用してクラスの順序を指定することをお勧めします。クラスの順序を簡単に求めるには、未分類の (つまり欠損ラベルがある) 学習データからすべての観測値を削除し、個別のクラスがすべて含まれている配列を取得および表示してから、その配列を
ClassNames
に指定します。たとえば、応答変数 (Y
) がラベルの cell 配列であるとします。次のコードは、変数classNames
でクラスの順序を指定します。Ycat = categorical(Y); classNames = categories(Ycat)
categorical
は<undefined>
を未分類観測値に割り当て、categories
は<undefined>
を出力から除外します。したがって、このコードをラベルの cell 配列に対して使用するか、同様のコードを categorical 配列に対して使用すると、欠損ラベルがある観測値を削除しなくても各クラスのリストを取得できます。最小相当ラベルから最大相当ラベルの順になるように順序を指定するには、(前の項目のように) クラスの順序を簡単に求め、リスト内のクラスの順序を頻度順に変更してから、リストを
ClassNames
に渡します。前の例に従うと、次のコードは最小相当から最大相当の順にクラスの順序をclassNamesLH
で指定します。Ycat = categorical(Y); classNames = categories(Ycat); freq = countcats(Ycat); [~,idx] = sort(freq); classNamesLH = classNames(idx);
アルゴリズム
アンサンブル集約アルゴリズムの詳細については、アンサンブル アルゴリズムを参照してください。
Method
がブースティング アルゴリズム、Learners
が決定木になるように指定した場合、既定では "切り株" が成長します。決定株は、2 つの終端ノード (葉ノード) に接続されている 1 つのルート ノードです。木の深さは、templateTree
を使用して名前と値のペアの引数MaxNumSplits
、MinLeafSize
およびMinParentSize
を指定することにより調整できます。in-bag の標本の生成では、誤分類コストが大きいクラスがオーバーサンプリングされ、誤分類コストが小さいクラスがアンダーサンプリングされます。その結果、out-of-bag の標本では、誤分類コストが大きいクラスの観測値は少なくなり、誤分類コストが小さいクラスの観測値は多くなります。小さなデータ セットと歪みが大きいコスト行列を使用してアンサンブル分類を学習させる場合、クラスあたりの out-of-bag の観測値の数は非常に少なくなることがあります。そのため、推定された out-of-bag の誤差の変動幅が非常に大きくなり、解釈が困難になる場合があります。事前確率が大きいクラスでも同じ現象が発生する場合があります。
アンサンブル集約法 (
Method
) が RUSBoost である場合、名前と値のペアの引数RatioToSmallest
では最小相当クラスに関して各クラスのサンプリングの比率を指定します。たとえば、学習データに A および B という 2 つのクラスがあるとします。A には 100 個の観測値、B には 10 個の観測値が含まれています。また、最小相当クラスではm
個の観測値が学習データに含まれているとします。'RatioToSmallest',2
を設定した場合、
=s
*m
2*10
=20
になります。したがって、すべての学習器の学習では、クラス A の 20 個の観測値とクラス B の 20 個の観測値が使用されます。'RatioToSmallest',[2 2]
を設定した場合も同じ結果になります。'RatioToSmallest',[2,1]
を設定した場合、
=s1
*m
2*10
=20
および
=s2
*m
1*10
=10
になります。したがって、すべての学習器の学習では、クラス A の 20 個の観測値とクラス B の 10 個の観測値が使用されます。
決定木のアンサンブルの場合とデュアルコア以上のシステムの場合、
fitcensemble
とfitrensemble
では Intel® スレッディング ビルディング ブロック (TBB) を使用して学習を並列化します。Intel TBB の詳細については、https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.htmlを参照してください。
バージョン履歴
R2014b で導入