Main Content

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

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

インクリメンタル学習モデルのオブジェクトでは、関数がインクリメンタル近似およびモデルの性能評価を実装する方法を完全に指定します。インクリメンタル学習モデルの構成 (または準備) を行うには、オブジェクトを直接呼び出すか、従来式の学習済みモデルをいずれかのオブジェクトに変換することによってモデルを作成します。次の表は、使用可能なモデル タイプ、インクリメンタル学習用のモデル オブジェクト、および変換関数の一覧です。

目的モデル タイプインクリメンタル学習用のモデル オブジェクト変換関数
バイナリ分類ガウス カーネルによる線形サポート ベクター マシン (SVM) 回帰およびロジスティック回帰incrementalClassificationKernel

incrementalLearner でカーネル分類モデル (ClassificationKernel) を変換します。

線形 SVM 回帰およびロジスティック回帰incrementalClassificationLinear

incrementalLearner で線形 SVM モデル (ClassificationSVM または CompactClassificationSVM) を変換します。

incrementalLearner で線形分類モデル (ClassificationLinear) を変換します。

マルチクラス分類バイナリ学習器を含む誤り訂正出力符号 (ECOC) モデルincrementalClassificationECOC

incrementalLearner でバイナリ学習器を含む ECOC モデル (ClassificationECOC または CompactClassificationECOC) を変換します。

正規、多項、または多変量多項予測子条件付き分布による単純ベイズincrementalClassificationNaiveBayes

incrementalLearner で完全な単純ベイズ分類モデル (ClassificationNaiveBayes) を変換します。

回帰ガウス カーネルによる最小二乗回帰および線形 SVM 回帰incrementalRegressionKernel

incrementalLearner でカーネル回帰モデル (RegressionKernel) を変換します。

最小二乗回帰および線形 SVM 回帰incrementalRegressionLinear

incrementalLearner で線形 SVM 回帰モデル (RegressionSVM または CompactRegressionSVM) を変換します。

incrementalLearner で線形回帰モデル (RegressionLinear) を変換します。

インクリメンタル モデルを作成するためにどの方法を選択するかは、所有している情報や求めるものによって異なります。

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

  • モデル変換: 関数 incrementalLearner を使用して、従来式の学習済みモデルをインクリメンタル学習器に変換し、インクリメンタル学習用にモデルを初期化します。この関数は、データから学習させた従来式の学習済みモデルの情報を渡します。従来式の学習済みモデルを変換するには、モデルを当てはめることができるラベル付きデータのセットがなければなりません。

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

次の構成については、使用する方法に関わりなく検討してください。

  • モデルの性能評価設定 (測定するパフォーマンス メトリクスなど)。詳細については、モデル オプションおよびデータ プロパティを参照してください。

  • ECOC モデルの場合、バイナリ学習器の符号化設計行列。

  • カーネル モデルの場合:

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

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

    • ランダムな特徴量拡張のハイパーパラメーター (カーネル スケール パラメーターや拡張空間の次元数など)

  • 線形モデルの場合:

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

    • 係数の初期値

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

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

  • 単純ベイズモデルの場合、予測子変数の条件付き分布。データ セットには、実数予測子を正規分布とすること、およびカテゴリカル予測子 (ここでレベルは数値スカラー) を多変量多項とすることの指定が可能です。各予測子がカウントである bag-of-tokens モデルの場合、すべての予測子が結合されて多項となることの指定が可能です。

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

他の機械学習モデル オブジェクトを操作する場合とは異なり、インクリメンタル学習モデルは、データについての知識がほとんどなくても、対応するオブジェクトを直接呼び出すことで作成できます。たとえば、次のコードは線形回帰用の既定のインクリメンタル モデルと、5 個のクラスを含むデータ ストリームの単純ベイズ分類モデルを作成します。

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

  • 線形モデルとカーネル モデルの場合、モデルを直接作成するために必要な唯一の情報は、機械学習の問題が分類または回帰のどちらであるかということです。仕様によっては評価期間も必要になることがあります。

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

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

Mdl = incrementalClassificationLinear(Learner="logistic", ...
    Beta=beta,Bias=bias,MetricsWarmupPeriod=500);

以下の表では、インクリメンタル学習の重要な要素に関するオプションの主なものを簡単に説明しています。すべてのオプションの詳細については、各インクリメンタル モデル オブジェクトのページのプロパティの節を参照してください。

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

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

モデル タイプモデル オプションおよびデータ プロパティ説明
分類ClassNames分類用。観測ラベルの予想クラス名
ECOC 分類CodingMatrix*クラス割り当て符号
CodingName*符号化設計名
カーネル分類またはカーネル回帰KernelScaleランダムな特徴量拡張にソフトウェアが使用するカーネル スケール パラメーター
Learner線形 SVM、ロジスティック回帰、最小二乗回帰などのモデル タイプ
NumExpansionDimensions拡張空間の次元数
線形分類または線形回帰Betaインクリメンタル近似の初期値としても機能する線形係数
Biasインクリメンタル近似の初期値としても機能するモデル切片
Learner線形 SVM、ロジスティック回帰、最小二乗回帰などのモデル タイプ
単純ベイズ分類Cost誤分類コスト行列

*CodingMatrix プロパティと CodingName プロパティは、名前と値の引数 Coding を使用して指定できます。その他のプロパティは、オブジェクトを呼び出すときに名前と値の引数の構文で同じ名前の引数を使用して設定します。たとえば、incrementalClassificationKernel(Learner="logistic")Learner プロパティを "logistic" に設定します。

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

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

モデル タイプ学習およびソルバーのオプションとプロパティ説明
カーネル分類またはカーネル回帰EstimationPeriod事前学習の推定期間
Solver目的関数の最適化アルゴリズム
線形分類または線形回帰EstimationPeriod事前学習の推定期間
Solver目的関数の最適化アルゴリズム
Standardize予測子データを標準化するためのフラグ
Lambdaリッジ ペナルティ。SGD 最適化のために調整が必要なモデルのハイパーパラメーター
BatchSizeミニバッチ サイズ。SGD ハイパーパラメーター
LearnRate学習率。SGD ハイパーパラメーター
Mu**予測子変数の平均
Sigma**予測子変数の標準偏差
単純ベイズ分類DistributionParameters**

学習済み分布パラメーター。

  • クラスが与えられている条件付き正規分布をもつ各予測子の場合、当てはめられた重み付き平均および標準偏差。

  • クラスが与えられている条件付き結合多項予測子の場合、予測子が表しているレベルの相対的頻度。

  • クラスが与えられている条件付き各多変量多項の場合、予測子のレベルの相対的頻度から成るベクトル。

**MuSigma、および DistributionParameters の各プロパティは指定できません。その他のプロパティは、オブジェクトを呼び出すときに名前と値の引数の構文を使用して設定できます。

  • Mu および Sigma (線形モデル) — Standardize=true と正の推定期間が設定されていて、プロパティが空の場合、インクリメンタル近似関数は、推定期間の観測値を使用して平均と標準偏差を推定します。詳細については、データの標準化を参照してください。

  • DistributionParameters (単純ベイズ分類モデル) — このプロパティは fit または updateMetricsAndFit でデータに当てはめなければなりません。

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

  • 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名前と値の引数 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 または updateMetricsAndFitMetrics プロパティのパフォーマンス メトリクスを追跡する必要がある場合は、メトリクスのウォームアップ期間を指定します。この場合、IsWarm プロパティは false となり、インクリメンタル近似関数 fit または updateMetricsAndFit に入力データとモデルを渡さなければなりません。

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

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

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

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

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

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

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

インクリメンタル モデルの作成と初期化の容易さは、柔軟性とトレードオフの関係にあります。ソフトウェアは、従来の学習で学習された近似パラメーター、ハイパーパラメーター値、およびデータ特性がインクリメンタル学習にも適切であることを前提としています。そのため、incrementalLearner を呼び出すときに、対応する学習済みのオプションまたは調整済みのオプションを設定することはできません。

次の表は、関数 incrementalLearnerMdl から転送するか他の値から推論する IncrementalMdl の主な読み取り専用プロパティを示しています。詳細については、各関数 incrementalLearner のページの出力引数に関する説明を参照してください。

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

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

回帰EpsilonSVM 学習器用。イプシロン不感応区間の幅の半分
ResponseTransform予測された応答に適用する関数
ECOC 分類BinaryLearners学習済みバイナリ学習器。モデル オブジェクトの cell 配列
CodingMatrixバイナリ学習器のクラス割り当て符号
CodingName符号化設計名
カーネル分類またはカーネル回帰KernelScaleカーネル スケール パラメーター
Learner線形モデルのタイプ
NumExpansionDimensions拡張空間の次元数。正の整数
線形分類または線形回帰Beta線形モデル係数
Biasモデルの切片
Learner線形モデルのタイプ
MuSVM モデル オブジェクト用。予測子変数の平均
SigmaSVM モデル オブジェクト用。予測子変数の標準偏差
単純ベイズ分類DistributionNames

以下の値のいずれかをもつ、クラスが与えられた予測子変数の条件付き分布:

  • 対応する予測子が正規である場合は、エントリ "normal" をもつ長さ NumPredictors の cell ベクトル、または対応する予測子が多変量多項である場合は、"mvmn"

  • すべての予測子変数が多項分布を構成する場合、"mn"

カーネル分布をもつ予測子が 1 つ以上含まれている単純ベイズ分類モデルを変換すると、incrementalLearner はエラーを生成します。

DistributionParameters

各クラスが与えられた各条件付き予測子分布の当てはめられた分布パラメーター。NumPredictorsK 列の cell 行列。

CategoricalPredictorsカテゴリカル予測子のインデックスの数値ベクトル
CategoricalLevels多変量多項予測子のレベル。長さ NumPredictors の cell ベクトル

メモ

  • IncrementalMdlNumTrainingObservations プロパティには、Mdl の学習に使用した観測値は含まれません。fit または updateMetricsAndFit を呼び出すときにインクリメンタル学習に使用される観測値だけが含まれます。

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

    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);

参照

[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." Preprint, submitted February 10, 2019. https://arxiv.org/abs/1902.07528.

参考

オブジェクト

関連するトピック