Main Content

incrementalLearner

マルチクラス誤り訂正出力符号 (ECOC) モデルをインクリメンタル学習器に変換

R2022a 以降

    説明

    IncrementalMdl = incrementalLearner(Mdl) は、マルチクラス分類用の従来式の学習済みマルチクラス誤り訂正出力符号 (ECOC) モデル Mdl のハイパーパラメーターと係数を使用して、インクリメンタル学習用の ECOC モデル IncrementalMdl を返します。プロパティ値は Mdl から得られた知識を反映しているため、IncrementalMdl は新しい観測値に対してラベルの予測を行うことができます。また "ウォーム" となるため、予測性能が追跡されます。

    IncrementalMdl = incrementalLearner(Mdl,Name=Value) は、1 つ以上の名前と値の引数によって指定された追加オプションを使用します。一部のオプションでは、予測性能の追跡を行う前に IncrementalMdl に学習させる必要があります。たとえば、MetricsWarmupPeriod=50,MetricsWindowSize=100 は、50 個の観測値から成る、パフォーマンス メトリクスの追跡前のインクリメンタル学習の予備期間を指定し、ウィンドウ パフォーマンス メトリクスを更新する前に 100 個の観測値を処理することを指定します。

    すべて折りたたむ

    fitcecoc を使用してマルチクラス ECOC 分類モデルに学習させ、それをインクリメンタル学習器に変換します。

    データの読み込み

    人の行動のデータ セットを読み込みます。

    load humanactivity

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

    ECOC モデルの学習

    マルチクラス ECOC 分類モデルをデータ セット全体に当てはめます。

    Mdl = fitcecoc(feat,actid);

    Mdl は従来式の学習済み ECOC 分類モデルを表す ClassificationECOC モデル オブジェクトです。

    学習済みモデルの変換

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

    IncrementalMdl = incrementalLearner(Mdl) 
    IncrementalMdl = 
      incrementalClassificationECOC
    
                IsWarm: 1
               Metrics: [1×2 table]
            ClassNames: [1 2 3 4 5]
        ScoreTransform: 'none'
        BinaryLearners: {10×1 cell}
            CodingName: 'onevsone'
              Decoding: 'lossweighted'
    
    
      Properties, Methods
    
    

    IncrementalMdl は、インクリメンタル学習用に準備された incrementalClassificationECOC モデル オブジェクトです。

    • 関数 incrementalLearner は、バイナリ学習器の符号化設計とモデル パラメーターを、Mdl が学習データから抽出する他の情報と共に渡して、インクリメンタル学習器を初期化します。

    • IncrementalMdl はウォーム (IsWarm1) です。これは、インクリメンタル学習関数がパフォーマンス メトリクスの追跡と予測を実行できることを意味します。

    応答予測

    従来式の学習済みモデルから変換して作成したインクリメンタル学習器は、追加の処理なしで予測を生成できます。

    両方のモデルを使用して、すべての観測値の分類スコアを予測します。

    [~,ttscores] = predict(Mdl,feat);
    [~,ilcores] = predict(IncrementalMdl,feat);
    compareScores = norm(ttscores - ilcores)
    compareScores = 0
    

    モデルによって生成されたスコアの差は 0 です。

    学習済みの ECOC モデルを使用して、インクリメンタル学習器を初期化します。メトリクスのウォームアップ期間とメトリクス ウィンドウ サイズを指定して、インクリメンタル学習器を準備します。

    人の行動のデータ セットを読み込みます。

    load humanactivity

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

    データをランダムに 2 分割します。最初の半分は従来式のモデルの学習用、残りの半分はインクリメンタル学習用です。

    n = numel(actid);
    
    rng(1) % For reproducibility
    cvp = cvpartition(n,Holdout=0.5);
    idxtt = training(cvp);
    idxil = test(cvp);
    
    % First half of data
    Xtt = feat(idxtt,:);
    Ytt = actid(idxtt);
    
    % Second half of data
    Xil = feat(idxil,:);
    Yil = actid(idxil);

    データの最初の半分に ECOC モデルを当てはめます。

    Mdl = fitcecoc(Xtt,Ytt);

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

    • メトリクスのウォームアップ期間は観測値 2000 個

    • メトリクス ウィンドウ サイズは観測値 500 個

    IncrementalMdl = incrementalLearner(Mdl, ...
        MetricsWarmupPeriod=2000,MetricsWindowSize=500);

    既定では、incrementalClassificationECOC は分類誤差損失を使用してモデルの性能を測定します。

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

    • 20 個の観測値を一度に処理して、データ ストリームをシミュレート。

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

    • 1 番目のバイナリ学習器の 1 番目のモデル係数 β11、累積メトリクス、およびウィンドウ メトリクスを保存し、インクリメンタル学習中にそれらがどのように進化するかを確認。

    % Preallocation
    nil = numel(Yil);
    numObsPerChunk = 20;
    nchunk = ceil(nil/numObsPerChunk);
    ce = array2table(zeros(nchunk,2),VariableNames=["Cumulative","Window"]);
    beta11 = [IncrementalMdl.BinaryLearners{1}.Beta(1); zeros(nchunk,1)];  
    
    % Incremental fitting
    for j = 1:nchunk
        ibegin = min(nil,numObsPerChunk*(j-1) + 1);
        iend   = min(nil,numObsPerChunk*j);
        idx = ibegin:iend;    
        IncrementalMdl = updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));
        ce{j,:} = IncrementalMdl.Metrics{"ClassificationError",:};
        beta11(j+1) = IncrementalMdl.BinaryLearners{1}.Beta(1);
    end

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

    パフォーマンス メトリクスと β11 が学習中にどのように進化するかを確認するには、それらを別々のタイルにプロットします。

    t = tiledlayout(2,1);
    nexttile
    plot(beta11)
    ylabel("\beta_{11}")
    xlim([0 nchunk]);
    xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,"r-.");
    nexttile
    plot(ce.Variables);
    xlim([0 nchunk]);
    ylabel("Classification Error")
    xline(IncrementalMdl.MetricsWarmupPeriod/numObsPerChunk,"r-.");
    legend(ce.Properties.VariableNames,Location="best")
    xlabel(t,"Iteration")

    Figure contains 2 axes objects. Axes object 1 with ylabel \beta_{11} 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 が次のアクションを実行することを示しています。

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

    • パフォーマンス メトリクスをメトリクスのウォームアップ期間 (赤色の垂直な線) 後にのみ計算。

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

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

    入力引数

    すべて折りたたむ

    マルチクラス分類用の従来式の学習済み ECOC モデル。fitcecoc によって返される ClassificationECOC モデル オブジェクト、または compact によって返される CompactClassificationECOC モデル オブジェクトとして指定します。

    メモ

    • Mdl に学習させるときは、fitcecoc の名前と値の引数 Learners を指定して、サポート ベクター マシン (SVM) バイナリ学習器テンプレート (templateSVM) または線形分類モデル バイナリ学習器テンプレート (templateLinear) を使用しなければなりません。

    • インクリメンタル学習関数は、数値の入力予測子データのみをサポートします。Mdl に categorical データで学習させた場合、インクリメンタル学習関数を使用するには符号化したバージョンの categorical データを準備する必要があります。dummyvar を使用して、各カテゴリカル変数をダミー変数で構成される数値行列に変換します。その後、学習関数での categorical データの符号化と同じ方法で、すべてのダミー変数行列とその他の数値予測子を連結します。詳細については、ダミー変数を参照してください。

    名前と値の引数

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

    例: Decoding="lossbased",MetricsWindowSize=100 は、損失に基づく復号化方式を使用し、ウィンドウ パフォーマンス メトリクスを更新する前に 100 個の観測値を処理することを指定します。

    ECOC 分類器オプション

    すべて折りたたむ

    バイナリ学習器損失関数。組み込みの損失関数の名前または関数ハンドルとして指定します。

    • 次の表で、組み込み関数について説明します。ここで、yj は特定のバイナリ学習器のクラス ラベル (集合 {–1,1,0} 内)、sj は観測値 j のスコア、g(yj,sj) はバイナリ損失の式です。

      説明スコア領域g(yj,sj)
      "binodeviance"二項分布からの逸脱度(–∞,∞)log[1 + exp(–2yjsj)]/[2log(2)]
      "exponential"指数(–∞,∞)exp(–yjsj)/2
      "hamming"ハミング[0,1] または (–∞,∞)[1 – sign(yjsj)]/2
      "hinge"ヒンジ(–∞,∞)max(0,1 – yjsj)/2
      "linear"線形(–∞,∞)(1 – yjsj)/2
      "logit"ロジスティック(–∞,∞)log[1 + exp(–yjsj)]/[2log(2)]
      "quadratic"2 次[0,1][1 – yj(2sj – 1)]2/2

      バイナリ損失は、yj = 0 の場合に損失が 0.5 になるように正規化されます。また、各クラスについて平均のバイナリ損失が計算されます[1]

    • カスタム バイナリ損失関数の場合は関数ハンドルを指定します。たとえば、customFunction の場合は BinaryLoss=@customFunction を指定します。

      customFunction の形式は次のとおりです。

      bLoss = customFunction(M,s)

      • MMdl.CodingMatrix に格納された K 行 B 列の符号化行列です。

      • s は 1 行 B 列の分類スコアの行ベクトルです。

      • bLoss は分類損失です。このスカラーは、特定のクラスのすべての学習器についてバイナリ損失を集計します。たとえば、平均バイナリ損失を使用して、各クラスの学習器の損失を集計できます。

      • K は、クラスの数です。

      • B はバイナリ学習器の数です。

      カスタム バイナリ損失関数の例については、カスタム バイナリ損失関数の使用による ECOC モデルのテスト標本ラベルの予測を参照してください。この例は従来式の学習済みモデルの例です。この例で示しているように、インクリメンタル学習用のカスタム損失関数を定義できます。

    詳細については、バイナリ損失を参照してください。

    データ型: char | string | function_handle

    復号化方式。"lossweighted" または "lossbased" として指定します。

    ソフトウェアでバイナリ損失をどのように集計して各観測値の予測クラスを判定するかは、ECOC モデルの復号化方式で指定します。ソフトウェアでは 2 つの復号化方式をサポートしています。

    • "lossweighted" — 観測値の予測クラスは、バイナリ学習器におけるバイナリ損失の合計が最小になるクラスに対応します。

    • "lossbased" — 観測値の予測クラスは、バイナリ学習器におけるバイナリ損失の平均が最小になるクラスに対応します。

    詳細については、バイナリ損失を参照してください。

    例: Decoding="lossbased"

    データ型: char | string

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

    すべて折りたたむ

    関数 updateMetrics または updateMetricsAndFit を使ってインクリメンタル学習中に追跡するモデルのパフォーマンス メトリクス。"classiferror" (分類誤差または誤分類誤差率)、関数ハンドル (@metricName など)、関数ハンドルの構造体配列、または名前、関数ハンドル、構造体配列の cell ベクトルとして指定します。

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

    metric = customMetric(C,S)

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

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

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

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

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

    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

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

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

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

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

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

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

    例: MetricsWarmupPeriod=50

    データ型: single | double

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

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

    例: MetricsWindowSize=250

    データ型: single | double

    バイナリ学習器のメトリクスの更新のフラグ。logical 0 (false) または 1 (true) として指定します。

    値が true の場合、BinaryLearners プロパティに格納されたバイナリ学習器の Metrics プロパティを使用してソフトウェアでバイナリ学習器のパフォーマンス メトリクスが追跡されます。例については、モデルとバイナリ学習器のパフォーマンス メトリクスを追跡するためのインクリメンタル モデルの構成を参照してください。

    例: UpdateBinaryLearnerMetrics=true

    データ型: logical

    出力引数

    すべて折りたたむ

    インクリメンタル学習用の ECOC 分類モデル。incrementalClassificationECOC モデル オブジェクトとして返されます。IncrementalMdl は新しいデータに基づいて予測を生成するようにも構成されます (predict を参照)。

    インクリメンタル学習用に IncrementalMdl を初期化するために、incrementalLearner は、次の表に示す Mdl のプロパティの値を IncrementalMdl の対応するプロパティに渡します。

    プロパティ説明
    BinaryLearners学習済みバイナリ学習器。モデル オブジェクトの cell 配列。Mdl の学習器は従来式の学習済みバイナリ学習器で、IncrementalMdl の学習器は従来式の学習済みバイナリ学習器から変換されたインクリメンタル学習用のバイナリ学習器です。
    BinaryLossバイナリ学習器損失関数。文字ベクトル。名前と値の引数 BinaryLoss を使用して異なる値を指定できます。
    ClassNamesバイナリ分類のクラス ラベル。名前のリスト
    CodingMatrixバイナリ学習器のクラス割り当て符号。数値行列
    CodingName符号化設計名。文字ベクトル
    NumPredictors予測子の数。正の整数
    Prior前のクラス ラベルの分布。数値ベクトル

    MdlCost プロパティは、incrementalClassificationECOC でサポートされないため、incrementalLearner で使用されないことに注意してください。

    詳細

    すべて折りたたむ

    インクリメンタル学習

    "インクリメンタル学習" ("オンライン学習") は、予測子変数の分布、予測関数や目的関数の素性 (調整パラメーターの値を含む)、観測値にラベル付けがされているか等についてほぼ知識が無い時に、データ ストリームから入ってくるデータを処理することに関係している機械学習の一分野です。従来の機械学習は、モデルへの当てはめに十分にラベル付けされたデータを使用でき、交差検証を実施してハイパーパラメーターを調整し、予測子の分布を推論するもので、インクリメンタル学習と異なります。

    入力観測値に対し、インクリメンタル学習モデルは、次のいずれかの方法 (通常はこの順序) でデータを処理します。

    • ラベルの予測。

    • 予測性能の測定。

    • モデルの構造的な破綻やドリフトについてのチェック。

    • 入力観測値へのモデルの当てはめ。

    詳細については、インクリメンタル学習の概要を参照してください。

    分類誤差

    "分類誤差" は次のような形式になります。

    L=j=1nwjej,

    ここで

    • wj は観測値 j の重みです。重みは再度正規化され、合計は 1 になります。

    • 観測 j の予測クラスが真のクラスと異なる場合、ej = 1 になり、それ以外の場合は 0 になります。

    つまり、分類誤差は、分類器が誤分類した観測値の比率です。

    バイナリ損失

    "バイナリ損失" は、バイナリ学習器がどの程度の精度で観測値をクラスに分類するかを決定する、クラスと分類スコアの関数です。ソフトウェアでバイナリ損失をどのように集計して各観測値の予測クラスを判定するかは、ECOC モデルの "復号化方式" で指定します。

    以下のように仮定します。

    • mkj は符号化設計行列 M の要素 (k,j)、つまりバイナリ学習器 j のクラス k に対応する符号。M は K 行 B 列の行列であり、K はクラスの数、B はバイナリ学習器の数です。

    • sj は観測値に対するバイナリ学習器 j のスコア。

    • g はバイナリ損失関数。

    • k^ は観測値の予測クラス。

    ソフトウェアでは 2 つの復号化方式をサポートしています。

    • "損失に基づく復号化" [3] (Decoding'lossbased') — 観測値の予測クラスは、すべてのバイナリ学習器におけるバイナリ損失の平均が最小になるクラスに対応します。

      k^=argmink1Bj=1B|mkj|g(mkj,sj).

    • "損失に重みを付けた復号化" [2] (Decoding'lossweighted') — 観測値の予測クラスは、対応するクラスのバイナリ学習器におけるバイナリ損失の平均が最小になるクラスに対応します。

      k^=argminkj=1B|mkj|g(mkj,sj)j=1B|mkj|.

      分母はクラス k のバイナリ学習器の数に対応します。[1]によると、すべてのクラスの損失値が同じダイナミック レンジに収まるので、損失に重みを付けた復号化では分類精度が向上します。

    関数 predictresubPredict、および kfoldPredict は、それぞれの観測値とクラスについて、argmin の目的関数の符号反転値を 2 番目の出力引数 (NegLoss) として返します。

    次の表は、サポートされる損失関数をまとめたものです。ここで、yj は特定のバイナリ学習器のクラス ラベル (集合 {–1,1,0} 内)、sj は観測値 j のスコア、g(yj,sj) はバイナリ損失関数です。

    説明スコア領域g(yj,sj)
    "binodeviance"二項分布からの逸脱度(–∞,∞)log[1 + exp(–2yjsj)]/[2log(2)]
    "exponential"指数(–∞,∞)exp(–yjsj)/2
    "hamming"ハミング[0,1] または (–∞,∞)[1 – sign(yjsj)]/2
    "hinge"ヒンジ(–∞,∞)max(0,1 – yjsj)/2
    "linear"線形(–∞,∞)(1 – yjsj)/2
    "logit"ロジスティック(–∞,∞)log[1 + exp(–yjsj)]/[2log(2)]
    "quadratic"2 次[0,1][1 – yj(2sj – 1)]2/2

    yj = 0 のときに損失が 0.5 になるようにバイナリ損失が正規化され、バイナリ学習器の平均が集計に使用されます[1]

    ECOC 分類器の全体的な性能の尺度である全体の分類損失 (オブジェクト関数 loss および predict の名前と値の引数 LossFun により指定) とバイナリ損失を混同しないでください。

    アルゴリズム

    すべて折りたたむ

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

    • 関数 updateMetrics および updateMetricsAndFit は、インクリメンタル モデルが "ウォーム" (IsWarm プロパティが true) のときにのみ、新しいデータからモデルのパフォーマンス メトリクス (Metrics) を追跡します。

      • incrementalLearner を使用してインクリメンタル モデルを作成するときに、MetricsWarmupPeriod が 0 (incrementalLearner の既定値) である場合、モデルは作成時にウォームになります。

      • それ以外の場合、インクリメンタル モデルは、fit または updateMetricsAndFit で次の両方のアクションを実行するとウォームになります。

        • インクリメンタル モデルを MetricsWarmupPeriod の観測値 ("メトリクスのウォームアップ期間") に当てはめる。

        • インクリメンタル モデルを予測されるすべてのクラスに当てはめる (incrementalClassificationECOC の引数 MaxNumClassesClassNames を参照)。

    • インクリメンタル モデルの Metrics プロパティは、各パフォーマンス メトリクスの 2 つの形式を table の変数 (列) Cumulative および Window とし、個々のメトリクスを行に格納します。インクリメンタル モデルがウォームになると、updateMetrics および updateMetricsAndFit は次の頻度でメトリクスを更新します。

      • Cumulative — 関数は、モデルの性能追跡の開始以降の累積メトリクスを計算します。関数は、関数が呼び出されるたびにメトリクスを更新し、提供されたデータ セット全体に基づいて計算を行います。

      • Window — 関数は、MetricsWindowSize によって決定されたウィンドウ内のすべての観測値に基づいてメトリクスを計算します。これによってソフトウェアが Window メトリクスを更新する頻度も決まります。たとえば、MetricsWindowSize が 20 の場合、関数は提供されたデータの最後の 20 個の観測値に基づいてメトリクスを計算します (X((end – 20 + 1):end,:) および Y((end – 20 + 1):end))。

        ウィンドウ内のパフォーマンス メトリクスを追跡するインクリメンタル関数は、次のプロセスを使用します。

        1. 指定された各メトリクスについて長さ MetricsWindowSize のバッファーを保存し、観測値の重みのバッファーを保存します。

        2. 入力観測値のバッチに基づくモデル性能をメトリクス バッファーの要素に入力し、対応する観測値の重みを重みバッファーに格納します。

        3. バッファーがいっぱいになると、Metrics プロパティの Window フィールドをメトリクス ウィンドウの性能の加重平均で上書きします。関数が観測値のバッチを処理するときにバッファーがあふれる場合、最新の入力観測値 MetricsWindowSize がバッファーに入り、最も古い観測値がバッファーから削除されます。たとえば、MetricsWindowSize が 20 で、メトリクス バッファーには前に処理されたバッチからの 10 個の値が存在し、15 個の値が入力されるとします。長さ 20 のウィンドウを構成するため、関数は 15 個の入力観測値からの測定値と前のバッチからの最新の 5 個の測定値を使用します。

    • CumulativeWindow のパフォーマンス メトリクスの値を計算する際、スコアが NaN の観測値は省略されます。

    参照

    [1] Allwein, E., R. Schapire, and Y. Singer. “Reducing multiclass to binary: A unifying approach for margin classifiers.” Journal of Machine Learning Research. Vol. 1, 2000, pp. 113–141.

    [2] Escalera, S., O. Pujol, and P. Radeva. “On the decoding process in ternary error-correcting output codes.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 32, Issue 7, 2010, pp. 120–134.

    [3] Escalera, S., O. Pujol, and P. Radeva. “Separability of ternary codes for sparse designs of error-correcting output codes.” Pattern Recog. Lett., Vol. 30, Issue 3, 2009, pp. 285–297.

    バージョン履歴

    R2022a で導入