Main Content

kfoldPredict

交差検証済みカーネル ECOC モデルの観測値の分類

説明

label = kfoldPredict(CVMdl) は、交差検証済みカーネル ECOC モデル (ClassificationPartitionedKernelECOC) CVMdl によって予測されたクラス ラベルを返します。kfoldPredict は、すべての分割について、学習分割観測値に対して学習をさせたモデルを使用して、検証分割観測値のクラス ラベルを予測します。kfoldPredict は、CVMdl の作成に使用されたものと同じデータを適用します (fitcecoc を参照)。

符号を反転した最大の平均バイナリ損失 (つまり、最小の平均バイナリ損失と等しい) の発生するクラスに観測を割り当てることで、観測の分類が予測されます。

label = kfoldPredict(CVMdl,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、予測クラス ラベルを返します。たとえば、事後確率推定法、復号化スキームまたは詳細レベルを指定します。

[label,NegLoss,PBScore] = kfoldPredict(___) は、前の構文における任意の入力引数を組み合わせて使用し、検証分割観測値に対するクラスごとの平均バイナリ損失の符号反転値 (NegLoss) と、各バイナリ学習器によって分類された検証分割観測値に対する陽性クラスのスコア (PBScore) をさらに返します。

符号化行列が分割ごとに異なる場合 (つまり、符号化方式が sparserandom または denserandom である場合)、PBScore は空 ([]) になります。

[label,NegLoss,PBScore,Posterior] = kfoldPredict(___) は、検証分割観測値の事後クラス確率の推定値 (Posterior) をさらに返します。

事後クラス確率を取得するには、カーネル分類バイナリ学習器がロジスティック回帰モデルでなければなりません。それ以外の場合、kfoldPredict はエラーがスローされます。

すべて折りたたむ

交差検証済みマルチクラス カーネル ECOC 分類器を使用して観測値を分類し、生成された分類の混同行列を表示します。

フィッシャーのアヤメのデータ セットを読み込みます。X には花の測定値が、Y には花の種類の名前が格納されています。

load fisheriris
X = meas;
Y = species;

カーネル バイナリ学習器から構成される ECOC モデルを交差検証します。

rng(1); % For reproducibility 
CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on')
CVMdl = 
  ClassificationPartitionedKernelECOC
    CrossValidatedModel: 'KernelECOC'
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         ScoreTransform: 'none'


CVMdlClassificationPartitionedKernelECOC モデルです。既定では、10 分割交差検証が実行されます。異なる分割数を指定するには、'Crossval' ではなく名前と値のペアの引数 'KFold' を指定します。

分割の学習で fitcecoc が使用しない観測値を分類します。

label = kfoldPredict(CVMdl);

混同行列を作成して、観測値の真のクラスを予測されたラベルと比較します。

C = confusionchart(Y,label);

Figure contains an object of type ConfusionMatrixChart.

CVMdl モデルは、4 つの 'versicolor' 種のアヤメを 'virginica' 種のアヤメとして誤分類し、1 つの 'virginica' 種のアヤメを 'versicolor' 種のアヤメとして誤分類します。

フィッシャーのアヤメのデータ セットを読み込みます。X には花の測定値が、Y には花の種類の名前が格納されています。

load fisheriris
X = meas;
Y = species;

5 分割の交差検証を使用して、カーネル分類モデルから構成される ECOC モデルを交差検証します。

rng(1); % For reproducibility 
CVMdl = fitcecoc(X,Y,'Learners','kernel','KFold',5)
CVMdl = 
  ClassificationPartitionedKernelECOC
    CrossValidatedModel: 'KernelECOC'
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 5
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         ScoreTransform: 'none'


CVMdlClassificationPartitionedKernelECOC モデルです。これには、5 行 1 列の CompactClassificationECOC モデルの cell 配列である Trained プロパティが含まれています。

既定では、CompactClassificationECOC モデルを構成するカーネル分類モデルは SVM を使用します。SVM スコアは観測から判定境界までの符号付き距離です。したがって、定義域は (-,) です。以下のようなカスタム バイナリ損失関数を作成します。

  • 各学習器の符号化設計行列 (M) と陽性クラスの分類スコア (s) を各観測値のバイナリ損失にマッピングする

  • 線形損失を使用する

  • 中央値を使用して、バイナリ学習器損失を集計します。

バイナリ損失関数用に独立した関数を作成し、MATLAB® パスに保存できます。あるいは、無名バイナリ損失関数を指定できます。この場合、無名バイナリ損失関数に対する関数ハンドル (customBL) を作成します。

customBL = @(M,s)median(1 - (M.*s),2,'omitnan')/2;

交差検証ラベルを予測し、クラスごとのバイナリ損失の中央値を推定します。10 件の観測の無作為セットについて、クラスごとに中央値の符号を反転したバイナリ損失を出力します。

[label,NegLoss] = kfoldPredict(CVMdl,'BinaryLoss',customBL);

idx = randsample(numel(label),10);
table(Y(idx),label(idx),NegLoss(idx,1),NegLoss(idx,2),NegLoss(idx,3),...
    'VariableNames',[{'True'};{'Predicted'};...
    unique(CVMdl.ClassNames)])
ans=10×5 table
         True           Predicted        setosa     versicolor    virginica
    ______________    ______________    ________    __________    _________

    {'setosa'    }    {'setosa'    }     0.20926     -0.84572     -0.86354 
    {'setosa'    }    {'setosa'    }     0.16144     -0.90572     -0.75572 
    {'virginica' }    {'versicolor'}    -0.83532     -0.12157     -0.54311 
    {'virginica' }    {'virginica' }    -0.97235     -0.69759      0.16994 
    {'virginica' }    {'virginica' }    -0.89441     -0.69937     0.093778 
    {'virginica' }    {'virginica' }    -0.86774     -0.47297     -0.15929 
    {'setosa'    }    {'setosa'    }     -0.1026     -0.69671     -0.70069 
    {'setosa'    }    {'setosa'    }      0.1001     -0.89163     -0.70848 
    {'virginica' }    {'virginica' }     -1.0106     -0.52919     0.039829 
    {'versicolor'}    {'versicolor'}     -1.0298     0.027354     -0.49757 

交差検証済みモデルは、10 個のランダムな観測値のうち 9 個のラベルを正しく予測します。

交差検証済みマルチクラス カーネル ECOC 分類モデルを使用して、事後クラス確率を推定します。カーネル分類モデルは、ロジスティック回帰学習器の場合のみ事後確率を返します。

フィッシャーのアヤメのデータ セットを読み込みます。X には花の測定値が、Y には花の種類の名前が格納されています。

load fisheriris
X = meas;
Y = species;

バイナリ カーネル分類モデルのカーネル テンプレートを作成します。ロジスティック回帰学習器を当てはめるよう指定します。

t = templateKernel('Learner','logistic')
t = 
Fit template for classification Kernel.

             BetaTolerance: []
                 BlockSize: []
             BoxConstraint: []
                   Epsilon: []
    NumExpansionDimensions: []
         GradientTolerance: []
        HessianHistorySize: []
            IterationLimit: []
               KernelScale: []
                    Lambda: []
                   Learner: 'logistic'
              LossFunction: []
                    Stream: []
            VerbosityLevel: []
           StandardizeData: []
                   Version: 1
                    Method: 'Kernel'
                      Type: 'classification'

t はカーネル テンプレートです。ほとんどのプロパティは空です。テンプレートを使用して ECOC 分類器に学習をさせると、該当するプロパティが既定値に設定されます。

カーネル テンプレートを使用して、ECOC モデルを交差検証します。

rng('default'); % For reproducibility
CVMdl = fitcecoc(X,Y,'Learners',t,'CrossVal','on')
CVMdl = 
  ClassificationPartitionedKernelECOC
    CrossValidatedModel: 'KernelECOC'
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         ScoreTransform: 'none'


CVMdlClassificationPartitionedECOC モデルです。既定では、10 分割交差検証が使用されます。

検証分割のクラス事後確率を予測します。

[label,~,~,Posterior] = kfoldPredict(CVMdl);

バイナリ損失の平均が最小となるクラスに観測が割り当てられます。すべてのバイナリ学習器が事後確率を計算しているので、バイナリ損失関数は quadratic になります。

無作為に選択した 10 個の観測値について事後確率を表示します。

idx = randsample(size(X,1),10);
CVMdl.ClassNames
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

table(Y(idx),label(idx),Posterior(idx,:),...
    'VariableNames',{'TrueLabel','PredLabel','Posterior'})
ans=10×3 table
      TrueLabel         PredLabel                  Posterior            
    ______________    ______________    ________________________________

    {'setosa'    }    {'setosa'    }     0.68216     0.18546     0.13238
    {'virginica' }    {'virginica' }      0.1581     0.14405     0.69785
    {'virginica' }    {'virginica' }    0.071807    0.093291      0.8349
    {'setosa'    }    {'setosa'    }     0.74918     0.11434     0.13648
    {'versicolor'}    {'versicolor'}     0.09375     0.67149     0.23476
    {'versicolor'}    {'versicolor'}    0.036202     0.85544     0.10836
    {'versicolor'}    {'versicolor'}      0.2252     0.50473     0.27007
    {'virginica' }    {'virginica' }    0.061562     0.11086     0.82758
    {'setosa'    }    {'setosa'    }     0.42448     0.21181     0.36371
    {'virginica' }    {'virginica' }    0.082705      0.1428      0.7745

Posterior の列は CVMdl.ClassNames のクラスの順序に対応します。

入力引数

すべて折りたたむ

交差検証済みのカーネル ECOC モデル。ClassificationPartitionedKernelECOC モデルを指定します。ClassificationPartitionedKernelECOC モデルは、fitcecoc を使用し、以下の名前と値のペアの引数を指定して、ECOC モデルに学習をさせることにより作成できます。

  • 'Learners' – 値を 'kernel'templateKernel が返すテンプレート オブジェクト、またはこのようなテンプレート オブジェクトの cell 配列に設定します。

  • 引数 'CrossVal''CVPartition''Holdout''KFold''Leaveout' のいずれか。

名前と値の引数

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

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: kfoldPredict(CVMdl,'PosteriorMethod','qp') は、二次計画法を使用して最小二乗問題を解くことによりマルチクラス事後確率を推定するよう指定します。

バイナリ学習器の損失関数。'BinaryLoss' と組み込みの損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。

  • 次の表には、組み込み関数の名前と説明が含まれています。ここで、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 はバイナリ学習器の数です。

既定では、すべてのバイナリ学習器が SVM を使用するカーネル分類モデルである場合、BinaryLoss'hinge' です。すべてのバイナリ学習器がロジスティック回帰を使用するカーネル分類モデルである場合、BinaryLoss'quadratic' です。

例: 'BinaryLoss','binodeviance'

データ型: char | string | function_handle

バイナリ損失を集計する復号化方式。'Decoding''lossweighted' または 'lossbased' から構成されるコンマ区切りのペアとして指定します。詳細については、バイナリ損失を参照してください。

例: 'Decoding','lossbased'

カルバック・ライブラー ダイバージェンスの最小化により事後確率を当てはめるためのランダムな初期値の個数。'NumKLInitializations' と非負の整数スカラーから構成されるコンマ区切りのペアとして指定します。

4 番目の出力引数 (Posterior) を要求せず、'PosteriorMethod','kl' (既定の設定) を設定する場合、NumKLInitializations の値は無視されます。

詳細は、カルバック・ライブラー ダイバージェンスを使用する事後推定を参照してください。

例: 'NumKLInitializations',5

データ型: single | double

推定オプション。statset により返される 'Options' と構造体配列から構成されるコンマ区切りのペアとして指定します。

並列計算を起動するには、以下を行います。

  • Parallel Computing Toolbox™ ライセンスが必要です。

  • 'Options',statset('UseParallel',true) を指定します。

事後確率推定法。'PosteriorMethod''kl' または 'qp' で構成されるコンマ区切りのペアとして指定します。

  • PosteriorMethod'kl' の場合、バイナリ学習器によって返される予測された事後確率と期待された事後確率間のカルバック・ライブラー ダイバージェンスを最小化することにより、マルチクラス事後確率が推定されます。詳細については、カルバック・ライブラー ダイバージェンスを使用する事後推定を参照してください。

  • PosteriorMethod'qp' の場合、二次計画法を使用して最小二乗問題を解決することでマルチクラス事後確率が推定されます。このオプションを使用するには Optimization Toolbox™ ライセンスが必要です。詳細については、二次計画法を使用する事後推定を参照してください。

  • 4 番目の出力引数 (Posterior) を要求しない場合、PosteriorMethod の値は無視されます。

例: 'PosteriorMethod','qp'

詳細レベル。'Verbose'0 または 1 から構成されるコンマ区切りのペアとして指定します。Verbose は、コマンド ウィンドウに表示される診断メッセージの量を制御します。

Verbose0 の場合、診断メッセージは表示されません。それ以外の場合は、診断メッセージが表示されます。

例: 'Verbose',1

データ型: single | double

出力引数

すべて折りたたむ

予測クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。

label のデータ型および行数は CVMdl.Y と同じです。

符号を反転した最大の平均バイナリ損失 (つまり、最小の平均バイナリ損失と等しい) の発生するクラスに観測を割り当てることで、観測の分類が予測されます。

符号を反転した平均バイナリ損失。数値行列として返されます。NegLoss は n 行 K 列の行列です。n は観測値の個数 (size(CVMdl.Y,1))、K は一意なクラスの個数 (size(CVMdl.ClassNames,1)) です。

NegLoss(i,k) は、観測値 i を k 番目のクラスに分類する平均バイナリ損失の符号を反転した値です。

  • Decoding'lossbased' の場合、NegLoss(i,k) はバイナリ損失の合計をバイナリ学習器の総数で割った値の符号を反転した値になります。

  • Decoding'lossweighted' の場合、NegLoss(i,k) はバイナリ損失の合計を k 番目のクラスに対するバイナリ学習器の数で割った値の符号を反転した値になります。

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

各バイナリ学習器の陽性クラスのスコア。数値行列として返されます。PBScore は n 行 B 列の行列であり、n は観測値の数 (size(CVMdl.Y,1))、B はバイナリ学習器の数 (size(CVMdl.CodingMatrix,2)) です。

符号化行列が分割ごとに異なる場合 (つまり、符号化方式が sparserandom または denserandom である場合)、PBScore は空 ([]) になります。

事後クラス確率。数値行列として返します。Posterior は n 行 K 列の行列です。ここで n は観測 (size(CVMdl.Y,1)) の数、K は一意のクラス (size(CVMdl.ClassNames,1)) の数です。

事後確率を返すようにするには、各カーネル分類バイナリ学習器の Learner プロパティを 'logistic' に設定しなければなりません。それ以外の場合は、エラーがスローされます。

詳細

すべて折りたたむ

バイナリ損失

"バイナリ損失" は、バイナリ学習器がどの程度の精度で観測値をクラスに分類するかを決定する、クラスと分類スコアの関数です。ソフトウェアでバイナリ損失をどのように集計して各観測値の予測クラスを判定するかは、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).

  • "損失に重みを付けた復号化" [4] (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 分類器の全体的な性能の尺度である全体の分類損失 (オブジェクト関数 kfoldLoss および kfoldPredict の名前と値の引数 LossFun により指定) とバイナリ損失を混同しないでください。

アルゴリズム

すべて折りたたむ

カルバック・ライブラー ダイバージェンスを最小化するか、二次計画法を使用することにより、クラス事後確率を推定できます。以下の事後推定アルゴリズムに関する説明では、次のように仮定します。

  • mkj は符号化設計行列 M の要素 (k,j) です。

  • I はインジケーター関数です。

  • p^k は、ある観測値のクラス k (k = 1、...、K) に対するクラス事後確率の推定値です。

  • rj はバイナリ学習器 j の陽性クラス事後確率です。つまり、rj は、学習データが与えられる場合、バイナリ学習器 j が観測値を陽性クラスに分類する確率です。

カルバック・ライブラー ダイバージェンスを使用する事後推定

既定では、カルバック・ライブラー ダイバージェンスは最小化され、クラス事後確率が推定されます。予測された陽性クラス事後確率と観測された陽性クラス事後確率の間のカルバック・ライブラー ダイバージェンスは次のようになります。

Δ(r,r^)=j=1Lwj[rjlogrjr^j+(1rj)log1rj1r^j],

ここで、wj=Sjwi はバイナリ学習器 j の重みです。

  • Sj は、バイナリ学習器 j が学習する一連の観測値のインデックスです。

  • wi は、観測値 i の重みです。

ダイバージェンスは反復して最小化されます。最初のステップとして、クラス事後確率の初期値 p^k(0);k=1,...,K を選択します。

  • 'NumKLIterations' を指定しない場合、次の確定的な初期値の集合が両方試され、Δ を最小化する集合が選択されます。

    • p^k(0)=1/K;k=1,...,K.

    • p^k(0);k=1,...,K は、次の連立方程式の解です。

      M01p^(0)=r,

      ここで、M01 はすべての mkj = -1 を 0 に置き換えた M、r は L 個のバイナリ学習器によって返された陽性クラス事後確率のベクトルです [Dietterich 他]lsqnonneg を使いシステムを解きます。

  • 'NumKLIterations',c を指定した場合 (c は自然数)、集合 p^k(0);k=1,...,K は次のように選択され、Δ を最小化する集合が使用されます。

    • 前述した確定的な初期値の集合の両方が試されます。

    • rand を使用して長さ K のベクトル c を無作為に生成し、各ベクトルの合計が 1 になるように正規化します。

反復 t では、以下の手順が実行されます。

  1. r^j(t)=k=1Kp^k(t)I(mkj=+1)k=1Kp^k(t)I(mkj=+1mkj=1).

    を計算します。

  2. 次の式を使用して、次のクラスの事後確率を推定します。

    p^k(t+1)=p^k(t)j=1Lwj[rjI(mkj=+1)+(1rj)I(mkj=1)]j=1Lwj[r^j(t)I(mkj=+1)+(1r^j(t))I(mkj=1)].

  3. 合計が 1 になるように p^k(t+1);k=1,...,K を正規化します。

  4. 収束を確認します。

詳細については、[Hastie 他] および [Zadrozny] を参照してください。

二次計画法を使用する事後推定

二次計画法を使用する事後確率には、Optimization Toolbox ライセンスが必要です。この方法を使用して観測値の事後確率を推定するため、以下の手順が実行されます。

  1. バイナリ学習器 j = 1、...、L の陽性クラス事後確率 rj を推定します。

  2. rjp^k の関係を使用して [Wu 他]、次の値を最小化します。

    j=1L[rjk=1Kp^kI(mkj=1)+(1rj)k=1Kp^kI(mkj=+1)]2

    これは、次の制限を適用して p^k に関して行います。

    0p^k1kp^k=1.

    最小化には quadprog (Optimization Toolbox) が使用されます。

参照

[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] Dietterich, T., and G. Bakiri. “Solving Multiclass Learning Problems Via Error-Correcting Output Codes.” Journal of Artificial Intelligence Research. Vol. 2, 1995, pp. 263–286.

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

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

[5] Hastie, T., and R. Tibshirani. “Classification by Pairwise Coupling.” Annals of Statistics. Vol. 26, Issue 2, 1998, pp. 451–471.

[6] Wu, T. F., C. J. Lin, and R. Weng. “Probability Estimates for Multi-Class Classification by Pairwise Coupling.” Journal of Machine Learning Research. Vol. 5, 2004, pp. 975–1005.

[7] Zadrozny, B. “Reducing Multiclass to Binary by Coupling Probability Estimates.” NIPS 2001: Proceedings of Advances in Neural Information Processing Systems 14, 2001, pp. 1041–1048.

拡張機能

バージョン履歴

R2018b で導入

すべて展開する