インクリメンタル学習モデルの構成
R2026bインクリメンタル学習モデルのオブジェクトでは、関数がインクリメンタル近似およびモデルの性能評価を実装する方法を完全に指定します。インクリメンタル学習モデルの構成 (または準備) を行うには、オブジェクトを直接呼び出すか、従来式の学習済みモデルをいずれかのオブジェクトに変換することによってモデルを作成します。次の表は、使用可能なモデル タイプ、インクリメンタル学習用のモデル オブジェクト、および変換関数の一覧です。
インクリメンタル モデルを作成するためにどの方法を選択するかは、所有している情報や求めるものによって異なります。
オブジェクト呼び出し: オブジェクトを直接呼び出して、指定に合わせてインクリメンタル モデルを作成します。この方法には柔軟性があります。目的に合わせてほとんどのオプションを指定でき、結果のモデルは適切な既定値を提供します。詳細については、オブジェクトの直接呼び出しを参照してください。
モデル変換: 関数
incrementalLearnerを使用して、従来式の学習済みモデルをインクリメンタル学習器に変換し、インクリメンタル学習用にモデルを初期化します。この関数は、データから学習させた従来式の学習済みモデルの情報を渡します。従来式の学習済みモデルを変換するには、モデルを当てはめることができるラベル付きデータのセットがなければなりません。incrementalLearnerを使用するときに指定できるのは、すべての性能評価オプションと、変換時には未知である、それらの学習、モデル、およびデータのオプションのみです。詳細は、従来式の学習済みモデルの変換を参照してください。
次の構成については、使用する方法に関わりなく検討してください。
モデルの性能評価設定 (測定するパフォーマンス メトリクスなど)。詳細については、個々のオブジェクトのリファレンス ページを参照してください。
ECOC モデルの場合:
バイナリ学習器
バイナリ学習器の符号化設計行列。
カーネル モデルの場合:
モデル タイプ (SVM など)
目的関数ソルバー。標準確率的勾配降下 (SGD) など
ランダムな特徴量拡張のハイパーパラメーター (カーネル スケール パラメーターや拡張空間の次元数など)
線形モデルの場合:
モデル タイプ (SVM など)
係数の初期値
目的関数ソルバー。標準確率的勾配降下 (SGD) など
ソルバーのハイパーパラメーター値 (SGD ソルバーの学習率など)
ニューラル ネットワーク モデルの場合:
ニューラル ネットワーク層のパラメーター (重み、バイアス、活性化など)。
目的関数ソルバー (FreeREX など)。
ソルバーのハイパーパラメーター値 (ミニバッチ LBFGS ソルバーの初期学習率など)。
単純ベイズモデルの場合、予測子変数の条件付き分布。データ セットには、実数予測子を正規分布とすること、およびカテゴリカル予測子 (ここでレベルは数値スカラー) を多変量多項とすることの指定が可能です。各予測子がカウントである bag-of-tokens モデルの場合、すべての予測子が結合されて多項となることの指定が可能です。
オブジェクトの直接呼び出し
他の機械学習モデル オブジェクトを操作する場合とは異なり、インクリメンタル学習モデルは、データについての知識がほとんどなくても、対応するオブジェクトを直接呼び出すことで作成できます。たとえば、次のコードは線形回帰用の既定のインクリメンタル モデルと、5 個のクラスを含むデータ ストリームの単純ベイズ分類モデルを作成します。
MdlLR = incrementalRegressionLinear(); MdlNB = incrementalClassificationNaiveBayes(MaxNumClasses=5)
線形モデルとカーネル モデルの場合、モデルを直接作成するために必要な唯一の情報は、機械学習の問題が分類または回帰のどちらであるかということです。仕様によっては評価期間も必要になることがあります。
単純ベイズ分類モデルと ECOC 分類モデルの場合は、インクリメンタル学習中にデータで予測される最大クラス数またはすべてのクラス名を指定しなければなりません。
回帰ニューラル ネットワーク モデルの場合、必要な情報はありません。
分類ニューラル ネットワーク モデルの場合、次のいずれかを指定する必要があります。
インクリメンタル学習中にデータで予測される最大クラス数
予測されるすべてのクラスの名前
ニューラル ネットワーク層の重み、バイアス、活性化
指定するデータについての情報がある場合、またはモデル オプションか性能評価の設定を構成する場合は、オブジェクトを呼び出すときに名前と値の引数を使用します (すべてのモデル プロパティは読み取り専用です。ドット表記を使用して調整することはできません)。たとえば、次の疑似コードは、バイナリ分類用のインクリメンタル ロジスティック回帰モデルを作成し、線形モデル係数 Beta およびバイアス Bias (問題の事前知識から取得) を初期化し、パフォーマンス メトリクスのウォームアップ期間を 500 個の観測値に設定します。
Mdl = incrementalClassificationLinear(Learner="logistic", ... Beta=beta,Bias=bias,MetricsWarmupPeriod=500);
すべてのオプションの詳細については、各インクリメンタル モデル オブジェクトのページのプロパティの節を参照してください。
性能評価のオプションとプロパティ
性能評価のプロパティとオプションを使用して、モデルの性能をインクリメンタル学習関数 updateMetrics または updateMetricsAndFit で測定する方法とタイミングを構成できます。どのオプションを選択するとしても、インクリメンタル学習の期間についてまず理解するようにしてください。
次の表は、性能評価のすべてのオプションとプロパティを示しています。
| 性能評価のオプションとプロパティ | 説明 |
|---|---|
Metrics | 名前と値の引数 Metrics を使用して、インクリメンタルに測定するパフォーマンス メトリクスまたは損失関数のリストを指定します。追跡された累積メトリクスとウィンドウ メトリクスの table が Metrics プロパティに格納されます。 |
MetricsWarmupPeiod | インクリメンタル モデルがパフォーマンス メトリクスを追跡する前に当てはめなければならない観測値の数 |
MetricsWindowSize | ウィンドウ パフォーマンス メトリクスの計算に使用する観測値の数 |
IsWarm*** | モデルがウォームである (パフォーマンス メトリクスを測定している) かどうかを示すフラグ |
***IsWarm プロパティは指定できません。その他のプロパティは、オブジェクトを呼び出すときに名前と値の引数の構文を使用して設定できます。
名前と値の引数 Metrics で指定されたメトリクスで、モデルの Metrics プロパティに格納される table が形成されます。たとえば、インクリメンタル モデル Mdl を作成するときに Metrics=["Metric1","Metric2"] を指定した場合、Metrics プロパティは次のようになります。
>> Mdl.Metrics
ans =
2×2 table
Cumulative Window
__________ ______
Metric1 NaN NaN
Metric2 NaN NaN
モデルの品質が低下し、モデルを学習させてから関数 updateMetrics または updateMetricsAndFit が Metrics プロパティのパフォーマンス メトリクスを追跡する必要がある場合は、メトリクスのウォームアップ期間を指定します。この場合、IsWarm プロパティは false となり、インクリメンタル近似関数 fit または updateMetricsAndFit に入力データとモデルを渡さなければなりません。
インクリメンタル近似関数が十分なデータを処理して、推定期間 (線形モデルとカーネル モデルの場合)、ソルバーの調整期間 (ミニバッチ LBFGS ソルバーを使用するニューラル ネットワーク モデルの場合)、メトリクスのウォームアップ期間が完了すると、IsWarm プロパティが true になり、入力データでモデルの性能を測定したり、オプションでモデルに学習させたりできるようになります。単純ベイズ分類モデル、ニューラル ネットワーク分類モデル、ECOC 分類モデルの場合、インクリメンタル近似関数ではさらに、モデルを予測されるすべてのクラスに当てはめてウォームにしなければなりません。
モデルがウォームである場合、updateMetrics または updateMetricsAndFit は、指定されたすべてのメトリクスを、(評価の開始時から) 累積的に、MetricsWindowSize プロパティで指定された観測値のウィンドウで追跡します。累積メトリクスには、インクリメンタル学習の履歴全体にわたるモデルの性能が反映されます。性能評価期間 1 の開始後、累積メトリクスは評価期間に依存しません。ウィンドウ メトリクスには、指定したウィンドウ サイズにおける、各性能評価期間のモデルの性能が反映されます。
従来式の学習済みモデルの変換
incrementalLearner では、従来式の学習済みモデルから学習した情報を使用して、インクリメンタル モデルを初期化できます。変換モデルは予測を生成でき、ウォームです。これは、インクリメンタル学習関数がデータ ストリームの最初からモデルのパフォーマンス メトリクスを測定できることを意味します。つまり、インクリメンタル学習のために、推定期間およびパフォーマンス メトリクスのウォームアップ期間は必要ありません。
従来式の学習済みモデルをインクリメンタル学習器に変換するには、incrementalLearner に、モデル、および名前と値の引数で指定したオプションを渡します。たとえば、次の疑似コードは、バイナリ分類用の線形 SVM モデルがデータのバッチから学習したすべての情報を使用してインクリメンタル分類モデルを初期化します。
Mdl = fitcsvm(X,Y); IncrementalMdl = incrementalLearner(Mdl,Name=Value);
IncrementalMdl は、異常検出用のインクリメンタル 1 クラス SVM モデル オブジェクトです。
インクリメンタル モデルの作成と初期化の容易さは、柔軟性とトレードオフの関係にあります。ソフトウェアは、従来の学習で学習された近似パラメーター、ハイパーパラメーター値、およびデータ特性がインクリメンタル学習にも適切であることを前提としています。そのため、incrementalLearner を呼び出すときに、対応する学習済みのオプションまたは調整済みのオプションを設定することはできません。
サポートされる各分類モデルと回帰モデルの incrementalLearner 関数は、一部のプロパティを Mdl から転送するか他の値から推論します。詳細については、各関数 incrementalLearner のページの出力引数に関する説明を参照してください。
線形分類モデルまたは線形回帰モデル (それぞれ ClassificationLinear または RegressionLinear) の変換時には、次の条件が適用されます。
インクリメンタル近似関数はリッジ (L2) 正則化のみをサポートします。
インクリメンタル近似関数では、正則化値を 1 つのみ指定できます。そのため、
fitclinearまたはfitrlinearを呼び出すときに正則化パス (正則化値のベクトル) を指定する場合、それをselectModelsに渡して、1 つのペナルティに関連付けられているモデルを選択するようにします。標準 SGD または平均化 SGD (名前と値の引数
Solverで"sgd"または"asgd") を使用して目的関数を解決する場合、incrementalLearnerを呼び出すときに次の条件が適用されます。incrementalLearnerは、Mdlの最適化に使用されるソルバーをIncrementalMdlに転送します。適応型スケール不変ソルバー
"scale-invariant"を代わりに指定できますが、別の SGD ソルバーを指定することはできません。適応型スケール不変ソルバーを指定しない場合、
incrementalLearnerは、学習率LearnRate、ミニバッチ サイズBatchSize、およびリッジ ペナルティLambdaなどのモデルとソルバーのハイパーパラメーター値をインクリメンタル モデル オブジェクトに転送します。転送されたプロパティは変更できません。
モデルに学習させた後のオブジェクトの呼び出し
インクリメンタル モデルを作成するにあたってさらに柔軟性が必要な場合は、オブジェクトを直接呼び出し、名前と値の引数を使用して学習済みの情報を個別に設定してモデルを初期化します。以下の疑似コードは次の 2 つの例を示しています。
バイナリ分類の線形 SVM モデルをデータのバッチ
XcおよびYcに当てはめて学習させた係数とクラス名から、インクリメンタル分類モデルを初期化します。Mdl = fitcsvm(Xc,Yc); IncrementalMdl = incrementalClassificationLinear( ... Beta=Mdl.Beta,Bias=Mdl.Bias,ClassNames=Mdl.ClassNames);線形モデルをデータのバッチ
XrおよびYrに当てはめて学習させた係数から、インクリメンタル回帰モデルを初期化します。Mdl = fitlm(Xr,Yr); bias = Mdl.Coefficients.Estimate(1); beta = Mdl.Coefficients.Estimate(2:end); IncrementalMdl = incrementalRegressionLinear( ... Learner="leastsquares",Bias=bias,Beta=beta);