このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
fitensemble
分類および回帰のアンサンブル学習器の当てはめ
構文
説明
fitensemble
は、決定木学習器または判別分析分類器のブースティングまたはバギングを行うことができます。また、KNN のランダム部分空間アンサンブルまたは判別分析分類器に学習をさせることもできます。
よりシンプルなインターフェイスでアンサンブル分類およびアンサンブル回帰を当てはめるには、それぞれ fitcensemble
および fitrensemble
を代わりに使用します。また、fitcensemble
と fitrensemble
にはベイズ最適化のためのオプションもあります。
は、1 つ以上の Mdl
= fitensemble(___,Name,Value
)Name,Value
ペア引数で指定された追加オプションと前の構文のいずれかを使用して、アンサンブルに学習をさせます。たとえば、クラスの順序、10 分割交差検証の実施、学習率を指定できます。
例
入力引数
出力引数
ヒント
NLearn
は数十から数千までさまざまな数になります。通常、予測力が高いアンサンブルでは数百から数千の弱学習器が必要です。しかし、このような多数のサイクルの学習をアンサンブルが一度に行う必要はありません。数十個の学習器の学習から開始してアンサンブルの性能を調査し、必要な場合は分類問題用のresume
または回帰問題用のresume
を使用して弱学習器の数を増やすことができます。アンサンブルの性能は、アンサンブルの設定と弱学習器の設定によって決まります。つまり、既定のパラメーターを使用する弱学習器を指定すると、アンサンブルの性能が低下する可能性があります。このため、アンサンブルの設定と同じように、テンプレートを使用して弱学習器のパラメーターを調整し、汎化誤差が最小になる値を選択することをお勧めします。
Resample
を使用してリサンプリングを指定する場合は、データ セット全体に対してのリサンプリングをお勧めします。つまり、FResample
の既定設定である1
を使用します。分類問題の場合 (つまり、
Type
が'classification'
の場合)アンサンブル集約法 (
Method
) が'bag'
で、誤分類コスト (
Cost
) が非常に不均衡である場合、in-bag の標本について、ペナルティが大きいクラスから一意な観測値がオーバーサンプリングされます。クラスの事前確率 (
Prior
) の歪みが大きい場合、事前確率が大きいクラスから一意な観測値がオーバーサンプリングされます。
これらの組み合わせにより、標本サイズが小さい場合、ペナルティまたは事前確率が大きいクラスから抽出される 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
を指定することにより調整できます。fitensemble
は誤分類コストが大きいクラスをオーバーサンプリングし、誤分類コストが小さいクラスをアンダーサンプリングして、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
になります。したがって、fitensemble
はクラス A の 20 個の観測値とクラス B の 20 個の観測値を使用して、すべての学習器に学習をさせます。'RatioToSmallest',[2 2]
を設定した場合も同じ結果になります。'RatioToSmallest',[2,1]
を設定した場合、
=s1
*m
2*10
=20
および
=s2
*m
1*10
=10
になります。したがって、fitensemble
はクラス A の 20 個の観測値とクラス B の 10 個の観測値を使用して、すべての学習器に学習をさせます。
決定木のアンサンブルの場合とデュアルコア以上のシステムの場合、
fitensemble
では Intel® スレッディング ビルディング ブロック (TBB) を使用して学習を並列化します。Intel TBB の詳細については、https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.htmlを参照してください。
参照
[1] Breiman, L. “Bagging Predictors.” Machine Learning. Vol. 26, pp. 123–140, 1996.
[2] Breiman, L. “Random Forests.” Machine Learning. Vol. 45, pp. 5–32, 2001.
[3] Freund, Y. “A more robust boosting algorithm.” arXiv:0905.2138v1, 2009.
[4] Freund, Y. and R. E. Schapire. “A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting.” J. of Computer and System Sciences, Vol. 55, pp. 119–139, 1997.
[5] Friedman, J. “Greedy function approximation: A gradient boosting machine.” Annals of Statistics, Vol. 29, No. 5, pp. 1189–1232, 2001.
[6] Friedman, J., T. Hastie, and R. Tibshirani. “Additive logistic regression: A statistical view of boosting.” Annals of Statistics, Vol. 28, No. 2, pp. 337–407, 2000.
[7] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning section edition, Springer, New York, 2008.
[8] Ho, T. K. “The random subspace method for constructing decision forests.” IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 20, No. 8, pp. 832–844, 1998.
[9] Schapire, R. E., Y. Freund, P. Bartlett, and W.S. Lee. “Boosting the margin: A new explanation for the effectiveness of voting methods.” Annals of Statistics, Vol. 26, No. 5, pp. 1651–1686, 1998.
[10] Seiffert, C., T. Khoshgoftaar, J. Hulse, and A. Napolitano. “RUSBoost: Improving classification performance when training data is skewed.” 19th International Conference on Pattern Recognition, pp. 1–4, 2008.
[11] Warmuth, M., J. Liao, and G. Ratsch. “Totally corrective boosting algorithms that maximize the margin.” Proc. 23rd Int’l. Conf. on Machine Learning, ACM, New York, pp. 1001–1008, 2006.
拡張機能
バージョン履歴
R2011a で導入