Main Content

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

インクリメンタル学習モデルの構成

インクリメンタル学習モデルのオブジェクトでは、関数が漸増的なあてはめおよびモデルの性能評価を実施する方法をすべて指定します。インクリメンタル学習モデルの構成 (または準備) を行うには、オブジェクトを直接呼び出すか、従来式の学習済みモデルをいずれかのオブジェクトに変換することによってモデルを作成します。以下の表は、対応する機械学習の目的で使用可能なオブジェクト、変換関数、およびサポートされている学習器の一覧です。

目的作成方法関数サポートされている学習器
バイナリ分類オブジェクト呼び出しincrementalClassificationLinear

線形 SVM

ロジスティック回帰

モデル変換

incrementalLearner が線形 SVM モデル (ClassificationSVM または CompactClassificationSVM) を変換

incrementalLearner が線形分類モデル (ClassificationLinear) を変換

マルチクラス分類オブジェクト呼び出しincrementalClassificationNaiveBayes

クラスを条件とする、正規分布の予測子変数による単純ベイズ分類

モデル変換

incrementalLearner が完全な単純ベイズ分類モデル (ClassificationNaiveBayes) を変換

回帰オブジェクト呼び出しincrementalRegressionLinear

線形 SVM 回帰

最小二乗

モデル変換

incrementalLearner が線形 SVM 回帰モデル (RegressionSVM または CompactRegressionSVM) を変換

incrementalLearner が線形回帰モデル (RegressionLinear) を変換

どの作成方法を選択するかは、所有している情報や求めるものによって異なります。

  • オブジェクト呼び出し: オブジェクトを直接呼び出して、指定に合わせてインクリメンタル モデルを作成します。この方法には柔軟性があります。目的に合わせてほとんどのオプションを指定でき、結果のモデルは適切な既定値を提供します。ただし、

    • 線形分類モデルまたは線形回帰モデルの場合は、指定に対して評価期間が必要になることがあります。

    • 単純ベイズ分類モデルの場合は、インクリメンタル学習中にデータで予測される最大クラス数またはすべてのクラス名を指定しなければなりません。

    詳細については、オブジェクトの直接呼び出しを参照してください。

  • モデル変換: 従来式の学習済みモデルをインクリメンタル学習器に変換して、インクリメンタル学習用にモデルを初期化します。incrementalLearner は、データから学習させた従来式の学習済みモデルの情報を渡します。線形モデルの場合、渡される情報には、最適化された係数の推定値、データ特性、および適用可能なハイパーパラメーター値が含まれます。単純ベイズ分類モデルの場合、渡される情報には、予測されるすべてのクラス名や条件付き予測子分布の近似モーメントなどのデータ特性が含まれます。ただし、従来式の学習済みモデルを変換するには、モデルをあてはめることができるラベル付きデータのセットがなければなりません。

    incrementalLearner を使用するときに指定できるのは、すべての性能評価オプションと、変換時には未知である、学習、モデル、およびデータのオプションのみです。詳細は、従来式の学習済みモデルの変換を参照してください。

次の構成については、使用するインクリメンタル モデルの作成方法に関わりなく検討してください。

  • モデルの性能評価設定 (測定するパフォーマンス メトリクスなど)

  • 線形モデルの場合:

    • モデル タイプ (SVM など)

    • 係数の初期値

    • 目的関数ソルバー。標準確率的勾配降下 (SGD) など

    • ソルバーのハイパーパラメーター値 (SGD ソルバーの学習率など)

オブジェクトの直接呼び出し

他の機械学習モデル オブジェクトを操作する場合とは異なり、インクリメンタル学習モデルは、データについての知識がまったくなくても、対応するオブジェクトを直接呼び出すことで作成できます。線形モデルの場合、モデルを直接作成するために必要な唯一の情報は、機械学習の問題が分類または回帰のどちらであるかということです。単純ベイズ分類モデルには、データで予測される最大クラス数またはすべてのクラス名が必要です。たとえば、次のコードは線形回帰用の既定のインクリメンタル モデルと、5 個のクラスを含むデータ ストリームの単純ベイズ分類モデルを作成します。

MdlLR = incrementalRegressionLinear();
MdlNB = incrementalClassificationNaiveBayes('MaxNumClasses',5)

指定するデータについての情報がある場合、またはモデル オプションか性能評価の設定を構成する場合は、オブジェクトを呼び出すときに名前と値の引数を使用します (すべてのモデル プロパティは読み取り専用です。ドット表記を使用して調整することはできません)。たとえば、次の疑似コードは、バイナリ分類用のインクリメンタル ロジスティック回帰モデルを作成し、線形モデル係数 Beta およびバイアス Bias (問題の事前知識から取得) を初期化し、パフォーマンス メトリクスのウォームアップ期間を 500 個の観測値に設定します。

Mdl = incrementalClassificationLinear('Learner','logistic',...
    'Beta',Beta,'Bias',Bias,'MetricsWarmupPeriod',500);

以下の表では、インクリメンタル学習の重要な要素に関するオプションの主なものを簡単に説明しています。すべてのオプションの詳細については、incrementalRegressionLinearincrementalClassificationLinear または incrementalClassificationNaiveBayes を参照してください。

モデル オプションおよびデータ プロパティ

次の表は、主なモデル オプションとデータ特性です。

モデル タイプモデル オプションおよびデータ プロパティ説明
線形分類または線形回帰'Beta'インクリメンタル近似の初期値としても機能する線形係数
'Bias'インクリメンタル近似の初期値としても機能するモデル切片
'Learner'線形 SVM や最小二乗などのモデル タイプ
単純ベイズ分類'Cost'誤分類コスト行列
分類'ClassNames'分類用。観測ラベルの予想クラス名

学習およびソルバーのオプションとプロパティ

次の表は、学習およびソルバーの主なオプションとプロパティです。

モデル タイプ学習およびソルバーのオプションとプロパティ説明
線形分類または線形回帰'EstimationPeriod'事前学習の推定期間
'Solver'目的関数の最適化アルゴリズム
'Standardize'予測子データを標準化するためのフラグ
'Lambda'リッジ ペナルティ。SGD 最適化のために調整が必要なモデルのハイパーパラメーター
'BatchSize'ミニバッチ サイズ。SGD ハイパーパラメーター
'LearnRate'学習率。SGD ハイパーパラメーター
'Mu'予測子変数の平均が格納される読み取り専用プロパティ
'Sigma'予測子変数の標準偏差が格納される読み取り専用プロパティ
単純ベイズ分類'DistributionParameters'各クラスが与えられた各条件付き予測子分布の近似モーメント

線形分類モデルと線形回帰モデルの場合:

  • EstimationPeriod で観測値の数で指定される推定期間は、学習が始まる前に置かれます (インクリメンタル学習の期間を参照)。推定期間中、インクリメンタル近似関数 fit または updateMetricsAndFit は、未知の場合に必要な学習量を計算します。たとえば、'Standardize',true を設定した場合、インクリメンタル学習関数は、予測子データを標準化するために予測子の平均および標準偏差を必要とします。その結果、インクリメンタル モデルには推定期間が必要になります (既定値は 1000)。

  • 既定のソルバーは、適応型スケール不変ソルバー 'scale-invariant' [2]です。これにはハイパーパラメーターがなく、予測子変数のスケールの影響を受けないため、予測子データの標準化は必要ありません。代わりに、標準 SGD ('sgd') または平均化 SGD ('asgd') を指定できます。ただし、SGD は予測子変数のスケールの影響を受けやすく、ハイパーパラメーター調整が必要なため、インクリメンタル学習中は実行が困難または不可能です。SGD ソルバーを使用する場合は以下の手順を実行します。

    1. ラベル付きデータを取得します。

    2. fitclinear または fitrlinear をそれぞれ呼び出して、従来式で線形分類モデルまたは回帰モデルに学習させます。インクリメンタル学習に使用する SGD ソルバーを指定し、交差検証を行って適切なハイパーパラメーターのセットを決定し、予測子データを標準化します。

    3. 指定したハイパーパラメーターのセットを使用して、標本全体でモデルに学習させます。

    4. incrementalLearner を使用して、結果のモデルをインクリメンタル学習器に変換します。

性能評価のオプションとプロパティ

性能評価のプロパティとオプションを使用して、モデルの性能をインクリメンタル学習関数 updateMetrics または updateMetricsAndFit で測定する方法とタイミングを構成できます。どのオプションを選択するとしても、インクリメンタル学習の期間についてまず理解するようにしてください。

次の表は、性能評価のすべてのオプションとプロパティを示しています。

性能評価のオプションとプロパティ説明
'Metrics'漸増的に測定するパフォーマンス メトリクスまたは損失関数のリスト
'MetricsWarmupPeiod'インクリメンタル モデルがパフォーマンス メトリクスを追跡する前にあてはめなければならない観測値の数
'MetricsWindowSize'ウィンドウ パフォーマンス メトリクスの計算に使用する観測値の数
'IsWarm'モデルがウォームであるどうかを示す読み取り専用プロパティ (パフォーマンス メトリクスを測定)
'Metrics'追跡された累積メトリクスとウィンドウ メトリクスの table が格納される読み取り専用プロパティ

名前と値 'Metrics' で指定されたメトリクスは、モデルの Metrics プロパティに格納された table を形成します。たとえば、インクリメンタル モデル Mdl を作成するときに 'Metrics',["Metric1" "Metric2"] を指定した場合、Metrics プロパティは次のようになります。

>> Mdl.Metrics

ans =

  2×2 table
                Cumulative    Window
                __________    ______

    Metric1        NaN         NaN
    Metric2        NaN         NaN  

モデルの品質が低下し、モデルを学習させてから関数 updateMetrics または updateMetricsAndFitMetrics プロパティのパフォーマンス メトリクスを追跡する必要がある場合は、メトリクスのウォームアップ期間を指定します。この場合、IsWarm プロパティは false となり、インクリメンタル近似関数 fit または updateMetricsAndFit に入力データとモデルを渡さなければなりません。

インクリメンタル近似関数が十分なデータを処理して、推定期間 (線形モデルの場合) およびメトリクスのウォームアップ期間が完了すると、IsWarm プロパティが true になり、入力データでモデルの性能を測定したり、オプションでモデルに学習させたりできるようになります。単純ベイズ分類モデルの場合、インクリメンタル近似関数ではさらに、モデルを予測されるすべてのクラスにあてはめてウォームにしなければなりません。

モデルがウォームである場合、updateMetrics または updateMetricsAndFit は、指定されたすべてのメトリクスを、(評価の開始時から) 累積的に、MetricsWindowSize プロパティで指定された観測値のウィンドウで追跡します。累積メトリクスには、インクリメンタル学習の履歴全体にわたるモデルの性能が反映されます。性能評価期間 1 の開始後、累積メトリクスは評価期間に依存しません。ウィンドウ メトリクスには、指定したウィンドウ サイズにおける、各性能評価期間のモデルの性能が反映されます。

従来式の学習済みモデルの変換

incrementalLearner では、従来式の学習済みモデルから学習した情報を使用して、インクリメンタル モデルを初期化できます。変換モデルは予測を生成でき、ウォームです。これは、インクリメンタル学習関数がデータ ストリームの最初からモデルのパフォーマンス メトリクスを測定できることを意味します。つまり、インクリメンタル学習のために、推定期間およびパフォーマンス メトリクスのウォームアップ期間は必要ありません。

従来式の学習済みモデルをインクリメンタル学習器に変換するには、incrementalLearner に、モデル、および名前と値の引数で指定したオプションを渡します。たとえば、次の疑似コードは、バイナリ分類用の線形 SVM モデルがデータのバッチから学習したすべての情報を使用してインクリメンタル分類モデルを初期化します。

Mdl = fitcsvm(X,Y);
IncrementalMdl = incrementalLearner(Mdl,Name,Value);

IncrementalMdl は、機械学習の目的に関連付けられたインクリメンタル学習器オブジェクトです。

インクリメンタル モデルの作成と初期化の容易さは、柔軟性とトレードオフの関係にあります。ソフトウェアは、従来の学習で学習された近似パラメーター、ハイパーパラメーター値、およびデータ特性がインクリメンタル学習にも適切であることを前提としています。そのため、incrementalLearner を呼び出すときに、対応する学習済みのオプションまたは調整済みのオプションを設定することはできません。以下の表は、incrementalLearnerMdl から転送する、またはその関数が他の値から推論する IncrementalMdl の主な読み取り専用プロパティを示しています。

モデル タイププロパティ説明
すべてNumPredictors予測子変数の数。カテゴリカル予測子変数をダミー コード化するモデルの場合、NumPredictorsnumel(Mdl.ExpandedPredictorNames) であり、インクリメンタル学習中に予期される予測子変数は名前に対応します。詳細は、ダミー変数を参照してください。
分類ClassNamesインクリメンタル学習中に予測されるすべてのクラス ラベル
Prior前のクラス分布
ScoreTransform

分類スコアに適用する関数。たとえば、事後クラス確率を計算するように SVM モデルを構成する場合、ScoreTransform (データから学習したスコアから事後確率への変換関数が格納される) が転送されます。

回帰EpsilonSVM 学習器用。イプシロン不感応区間の幅の半分
ResponseTransform予測された応答に適用する関数
線形分類または線形回帰Beta線形モデル係数
Biasモデルの切片
Learner線形モデルのタイプ
MuSVM モデル オブジェクト用。予測子変数の平均
SigmaSVM モデル オブジェクト用。予測子変数の標準偏差
単純ベイズ分類DistributionNames各 cell が 'normal' である NumPredictors 長の cell ベクトル。非正規予測子が 1 つ以上含まれている単純ベイズ分類モデルを変換すると、incrementalLearner はエラーを生成します。
DistributionParameters各クラスが与えられた各条件付き予測子分布の近似モーメント

メモ

  • IncrementalMdlNumTrainingObservations プロパティには、Mdl の学習に使用した観測値は含まれません。

  • Mdl に学習させるときに 'Standardize',true を指定した場合、IncrementalMdl は既定で、インクリメンタル学習中に予測子を標準化するように構成されます。

線形分類モデルまたは線形回帰モデル (それぞれ 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 にあてはめて学習させた係数とクラス名から、インクリメンタル分類モデルを初期化します。

  • 線形モデルをデータのバッチ Xr および Yr にあてはめて学習させた係数から、インクリメンタル回帰モデルを初期化します。

% Linear Classification
Mdl = fitcsvm(Xc,Yc);
IncrementalMdl = incrementalClassificationLinear('Beta',Mdl.Beta,...
    'Bias',Mdl.Bias,'ClassNames',Mdl.ClassNames);

% Linear Regression
Mdl = fitlm(Xr,Yr);
Bias = Mdl.Coefficients.Estimate(1);
Beta = Mdl.Coefficients.Estimate(2:end);
IncrementalMdl = incrementalRegressionLinear('Learner','leastsquares',...
    'Bias',Bias,'Beta',Beta);

単純ベイズ分類モデルの場合、各予測子変数の条件付き確率分布のモーメント DistributionParameters は指定できません。fit または fitcnb によってデータに近似しなければなりません。

参照

[1] Bifet, Albert, Ricard Gavaldá, Geoffrey Holmes, and Bernhard Pfahringer. Machine Learning for Data Streams with Practical Example in MOA. Cambridge, MA: The MIT Press, 2007.

[2] Kempka, Michał, Wojciech Kotłowski, and Manfred K. Warmuth. "Adaptive Scale-Invariant Online Algorithms for Learning Linear Models." CoRR (February 2019). https://arxiv.org/abs/1902.07528.

参考

オブジェクト

関連するトピック