Main Content

incrementalClassificationKernel

インクリメンタル学習用のバイナリ分類カーネル モデル

R2022a 以降

    説明

    関数 incrementalClassificationKernelincrementalClassificationKernel モデル オブジェクトを作成します。これは、インクリメンタル学習用のバイナリ ガウス カーネル分類モデルを表します。このカーネル モデルは、低次元空間のデータを高次元空間にマッピングしてから、高次元空間で線形モデルを当てはめます。サポートされる線形モデルには、サポート ベクター マシン (SVM) 回帰とロジスティック回帰があります。

    他の Statistics and Machine Learning Toolbox™ モデル オブジェクトとは異なり、incrementalClassificationKernel は直接呼び出すことができます。また、モデルをデータに当てはめる前に、パフォーマンス メトリクス構成や目的ソルバーなどの学習オプションを指定できます。incrementalClassificationKernel オブジェクトを作成すると、インクリメンタル学習用に準備されます。

    incrementalClassificationKernel は、インクリメンタル学習に最適です。バイナリ分類用のカーネル モデルに学習させるための従来のアプローチ (データへの当てはめによるモデルの作成、交差検証の実行、ハイパーパラメーターの調整など) については、fitckernel を参照してください。マルチクラスのインクリメンタル学習については、incrementalClassificationECOC および incrementalClassificationNaiveBayes を参照してください。

    作成

    incrementalClassificationKernel モデル オブジェクトは、次のいくつかの方法で作成できます。

    • 関数の直接呼び出しincrementalClassificationKernel を直接呼び出して、インクリメンタル学習オプションを構成するか、学習器固有のオプションを指定します。このアプローチは、データがまだない場合やインクリメンタル学習をすぐに開始したい場合に最適です。

    • 従来式の学習済みモデルの変換 — 学習済みモデル オブジェクトのモデル パラメーターおよびハイパーパラメーターを使用してインクリメンタル学習用のモデルを初期化するには、従来式の学習済みモデル (ClassificationKernel) を関数 incrementalLearner に渡して incrementalClassificationKernel モデル オブジェクトに変換できます。

    • テンプレート オブジェクトの変換 — テンプレート オブジェクト (templateKernel) を関数 incrementalLearner に渡して incrementalClassificationKernel モデル オブジェクトに変換できます。

    • インクリメンタル学習関数の呼び出しfitupdateMetrics、および updateMetricsAndFit は、構成済みの incrementalClassificationKernel モデル オブジェクトおよびデータを入力として受け入れ、入力モデルとデータから学習した情報で更新された incrementalClassificationKernel モデル オブジェクトを返します。

    説明

    Mdl = incrementalClassificationKernel() は、バイナリ ガウス カーネル分類用の既定のインクリメンタル学習モデル オブジェクト Mdl を返します。既定のモデルのプロパティには、未知のモデル パラメーター用のプレースホルダーが含まれています。既定のモデルは、パフォーマンスを追跡したり、予測を生成したりする前に学習させなければなりません。

    Mdl = incrementalClassificationKernel(Name=Value) は、名前と値の引数を使用して、プロパティと追加のオプションを設定します。たとえば、incrementalClassificationKernel(Solver="sgd",LearnRateSchedule="constant") は、確率的勾配降下 (SGD) ソルバーを一定の学習率で使用するように指定します。

    入力引数

    すべて展開する

    名前と値の引数

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

    例: Metrics="logit",MetricsWarmupPeriod=100 は、モデルのパフォーマンス メトリクスをロジスティック損失、メトリクスのウォームアップ期間を 100 に設定します。

    分類オプション

    すべて展開する

    データ変換の再現性を得るための乱数ストリーム。乱数ストリーム オブジェクトとして指定します。詳細については、ランダムな特徴量拡張を参照してください。

    予測子データを高次元空間に変換するために incrementalClassificationKernel で使用されるランダムな基底関数を再現するには、RandomStream を使用します。詳細は、RandStream を使用したグローバル ストリームの管理乱数ストリームの作成と管理 を参照してください。

    例: RandomStream=RandStream("mlfg6331_64")

    R2023b 以降

    予測子データを標準化するためのフラグ。次の表の値として指定します。

    説明
    "auto"incrementalClassificationKernel が予測子変数を標準化する必要があるかどうかを決定します。データの標準化を参照してください。
    trueソフトウェアが予測子データを標準化します。詳細については、データの標準化を参照してください。
    falseソフトウェアが予測子データを標準化しません。

    例: Standardize=true

    データ型: logical | char | string

    SGD ソルバーと ASGD (平均化 SGD) ソルバーのオプション

    すべて展開する

    ミニバッチのサイズ。正の整数として指定します。学習中の各学習サイクルで、incrementalClassificationKernelBatchSize 個の観測値を使用して劣勾配を計算します。

    最後のミニバッチ (fit または updateMetricsAndFit の各関数呼び出しにおける最後の学習サイクル) に含まれる観測値の数は、BatchSize より小さくてもかまいません。たとえば、fit または updateMetricsAndFit に 25 個の観測値を指定した場合、関数は最初の 2 つの学習サイクルに 10 個の観測値を使用し、最後の学習サイクルに 5 の観測値を使用します。

    例: BatchSize=5

    データ型: single | double

    リッジ (L2) 正則化項の強度。非負のスカラーとして指定します。

    例: Lambda=0.01

    データ型: single | double

    初期学習率。"auto" または正のスカラーとして指定します。

    学習率は、目的の劣勾配をスケールすることによって最適化のステップ サイズを制御します。LearnRate は学習率の初期値を指定し、LearnRateSchedule によって後続の学習サイクルの学習率が決まります。

    "auto" を指定した場合、次のようになります。

    • 初期学習率は 0.7 となります。

    • EstimationPeriod > 0 の場合、fit および updateMetricsAndFit は、EstimationPeriod の最後にこの比率を 1/sqrt(1+max(sum(X.^2,2))) に変更します。

    例: LearnRate=0.001

    データ型: single | double | char | string

    学習率スケジュール。次の表の値として指定します。ここで、LearnRate は初期学習率 ɣ0 を指定します。

    説明
    "constant"すべての学習サイクルの学習率を ɣ0 とする。
    "decaying"

    学習サイクル t での学習率を次とする。

    γt=γ0(1+λγ0t)c.

    • λ は Lambda の値です。

    • Solver"sgd" の場合、c = 1 です。

    • Solver"asgd" の場合、c = 0.75 です[4]

    例: LearnRateSchedule="constant"

    データ型: char | string

    適応型スケール不変ソルバーのオプション

    すべて展開する

    各反復での観測値のシャッフル フラグ。logical 1 (true) または 0 (false) として指定します。

    説明
    logical 1 (true)ソフトウェアが、関数 fit でモデルを当てはめる前に、データの入力チャンク内の観測値をシャッフルします。このアクションにより、抽出スキームによって誘発されるバイアスが低減されます。
    logical 0 (false)ソフトウェアが、受信した順序でデータを処理します。

    例: Shuffle=false

    データ型: logical

    パフォーマンス メトリクス オプション

    すべて展開する

    インクリメンタル学習中に追跡するモデルのパフォーマンス メトリクス。組み込みの損失関数の名前、名前の string ベクトル、関数ハンドル (@metricName)、関数ハンドルの構造体配列、または名前、関数ハンドル、構造体配列の cell ベクトルとして指定します。

    Mdl"ウォーム" のとき (IsWarm を参照)、updateMetrics および updateMetricsAndFitMdlMetrics プロパティのパフォーマンス メトリクスを追跡します。

    次の表は、組み込みの損失関数名の一覧です。string ベクトルを使用して、複数指定できます。

    名前説明
    "binodeviance"二項分布からの逸脱度
    "classiferror"分類誤差
    "exponential"指数損失
    "hinge"ヒンジ損失
    "logit"ロジスティック損失
    "quadratic"二次損失

    組み込み損失関数の詳細については、loss を参照してください。

    例: Metrics=["classiferror","hinge"]

    パフォーマンス メトリクスを返すカスタム関数を指定するには、関数ハンドル表記を使用します。関数は次の形式でなければなりません。

    metric = customMetric(C,S)

    • 出力引数 metric は n 行 1 列の数値ベクトルです。ここで、各要素は、学習サイクル中にインクリメンタル学習関数によって処理されたデータの対応する観測値の損失です。

    • 関数名 (customMetric) を指定します。

    • C は n 行 2 列の logical 行列であり、対応する観測値が属するクラスを各行が示します。列の順序は ClassNames プロパティのクラスの順序に対応します。C を作成するには、指定されたデータの各観測値について観測値 p がクラス q に属する場合に C(p,q) = 1 を設定します。行 p の他の要素を 0 に設定します。

    • S は、予測分類スコアの n 行 2 列の数値行列です。Spredict の出力 score に似ています。ここで、行はデータの観測値に対応し、列の順序は ClassNames プロパティのクラスの順序に対応しています。S(p,q) は、クラス q に分類されている観測値 p の分類スコアです。

    複数のカスタム メトリクスを指定し、それぞれにカスタム名を割り当てるには、構造体配列を使用します。組み込みメトリクスとカスタム メトリクスの組み合わせを指定するには、cell ベクトルを使用します。

    例: Metrics=struct(Metric1=@customMetric1,Metric2=@customMetric2)

    例: Metrics={@customMetric1,@customMetric2,"logit",struct(Metric3=@customMetric3)}

    updateMetrics および updateMetricsAndFit は、table で指定したメトリクスを Metrics プロパティに保存します。Metrics のデータ型によって、table の行名が決まります。

    Metrics 値のデータ型Metrics プロパティの行名の説明
    string または文字ベクトル対応する組み込みメトリクスの名前"classiferror" の行名は "ClassificationError"
    構造体配列フィールド名struct(Metric1=@customMetric1) の行名は "Metric1"
    プログラム ファイルに格納されている関数への関数ハンドル関数名@customMetric の行名は "customMetric"
    無名関数CustomMetric_j。ここで、jMetrics のメトリクス j@(C,S)customMetric(C,S)... の行名は CustomMetric_1

    パフォーマンス メトリクス オプションの詳細については、パフォーマンス メトリクスを参照してください。

    データ型: char | string | struct | cell | function_handle

    プロパティ

    すべて展開する

    ほとんどのプロパティは、incrementalClassificationKernel を呼び出すときに名前と値の引数の構文を使用して直接設定できます。incrementalLearner を呼び出して従来式の学習済みモデル オブジェクトまたはモデル テンプレート オブジェクトに変換するときに、いくつかのプロパティを設定できます。プロパティ FittedLossNumTrainingObservationsSolverOptions、および IsWarm は設定できません。

    分類モデルのパラメーター

    この プロパティ は読み取り専用です。

    モデルの学習に使用される一意のクラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として指定します。ClassNames と応答データは同じデータ型でなければなりません。(string 配列は文字ベクトルの cell 配列として扱われます)。

    ClassNames の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、ClassNames は従来式の学習済みモデルの対応するプロパティによって指定されます。

    • それ以外の場合、インクリメンタル近似関数は学習中に ClassNames を推測します。

    データ型: single | double | logical | char | string | cell | categorical

    この プロパティ は読み取り専用です。

    線形モデルの当てはめに使用する損失関数。'hinge' または 'logit' を指定します。

    アルゴリズム損失関数Learner の値
    'hinge'サポート ベクター マシンヒンジ: [y,f(x)]=max[0,1yf(x)]'svm'
    'logit'ロジスティック回帰逸脱度 (ロジスティック): [y,f(x)]=log{1+exp[yf(x)]}'logistic'

    この プロパティ は読み取り専用です。

    カーネル スケール パラメーター。"auto" または正のスカラーとして指定します。incrementalClassificationKernelKernelScale 値を数値スカラーとして格納します。カーネル スケール パラメーターを使用して、特徴量拡張用のランダムな基底が取得されます。詳細については、ランダムな特徴量拡張を参照してください。

    モデル オブジェクトの作成時に "auto" を指定した場合、ヒューリスティック手法を使用して適切なカーネル スケール パラメーターが選択されます。この手法では副標本抽出を使用するので、呼び出すたびに推定値が変化する可能性があります。このため、結果を再現するには、学習の前に rng を使用して乱数シードを設定します。

    KernelScale の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデル オブジェクトまたはテンプレート モデル オブジェクトを変換して Mdl を作成する場合、KernelScale はオブジェクトの対応するプロパティによって指定されます。

    • それ以外の場合、既定値は 1 です。

    データ型: char | string | single | double

    この プロパティ は読み取り専用です。

    線形分類モデルのタイプ。"svm" または "logistic" として指定します。incrementalClassificationKernelLearner 値を文字ベクトルとして格納します。

    次の表では f(x)=T(x)β+b. です。

    • x は p 個の予測子変数による観測値 (行ベクトル) です。

    • T(·) は特徴量を拡張するための観測値 (行ベクトル) の変換です。T(x)p の x を高次元空間 (m) にマッピングします。

    • β は係数のベクトルです。

    • b はスカラー バイアスです。

    アルゴリズム損失関数FittedLoss の値
    "svm"サポート ベクター マシンヒンジ損失: [y,f(x)]=max[0,1yf(x)]'hinge'
    "logistic"ロジスティック回帰逸脱度 (ロジスティック損失): [y,f(x)]=log{1+exp[yf(x)]}'logit'

    Learner の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデル オブジェクトまたはテンプレート モデル オブジェクトを変換して Mdl を作成する場合、Learner はオブジェクトの対応するプロパティによって指定されます。

    • それ以外の場合、既定値は "svm" です。

    データ型: char | string

    この プロパティ は読み取り専用です。

    拡張空間の次元数。"auto" または正の整数として指定します。incrementalClassificationKernelNumExpansionDimensions 値を数値スカラーとして格納します。

    "auto" の場合、2.^ceil(min(log2(p)+5,15)) を使用して次元数が選択されます。p は予測子の数です。詳細については、ランダムな特徴量拡張を参照してください。

    NumExpansionDimensions の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデル オブジェクトまたはテンプレート モデル オブジェクトを変換して Mdl を作成する場合、NumExpansionDimensions はオブジェクトの対応するプロパティによって指定されます。

    • それ以外の場合、既定値は "auto" です。

    データ型: char | string | single | double

    この プロパティ は読み取り専用です。

    予測子変数の数。非負の数値スカラーとして指定します。

    NumPredictors の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、NumPredictors は従来式の学習済みモデルの対応するプロパティによって指定されます。

    • incrementalClassificationKernel を直接呼び出して Mdl を作成する場合、NumPredictors は名前と値の引数の構文を使用して指定できます。

    • それ以外の場合、既定値は 0 で、インクリメンタル近似関数は学習中に予測子データから NumPredictors を推測します。

    データ型: double

    この プロパティ は読み取り専用です。

    インクリメンタル モデル Mdl に当てはめる観測値の数。非負の数値スカラーとして指定します。NumTrainingObservations は、Mdl および学習データを fit または updateMetricsAndFit に渡すときに増加します。

    メモ

    従来式の学習済みモデルを変換して Mdl を作成する場合、incrementalClassificationKernel は、従来式の学習済みモデルに当てはめる観測値の数を NumTrainingObservations に追加しません。

    データ型: double

    この プロパティ は読み取り専用です。

    事前クラス確率。"empirical""uniform"、または数値ベクトルとして指定します。incrementalClassificationKernelPrior 値を数値ベクトルとして格納します。

    説明
    "empirical"インクリメンタル学習関数が、インクリメンタル学習中 (推定期間 EstimationPeriod の後) に応答データで観測されたクラスの相対頻度から事前クラス確率を推定します。
    "uniform"各クラスの事前確率を 1/2 とします。
    数値ベクトル正規化されたカスタム事前確率。Prior の要素の順序は ClassNames プロパティの要素に対応します。

    Prior の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、Prior は従来式の学習済みモデルの対応するプロパティによって指定されます。

    • それ以外の場合、既定値は "empirical" です。

    データ型: single | double | char | string

    この プロパティ は読み取り専用です。

    インクリメンタル学習関数が生の応答値を変換する方法を記述するスコア変換関数。文字ベクトル、string スカラー、または関数ハンドルとして指定します。incrementalClassificationKernelScoreTransform 値を文字ベクトルまたは関数ハンドルとして格納します。

    次の表は、スコア変換で使用可能な組み込み関数の一覧です。

    説明
    "doublelogit"1/(1 + e–2x)
    "invlogit"log(x / (1 – x))
    "ismax"最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを 0 に設定する
    "logit"1/(1 + e–x)
    "none" または "identity"x (変換なし)
    "sign"x < 0 のとき –1
    x = 0 のとき 0
    x > 0 のとき 1
    "symmetric"2x – 1
    "symmetricismax"最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを –1 に設定する
    "symmetriclogit"2/(1 + e–x) – 1

    MATLAB® 関数やユーザー定義関数の場合は、関数ハンドルを入力します。たとえば、ScoreTransform=@function では次のようになります。

    • function は n 行 2 列の行列 (元のスコア) を受け入れ、同じサイズの行列 (変換されたスコア) を返します。列の順序は ClassNames プロパティのクラスの順序に対応します。

    • n は観測値の数であり、行列の行 j には、観測値 j のクラス スコアが格納されます。

    ScoreTransform の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、ScoreTransform は従来式の学習済みモデルの対応するプロパティによって指定されます。

    • それ以外の場合、既定値は "none" (Learner"svm" の場合) または "logit" (Learner"logistic" の場合) です。

    データ型: char | string | function_handle

    学習パラメーター

    この プロパティ は読み取り専用です。

    ハイパーパラメーターの推定のために、パフォーマンス メトリクスの学習または追跡の前にインクリメンタル モデルが処理する観測値の数。非負の整数として指定します。

    メモ

    • Mdl をインクリメンタル学習用に準備する場合 (学習に必要なすべてのハイパーパラメーターを指定する必要があります)、incrementalClassificationKernelEstimationPeriod0 に強制します。

    • Mdl をインクリメンタル学習用に準備しない場合、incrementalClassificationKernelEstimationPeriod1000 に設定します。

    詳細については、推定期間を参照してください。

    データ型: single | double

    R2023b 以降

    この プロパティ は読み取り専用です。

    予測子の平均。数値ベクトルを指定します。

    Mu が空の配列 [] で、Standardize=true が指定されている場合、インクリメンタル近似関数は、MuEstimationPeriod で指定された推定期間中に推定された予測子変数の平均に設定します。

    Mu を直接指定することはできません。

    データ型: single | double

    R2023b 以降

    この プロパティ は読み取り専用です。

    予測子の標準偏差。数値ベクトルを指定します。

    Sigma が空の配列 [] で、Standardize=true が指定されている場合、インクリメンタル近似関数は、SigmaEstimationPeriod で指定された推定期間中に推定された予測子変数の標準偏差に設定します。

    Sigma を直接指定することはできません。

    データ型: single | double

    この プロパティ は読み取り専用です。

    目的関数の最小化手法。"scale-invariant""sgd"、または "asgd" として指定します。incrementalClassificationKernelSolver 値を文字ベクトルとして格納します。

    説明メモ:
    "scale-invariant"

    インクリメンタル学習用の適応型スケール不変ソルバー[1]

    • このアルゴリズムはパラメーターを持たず、予測子のスケールの違いに適応できます。SGD または ASGD を使用する前に、このアルゴリズムを試してください。

    • 関数 fit でモデルを当てはめる前にデータの入力チャンクをシャッフルするには、Shuffletrue に設定します。

    "sgd"確率的勾配降下法 (SGD) [2][3]

    • SGD で効果的に学習させるには、データを標準化し、SGD ソルバーと ASGD (平均化 SGD) ソルバーのオプションにリストされているオプションを使用してハイパーパラメーターの適切な値を指定します。

    • 関数 fit でモデルを当てはめる前にデータの入力チャンクが常にシャッフルされます。

    "asgd"平均化確率的勾配降下法 (ASGD) [4]

    • ASGD で効果的に学習させるには、データを標準化し、SGD ソルバーと ASGD (平均化 SGD) ソルバーのオプションにリストされているオプションを使用してハイパーパラメーターの適切な値を指定します。

    • 関数 fit でモデルを当てはめる前にデータの入力チャンクが常にシャッフルされます。

    Solver の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、このプロパティの設定は関数 incrementalLearner の名前と値の引数 Solver で行います。この引数の既定値は "scale-invariant" です。

    • それ以外の場合、既定値は "scale-invariant" です。

    データ型: char | string

    この プロパティ は読み取り専用です。

    目的ソルバーの構成。構造体配列として指定します。SolverOptions のフィールドは Solver に応じて異なります。

    • SGD ソルバーおよび ASGD ソルバーの場合、構造体配列に SolverBatchSizeLambdaLearnRate、および LearnRateSchedule のフィールドが含まれます。

    • 適応型スケール不変ソルバーの場合、構造体配列に Solver および Shuffle のフィールドが含まれます。

    フィールドの値は、incrementalClassificationKernel を直接呼び出してモデル オブジェクトを作成するとき、または関数 incrementalLearner を使用して従来式の学習済みモデルを変換するときに、対応する名前と値の引数を使用して指定できます。

    データ型: struct

    パフォーマンス メトリクス パラメーター

    この プロパティ は読み取り専用です。

    インクリメンタル モデルがパフォーマンス メトリクスを追跡するかどうかを示すフラグ。logical 0 (false) または 1 (true) として指定します。

    インクリメンタル モデル Mdl は、インクリメンタル近似関数が (EstimationPeriod + MetricsWarmupPeriod) 個の観測値をインクリメンタル モデルに当てはめた後、"ウォーム" (IsWarmtrue となる) になります。

    説明
    true または 1インクリメンタル モデル Mdl がウォームです。この結果、updateMetrics および updateMetricsAndFitMdlMetrics プロパティのパフォーマンス メトリクスを追跡します。
    false または 0updateMetrics および updateMetricsAndFit はパフォーマンス メトリクスを追跡しません。

    データ型: logical

    この プロパティ は読み取り専用です。

    updateMetrics および updateMetricsAndFit によってインクリメンタル学習中に更新されたモデルのパフォーマンス メトリクス。m 行 2 列の table として指定します。ここで、m は、名前と値の引数 Metrics によって指定されたメトリクスの数です。

    Metrics の列には Cumulative および Window のラベルが付けられます。

    • Cumulative:要素 j は、メトリクス j で測定される、モデルがウォーム (IsWarm1) になった時点からの、モデルの性能です。

    • Window:要素 j は、メトリクス j で測定され、MetricsWindowSize プロパティで指定されたウィンドウ内のすべての観測値に対して評価される、モデルの性能です。ソフトウェアは MetricsWindowSize 個の観測値を処理した後、Window を更新します。

    行には、指定したメトリクスのラベルが付けられます。詳細については、incrementalLearner または incrementalClassificationKernel の名前と値の引数 Metrics を参照してください。

    データ型: table

    この プロパティ は読み取り専用です。

    インクリメンタル モデルが Metrics プロパティのパフォーマンス メトリクスを追跡する前に当てはめなければならない観測値の数。非負の整数として指定します。

    MetricsWarmupPeriod の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、このプロパティの設定は関数 incrementalLearner の名前と値の引数 MetricsWarmupPeriod で行います。この引数の既定値は 0 です。

    • それ以外の場合、既定値は 1000 です。

    詳細については、パフォーマンス メトリクスを参照してください。

    データ型: single | double

    この プロパティ は読み取り専用です。

    ウィンドウ パフォーマンス メトリクスの計算に使用する観測値の数。正の整数として指定します。

    MetricsWindowSize の既定値は、モデルの作成方法に応じて異なります。

    • 従来式の学習済みモデルを変換して Mdl を作成する場合、このプロパティの設定は関数 incrementalLearner の名前と値の引数 MetricsWindowSize で行います。この引数の既定値は 200 です。

    • それ以外の場合、既定値は 200 です。

    パフォーマンス メトリクス オプションの詳細については、パフォーマンス メトリクスを参照してください。

    データ型: single | double

    オブジェクト関数

    fitインクリメンタル学習用のカーネル モデルの学習
    updateMetricsカーネル インクリメンタル学習モデルの新しいデータに基づくパフォーマンス メトリクスの更新
    updateMetricsAndFitカーネル インクリメンタル学習モデルの新しいデータに基づくパフォーマンス メトリクスの更新とモデルの学習
    lossデータのバッチでのカーネル インクリメンタル学習モデルの損失
    predictカーネル インクリメンタル学習モデルからの新しい観測の応答予測
    perObservationLossインクリメンタル学習用モデルの観測値ごとの分類誤差
    resetインクリメンタル分類モデルのリセット

    すべて折りたたむ

    事前情報なしでインクリメンタル カーネル モデルを作成します。モデルの性能をストリーミング データで追跡し、モデルをデータに当てはめます。

    バイナリ分類用の既定のインクリメンタル カーネル SVM モデルを作成します。

    Mdl = incrementalClassificationKernel()
    Mdl = 
      incrementalClassificationKernel
    
                        IsWarm: 0
                       Metrics: [1x2 table]
                    ClassNames: [1x0 double]
                ScoreTransform: 'none'
        NumExpansionDimensions: 0
                   KernelScale: 1
    
    
    

    MdlincrementalClassificationKernel モデル オブジェクトです。そのプロパティはすべて読み取り専用です。

    Mdl は、他の演算の実行に使用する前に、データに当てはめなければなりません。

    人の行動のデータ セットを読み込みます。データをランダムにシャッフルします。

    load humanactivity
    n = numel(actid);
    rng(1) % For reproducibility
    idx = randsample(n,n);
    X = feat(idx,:);
    Y = actid(idx);

    データ セットの詳細については、コマンド ラインで Description を入力してください。

    応答は、次の 5 つのクラスのいずれかになります。座る、立つ、歩く、走る、または踊る。被験者が移動しているかどうか (actid > 2) を基準に、応答を二分します。

    Y = Y > 2;

    関数 updateMetricsAndFit を使用して、インクリメンタル モデルを学習データに当てはめます。50 個の観測値のチャンクを一度に処理して、データ ストリームをシミュレートします。各反復で次を行います。

    • 50 個の観測値を処理。

    • 前のインクリメンタル モデルを、入力観測値に当てはめた新しいモデルで上書き。

    • 累積メトリクス、ウィンドウ メトリクス、および学習観測値の数を保存し、インクリメンタル学習中にそれらがどのように進化するかを確認。

    % Preallocation
    numObsPerChunk = 50;
    nchunk = floor(n/numObsPerChunk);
    ce = array2table(zeros(nchunk,2),VariableNames=["Cumulative","Window"]);    
    numtrainobs = zeros(nchunk,1);
    
    % Incremental learning
    for j = 1:nchunk
        ibegin = min(n,numObsPerChunk*(j-1) + 1);
        iend   = min(n,numObsPerChunk*j);
        idx = ibegin:iend;    
        Mdl = updateMetricsAndFit(Mdl,X(idx,:),Y(idx));
        ce{j,:} = Mdl.Metrics{"ClassificationError",:};
        numtrainobs(j) = Mdl.NumTrainingObservations;
    end

    Mdl は、ストリーム内のすべてのデータで学習させた incrementalClassificationKernel モデル オブジェクトです。インクリメンタル学習中およびモデルがウォームアップされた後、updateMetricsAndFit は入力観測値でモデルの性能をチェックし、モデルをその観測値に当てはめます。

    学習観測値の数とパフォーマンス メトリクスのトレース プロットを別々のタイルにプロットします。

    t = tiledlayout(2,1);
    nexttile
    plot(numtrainobs)
    xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,"--")
    xlim([0 nchunk])
    ylabel("Number of Training Observations")
    nexttile
    plot(ce.Variables)
    xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,"--")
    xlim([0 nchunk])
    ylabel("Classification Error")
    legend(ce.Properties.VariableNames,Location="best")
    xlabel(t,"Iteration")

    Figure contains 2 axes objects. Axes object 1 with ylabel Number of Training Observations contains 2 objects of type line, constantline. Axes object 2 with ylabel Classification Error contains 3 objects of type line, constantline. These objects represent Cumulative, Window.

    プロットは、updateMetricsAndFit が次を行うことを示しています。

    • モデルをインクリメンタル学習のすべての反復で当てはめ。

    • パフォーマンス メトリクスをメトリクスのウォームアップ期間後にのみ計算。

    • 累積メトリクスを各反復中に計算。

    • ウィンドウ メトリクスを 200 個の観測値 (4 回の反復) の処理後に計算。

    メトリクスのウォームアップ期間とメトリクス ウィンドウ サイズを指定して、インクリメンタル カーネル SVM 学習器を準備します。SGD を使用してモデルに学習させ、SGD バッチ サイズ、学習率、および正則化パラメーターを調整します。

    人の行動のデータ セットを読み込みます。データをランダムにシャッフルします。

    load humanactivity
    n = numel(actid);
    rng("default") % For reproducibility
    idx = randsample(n,n);
    X = feat(idx,:);
    Y = actid(idx);

    データ セットの詳細については、コマンド ラインで Description を入力してください。

    応答は、次の 5 つのクラスのいずれかになります。座る、立つ、歩く、走る、または踊る。被験者が移動しているかどうか (actid > 2) を基準に、応答を二分します。

    Y = Y > 2;

    バイナリ分類用のインクリメンタル カーネル モデルを作成します。次のようにモデルを構成します。

    • SGD ソルバーを指定。

    • リッジ正則化パラメーター値 0.001、SGD バッチ サイズ 20、および学習率 0.002 で、問題に対して十分に機能すると仮定。

    • メトリクスのウォームアップ期間を観測値 5000 個に指定。

    • メトリクス ウィンドウ サイズを観測値 500 個に指定。

    • 分類およびヒンジ エラー メトリクスを追跡して、モデルの性能を測定。

    Mdl = incrementalClassificationKernel( ...
        Solver="sgd",Lambda=0.001,BatchSize=20,LearnRate=0.002, ...
        MetricsWarmupPeriod=5000,MetricsWindowSize=500, ...
        Metrics=["classiferror","hinge"])
    Mdl = 
      incrementalClassificationKernel
    
                        IsWarm: 0
                       Metrics: [2x2 table]
                    ClassNames: [1x0 double]
                ScoreTransform: 'none'
        NumExpansionDimensions: 0
                   KernelScale: 1
    
    
    

    Mdl はインクリメンタル学習用に構成された incrementalClassificationKernel モデル オブジェクトです。

    関数 updateMetricsAndFit を使用して、インクリメンタル モデルを残りのデータに当てはめます。各反復で次を行います。

    • 50 個の観測値のチャンクを処理して、データ ストリームをシミュレート。チャンクのサイズと SGD バッチ サイズは異なることに注意してください。

    • 前のインクリメンタル モデルを、入力観測値に当てはめた新しいモデルで上書き。

    • 累積メトリクス、ウィンドウ メトリクス、および学習観測値の数を保存し、インクリメンタル学習中にそれらがどのように進化するかを確認。

    % Preallocation
    numObsPerChunk = 50;
    nchunk = floor(n/numObsPerChunk);
    ce = array2table(zeros(nchunk,2),VariableNames=["Cumulative","Window"]);
    hinge = array2table(zeros(nchunk,2),VariableNames=["Cumulative","Window"]);
    numtrainobs = zeros(nchunk,1);
    % Incremental fitting
    for j = 1:nchunk
        ibegin = min(n,numObsPerChunk*(j-1) + 1);
        iend   = min(n,numObsPerChunk*j);
        idx = ibegin:iend;    
        Mdl = updateMetricsAndFit(Mdl,X(idx,:),Y(idx));
        ce{j,:} = Mdl.Metrics{"ClassificationError",:};
        hinge{j,:} = Mdl.Metrics{"HingeLoss",:};
        numtrainobs(j) = Mdl.NumTrainingObservations;
    end

    Mdl は、ストリーム内のすべてのデータで学習させた incrementalClassificationKernel モデル オブジェクトです。インクリメンタル学習中およびモデルがウォームアップされた後、updateMetricsAndFit は入力観測値でモデルの性能をチェックし、モデルをその観測値に当てはめます。

    学習観測値の数とパフォーマンス メトリクスのトレース プロットを別々のタイルにプロットします。

    t = tiledlayout(3,1);
    nexttile
    plot(numtrainobs)
    xlim([0 nchunk])
    ylabel(["Number of","Training Observations"])
    xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,"--")
    nexttile
    plot(ce.Variables)
    xlim([0 nchunk])
    ylabel("Classification Error")
    xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,"--")
    legend(ce.Properties.VariableNames,Location="best")
    nexttile
    plot(hinge.Variables)
    xlim([0 nchunk])
    ylabel("Hinge Loss")
    xline(Mdl.MetricsWarmupPeriod/numObsPerChunk,"--")
    legend(hinge.Properties.VariableNames,Location="best")
    xlabel(t,"Iteration")

    Figure contains 3 axes objects. Axes object 1 with ylabel Number of Training Observations contains 2 objects of type line, constantline. Axes object 2 with ylabel Classification Error contains 3 objects of type line, constantline. These objects represent Cumulative, Window. Axes object 3 with ylabel Hinge Loss contains 3 objects of type line, constantline. These objects represent Cumulative, Window.

    プロットは、updateMetricsAndFit が次を行うことを示しています。

    • モデルをインクリメンタル学習のすべての反復で当てはめ。

    • パフォーマンス メトリクスをメトリクスのウォームアップ期間後にのみ計算。

    • 累積メトリクスを各反復中に計算。

    • ウィンドウ メトリクスを 500 個の観測値 (10 回の反復) の処理後に計算。

    fitckernel を使用してバイナリ分類用のカーネル モデルに学習させ、それをインクリメンタル学習器に変換し、その性能を追跡し、ストリーミング データに当てはめます。学習オプションを従来式からインクリメンタル学習に引き継ぎます。

    データの読み込みと前処理

    人の行動のデータ セットを読み込みます。データをランダムにシャッフルします。

    load humanactivity
    rng(1) % For reproducibility
    n = numel(actid);
    idx = randsample(n,n);
    X = feat(idx,:);
    Y = actid(idx);

    データ セットの詳細については、コマンド ラインで Description を入力してください。

    応答は、次の 5 つのクラスのいずれかになります。座る、立つ、歩く、走る、または踊る。被験者が移動しているかどうか (actid > 2) を基準に、応答を二分します。

    Y = Y > 2;

    被験者が静止 (Y = false) していたときの収集データが、被験者が移動していたときのデータの倍の品質であると仮定します。静止している被験者から収集した観測値に 2 を割り当て、移動している被験者から収集した観測値に 1 を割り当てる重み変数を作成します。

    W = ones(n,1) + ~Y;

    バイナリ分類用のカーネル モデルの学習

    バイナリ分類用のカーネル モデルを、データの半分から取った無作為標本に当てはめます。

    idxtt = randsample([true false],n,true);
    Mdl = fitckernel(X(idxtt,:),Y(idxtt),Weights=W(idxtt))
    Mdl = 
      ClassificationKernel
                  ResponseName: 'Y'
                    ClassNames: [0 1]
                       Learner: 'svm'
        NumExpansionDimensions: 2048
                   KernelScale: 1
                        Lambda: 8.2967e-05
                 BoxConstraint: 1
    
    
    

    Mdl は、バイナリ分類用の従来式の学習済みカーネル モデルを表す ClassificationKernel モデル オブジェクトです。

    学習済みモデルの変換

    従来式の学習済み分類モデルをインクリメンタル学習用のモデルに変換します。

    IncrementalMdl = incrementalLearner(Mdl)
    IncrementalMdl = 
      incrementalClassificationKernel
    
                        IsWarm: 1
                       Metrics: [1x2 table]
                    ClassNames: [0 1]
                ScoreTransform: 'none'
        NumExpansionDimensions: 2048
                   KernelScale: 1
    
    
    

    IncrementalMdl はインクリメンタル学習用に構成された incrementalClassificationKernel モデル オブジェクトです。

    パフォーマンス メトリクスの追跡とモデルの当てはめの個別の実行

    関数 updateMetrics および fit を使用して、残りのデータに対してインクリメンタル学習を実行します。50 個の観測値を一度に処理して、データ ストリームをシミュレートします。各反復で次を行います。

    1. updateMetrics を呼び出し、観測値の入力チャンクを所与として、モデルの分類誤差の累積とウィンドウを更新します。前のインクリメンタル モデルを上書きして、Metrics プロパティを更新します。関数がモデルをデータ チャンクに当てはめないことに注意してください。チャンクはモデルに対して "新しい" データです。観測値の重みを指定します。

    2. fit を呼び出して、観測値の入力チャンクにモデルを当てはめます。前のインクリメンタル モデルを上書きして、モデル パラメーターを更新します。観測値の重みを指定します。

    3. 分類誤差と学習観測値の数を保存します。

    % Preallocation
    idxil = ~idxtt;
    nil = sum(idxil);
    numObsPerChunk = 50;
    nchunk = floor(nil/numObsPerChunk);
    ce = array2table(zeros(nchunk,2),VariableNames=["Cumulative","Window"]);
    numtrainobs = zeros(nchunk,1);
    Xil = X(idxil,:);
    Yil = Y(idxil);
    Wil = W(idxil);
    
    % Incremental fitting
    for j = 1:nchunk
        ibegin = min(nil,numObsPerChunk*(j-1) + 1);
        iend   = min(nil,numObsPerChunk*j);
        idx = ibegin:iend;
        IncrementalMdl = updateMetrics(IncrementalMdl,Xil(idx,:),Yil(idx), ...
            Weights=Wil(idx));
        ce{j,:} = IncrementalMdl.Metrics{"ClassificationError",:};
        IncrementalMdl = fit(IncrementalMdl,Xil(idx,:),Yil(idx), ...
            Weights=Wil(idx));
        numtrainobs(j) = IncrementalMdl.NumTrainingObservations;
    end

    IncrementalMdl は、ストリーム内のすべてのデータで学習させた incrementalClassificationKernel モデル オブジェクトです。

    あるいは、updateMetricsAndFit を使用して、新しいデータ チャンクに対するモデルのパフォーマンス メトリクスを更新し、モデルをデータに当てはめることもできます。

    学習観測値の数とパフォーマンス メトリクスのトレース プロットをプロットします。

    t = tiledlayout(2,1);
    nexttile
    plot(numtrainobs)
    xlim([0 nchunk])
    ylabel("Number of Training Observations")
    nexttile
    plot(ce.Variables)
    xlim([0 nchunk])
    legend(ce.Properties.VariableNames)
    ylabel("Classification Error")
    xlabel(t,"Iteration")

    Figure contains 2 axes objects. Axes object 1 with ylabel Number of Training Observations contains an object of type line. Axes object 2 with ylabel Classification Error contains 2 objects of type line. These objects represent Cumulative, Window.

    累積の損失は安定しており徐々に減少しますが、ウィンドウの損失には急な変動があります。

    詳細

    すべて展開する

    アルゴリズム

    すべて展開する

    参照

    [1] 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.

    [2] Langford, J., L. Li, and T. Zhang. “Sparse Online Learning Via Truncated Gradient.” J. Mach. Learn. Res., Vol. 10, 2009, pp. 777–801.

    [3] Shalev-Shwartz, S., Y. Singer, and N. Srebro. “Pegasos: Primal Estimated Sub-Gradient Solver for SVM.” Proceedings of the 24th International Conference on Machine Learning, ICML ’07, 2007, pp. 807–814.

    [4] Xu, Wei. “Towards Optimal One Pass Large Scale Learning with Averaged Stochastic Gradient Descent.” CoRR, abs/1107.2490, 2011.

    [5] Rahimi, A., and B. Recht. “Random Features for Large-Scale Kernel Machines.” Advances in Neural Information Processing Systems. Vol. 20, 2008, pp. 1177–1184.

    [6] Le, Q., T. Sarlós, and A. Smola. “Fastfood — Approximating Kernel Expansions in Loglinear Time.” Proceedings of the 30th International Conference on Machine Learning. Vol. 28, No. 3, 2013, pp. 244–252.

    [7] Huang, P. S., H. Avron, T. N. Sainath, V. Sindhwani, and B. Ramabhadran. “Kernel methods match Deep Neural Networks on TIMIT.” 2014 IEEE International Conference on Acoustics, Speech and Signal Processing. 2014, pp. 205–209.

    バージョン履歴

    R2022a で導入

    すべて展開する