ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

predict

マルチクラス誤り訂正出力符号モデルの使用によるラベルの予測

構文

label = predict(Mdl,X)
label = predict(Mdl,X,Name,Value)
[label,NegLoss,PBScore] = predict(___)
[label,NegLoss,PBScore,Posterior] = predict(___)

説明

label = predict(Mdl,X) は、学習済みの完全またはコンパクトなマルチクラス誤り訂正出力符号 (ECOC) モデル Mdl に基づいて、テーブルまたは行列 X 内の予測子データに対する予測クラス ラベルのベクトルを返します。

label = predict(Mdl,X,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。たとえば、事後確率推定法、復号化スキームまたは詳細レベルを指定します。

[label,NegLoss,PBScore] = predict(___) は、前の構文の入力引数のいずれかを使用して、さらに以下を返します。

  • 符号を反転したクラスごとの平均バイナリ損失の配列 (NegLoss)。predict は、符号を反転した平均バイナリ損失が最大 (結果的に、平均バイナリ損失が最小) になるクラスのラベルを X 内の各観測値に割り当てます。

  • 各バイナリ学習器によって分類された観測値の陽性クラス スコアの配列 (PBScore)。

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

事後クラス確率を得るには、fitcecoc を使用して ECOC モデルを学習させる際に 'FitPosterior',1 を設定しなければなりません。それ以外の場合、predict はエラーをスローします。

入力引数

すべて展開する

完全またはコンパクトなマルチクラス ECOC モデル。ClassificationECOC または CompactClassificationECOC モデル オブジェクトを指定します。

完全またはコンパクトな ECOC モデルを作成する方法については、ClassificationECOC または CompactClassificationECOC を参照してください。

分類対象の予測子データ。数値行列またはテーブルを指定します。

X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

  • 数値行列の場合

    • X の列を構成する変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、Tbl に含まれている予測子変数がすべて数値変数であれば、X を数値行列にすることができます。学習時に Tbl 内の数値予測子をカテゴリカルとして扱うには、fitcecoc の名前と値のペアの引数 CategoricalPredictors を使用してカテゴリカル予測子を同定します。Tbl に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X が数値行列である場合、predict でエラーがスローされます。

  • テーブルの場合

    • predict は、文字ベクトルの cell 配列ではない cell 配列と複数列の変数をサポートしません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、X 内のすべての予測子変数は変数名およびデータ型が、Mdl に学習させた (Mdl.PredictorNames に格納されている) 変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。TblX に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

    • 数値行列を使用して Mdl に学習をさせた場合、Mdl.PredictorNames 内の予測子名と X 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitcecoc の名前と値のペアの引数 PredictorNames を参照してください。X 内の予測子変数はすべて数値ベクトルでなければなりません。X に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

メモ

Mdl.BinaryLearners に線形分類モデルまたはカーネル分類モデル (つまり ClassificationLinear モデル オブジェクトまたは ClassificationKernel モデル オブジェクト) が格納されている場合、table 内の標本データを指定することはできません。代わりに、予測子データの行列を渡します。

データ型: テーブル | double | single

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

バイナリ学習器の損失関数。'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 になるように正規化されます。また、各クラスについて平均のバイナリ損失が計算されます。

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

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

    bLoss = customFunction(M,s)
    ここで、

    • MMdl.CodingMatrix に格納された K 行 L 列のコーディング行列です。

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

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

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

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

    カスタムなバイナリ損失関数を渡す例については、カスタム バイナリ損失関数を使用する ECOC モデルの検定標本ラベルの予測を参照してください。

既定の設定では、すべてのバイナリ学習器が

  • SVM である場合、または SVM 学習器の線形分類モデルまたはカーネル分類モデルのいずれかである場合、BinaryLoss'hinge'

  • AdaboostM1 または GentleBoost によって学習させたアンサンブルの場合、BinaryLoss'exponential'

  • LogitBoost によって学習させたアンサンブルの場合、BinaryLoss'binodeviance'

  • ロジスティック回帰学習器の線形分類モデルまたはカーネル分類モデルである場合、またはクラス事後確率を予測するように指定した場合 (つまり fitcecoc'FitPosterior',1 を設定した場合)、BinaryLoss'quadratic'

それ以外の場合、'BinaryLoss' の既定値は 'hamming' です。既定値を確認するには、コマンド ラインでドット表記を使用して学習済みモデルの BinaryLoss プロパティを表示します。

例: 'BinaryLoss','binodeviance'

データ型: char | string | 関数ハンドル

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

例: 'Decoding','lossbased'

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

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

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

例: 'NumKLInitializations',5

データ型: single | double

予測子データにおける観測値の次元。'ObservationsIn''columns' または 'rows' から構成されるコンマ区切りのペアとして指定します。Mdl.BinaryLearners には線形分類モデルが格納されていなければなりません。

メモ

観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns' を指定すると、実行時間が大幅に短縮される可能性があります。

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

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

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

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

事後確率推定法。'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 は、Mdl の学習に使用したクラス ラベルと同じデータ型です。(string 配列は文字ベクトルの cell 配列として扱われます)。 label の行数と X 内の観測値の個数は等しくなります。

Mdl.BinaryLearners に線形分類モデルが格納されている場合、label は m 行 L 列の行列になります。m は X 内の観測値数、L は線形分類モデル内の正則化強度の個数 (numel(Mdl.BinaryLearners{1}.Lambda)) です。label(i,j) は、正則化強度 Mdl.BinaryLearners{1}.Lambda(j) を使用して学習をさせたモデルに対する観測値 i の予測ラベルです。

それ以外の場合、label は長さが m の列ベクトルになります。

符号を反転した平均バイナリ損失。数値行列または数値配列として返されます。

  • Mdl.BinaryLearners に線形分類モデルが格納されている場合、NegLoss は m x K x L の配列になります。

    • m は X 内の観測値数です。

    • K は学習データ内の異なるクラスの個数 (numel(Mdl.ClassNames)) です。

    • L は線形分類モデル内の正則化強度の個数 (numel(Mdl.BinaryLearners{1}.Lambda)) です。

    NegLoss(i,k,j) は、観測値 i の符号を反転した平均バイナリ損失で、正則化強度 Mdl.BinaryLearners{1}.Lambda(j) を使用して学習をさせたモデルのクラス Mdl.ClassNames(k) に対応します。

  • それ以外の場合、NegLoss は m 行 K 列の行列になります。

各バイナリ分類器の陽性クラスのスコア。数値行列または数値配列として返されます。

  • Mdl.BinaryLearners に線形分類モデルが格納されている場合、PBScore は m x B x L の配列になります。

    • m は X 内の観測値数です。

    • B はバイナリ学習器の個数 (numel(Mdl.BinaryLearners)) です。

    • L は線形分類モデル内の正則化強度の個数 (numel(Mdl.BinaryLearners{1}.Lambda)) です。

    PBScore(i,b,j) は、正則化強度 Mdl.BinaryLearners{1}.Lambda(j) を使用して学習をさせたモデルにおける、バイナリ学習器 b を使用した、観測値 i に対する陽性クラスのスコアです。

  • それ以外の場合、PBScore は m 行 B 列の行列になります。

事後クラス確率。数値行列または数値配列として返されます。

  • Mdl.BinaryLearners に線形分類モデルが格納されている場合、Posterior は m x K x L の配列になります。次元の定義については、NegLoss を参照してください。Posterior(i,k,j) は、正則化強度 Mdl.BinaryLearners{1}.Lambda(j) を使用して学習をさせたモデルにおいて観測値 i がクラス Mdl.ClassNames(k) から派生する事後確率です。

  • それ以外の場合、Posterior は m 行 K 列の行列になります。

すべて展開する

フィッシャーのアヤメのデータセットを読み込みます。

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y);
rng(1); % For reproducibility

SVM バイナリ分類器を使用して ECOC モデルを学習させます。30% のホールドアウト標本を指定します。クラスの順序を定義することをお勧めします。SVM テンプレートを使用して、予測子の標準化を指定します。

t = templateSVM('Standardize',1);
CVMdl = fitcecoc(X,Y,'Holdout',0.30,'Learners',t,'ClassNames',classOrder);
CMdl = CVMdl.Trained{1};           % Extract trained, compact classifier
testInds = test(CVMdl.Partition);  % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);

CVMdlClassificationPartitionedECOC モデルです。これには Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationECOC モデルが格納されています。

検定標本ラベルを予測します。真のラベルと予測されたラベルのランダムなサブセットを印刷します。

labels = predict(CMdl,XTest);
idx = randsample(sum(testInds),10);
table(YTest(idx),labels(idx),...
    'VariableNames',{'TrueLabels','PredictedLabels'})
ans =

  10x2 table

    TrueLabels    PredictedLabels
    __________    _______________

    setosa          setosa       
    versicolor      virginica    
    setosa          setosa       
    virginica       virginica    
    versicolor      versicolor   
    setosa          setosa       
    virginica       virginica    
    virginica       virginica    
    setosa          setosa       
    setosa          setosa       

Mdl は、インデックス idx を使用する検定標本観測値のいずれかを除き、すべて正確なラベルを付けました。

フィッシャーのアヤメのデータセットを読み込みます。

load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y); % Class order
K = numel(classOrder);  % Number of classes
rng(1); % For reproducibility

SVM バイナリ分類器を使用して ECOC モデルを学習させます。30% のホールドアウト標本を指定します。クラスの順序を定義することをお勧めします。SVM テンプレートを使用して、予測子の標準化を指定します。

t = templateSVM('Standardize',1);
CVMdl = fitcecoc(X,Y,'Holdout',0.30,'Learners',t,'ClassNames',classOrder);
CMdl = CVMdl.Trained{1};           % Extract trained, compact classifier
testInds = test(CVMdl.Partition);  % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);

CVMdlClassificationPartitionedECOC モデルです。これには Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationECOC モデルが格納されています。

SVM スコアは観測から判定境界までの符号付き距離です。したがって、 が定義域になります。以下のようなカスタム バイナリ損失関数を作成します。

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

  • 線形損失を使用する

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

バイナリ損失関数用に独立した関数を作成し、MATLAB® パスに保存できます。あるいは、無名バイナリ損失関数を指定できます。

customBL = @(M,s)nanmedian(1 - bsxfun(@times,M,s),2)/2;

検定標本ラベルを予測し、クラスごとの中央値のバイナリ損失を推定します。10 件の検定標本観測の無作為なセットでは、クラスごとに中央値の負のバイナリ損失を出力します。

[label,NegLoss] = predict(CMdl,XTest,'BinaryLoss',customBL);

idx = randsample(sum(testInds),10);
classOrder
table(YTest(idx),label(idx),NegLoss(idx,:),'VariableNames',...
    {'TrueLabel','PredictedLabel','NegLoss'})
classOrder = 

  3x1 categorical array

     setosa 
     versicolor 
     virginica 


ans =

  10x3 table

    TrueLabel     PredictedLabel                 NegLoss              
    __________    ______________    __________________________________

    setosa          versicolor        0.1857       1.9878      -3.6735
    versicolor      virginica        -1.3316     -0.12333    -0.045053
    setosa          versicolor       0.13898       1.9261      -3.5651
    virginica       virginica        -1.5133     -0.38263      0.39592
    versicolor      versicolor      -0.87209      0.74777      -1.3757
    setosa          versicolor       0.48381       1.9972       -3.981
    virginica       virginica        -1.9364     -0.67508       1.1114
    virginica       virginica         -1.579     -0.83339      0.91235
    setosa          versicolor       0.51001       2.1208      -4.1308
    setosa          versicolor       0.36119       2.0594      -3.9206

列の順序は classOrder の要素に対応します。符号が反転した最大損失に基づき、ラベルが予測されます。結果は、線形損失の中央値が他の損失ほど効果的に実行されない可能性があることを示しているようです。

フィッシャーのアヤメのデータセットを読み込みます。花弁の寸法を予測子として使用して、分類器を学習させます。

load fisheriris
X = meas(:,3:4);
Y = species;
rng(1); % For reproducibility

SVM テンプレートを作成し、ガウス カーネルを指定します。予測子の標準化をお勧めします。

t = templateSVM('Standardize',1,'KernelFunction','gaussian');

t は SVM テンプレートです。ほとんどのプロパティは空です。ECOC 分類器を学習させると、適用可能なプロパティが既定値に設定されます。

SVM テンプレートを使用して ECOC 分類器を学習させます。'FitPosterior' 名前と値のペアの引数を使用して分類スコアをクラス事後確率 (predict または resubPredict により返されます) へ変換します。'Verbose' 名前と値のペアの引数を使用して、学習中に診断メッセージを表示します。クラスの順序を指定することをお勧めします。

Mdl = fitcecoc(X,Y,'Learners',t,'FitPosterior',1,...
    'ClassNames',{'setosa','versicolor','virginica'},...
    'Verbose',2);
Training binary learner 1 (SVM) out of 3 with 50 negative and 50 positive observations.
Negative class indices: 2
Positive class indices: 1

Fitting posterior probabilities for learner 1 (SVM).
Training binary learner 2 (SVM) out of 3 with 50 negative and 50 positive observations.
Negative class indices: 3
Positive class indices: 1

Fitting posterior probabilities for learner 2 (SVM).
Training binary learner 3 (SVM) out of 3 with 50 negative and 50 positive observations.
Negative class indices: 3
Positive class indices: 2

Fitting posterior probabilities for learner 3 (SVM).

MdlClassificationECOC モデルです。同じ SVM テンプレートが各バイナリ学習器に適用されますが、テンプレートの cell ベクトルを渡すことで各バイナリ学習器のオプションを調整できます。

標本内ラベルとクラス事後確率を予測します。'Verbose' 名前と値のペアの引数を使用して、ラベルとクラス事後確率の計算中に診断メッセージを表示します。

[label,~,~,Posterior] = resubPredict(Mdl,'Verbose',1);
Mdl.BinaryLoss
Predictions from all learners have been computed.
Loss for all observations has been computed.
Computing posterior probabilities...

ans =

    'quadratic'

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

無作為な結果の集合を表示します。

idx = randsample(size(X,1),10,1);
Mdl.ClassNames
table(Y(idx),label(idx),Posterior(idx,:),...
    'VariableNames',{'TrueLabel','PredLabel','Posterior'})
ans =

  3x1 cell array

    {'setosa'    }
    {'versicolor'}
    {'virginica' }


ans =

  10x3 table

     TrueLabel       PredLabel                    Posterior               
    ____________    ____________    ______________________________________

    'virginica'     'virginica'      0.0039321     0.0039869       0.99208
    'virginica'     'virginica'       0.017067      0.018263       0.96467
    'virginica'     'virginica'       0.014948      0.015856        0.9692
    'versicolor'    'versicolor'    2.2197e-14       0.87317       0.12683
    'setosa'        'setosa'             0.999    0.00025091    0.00074639
    'versicolor'    'virginica'     2.2195e-14      0.059429       0.94057
    'versicolor'    'versicolor'    2.2194e-14       0.97001      0.029986
    'setosa'        'setosa'             0.999     0.0002499    0.00074741
    'versicolor'    'versicolor'     0.0085646       0.98259      0.008849
    'setosa'        'setosa'             0.999    0.00025013    0.00074718

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

観測された予測子領域の値のグリッドを定義します。グリッド内の各インスタンスの事後確率を予測します。

xMax = max(X);
xMin = min(X);

x1Pts = linspace(xMin(1),xMax(1));
x2Pts = linspace(xMin(2),xMax(2));
[x1Grid,x2Grid] = meshgrid(x1Pts,x2Pts);

[~,~,~,PosteriorRegion] = predict(Mdl,[x1Grid(:),x2Grid(:)]);

各グリッドの座標では、クラス間の最大クラス事後確率をプロットします。

figure;
contourf(x1Grid,x2Grid,...
        reshape(max(PosteriorRegion,[],2),size(x1Grid,1),size(x1Grid,2)));
h = colorbar;
h.YLabel.String = 'Maximum posterior';
h.YLabel.FontSize = 15;
hold on
gh = gscatter(X(:,1),X(:,2),Y,'krk','*xd',8);
gh(2).LineWidth = 2;
gh(3).LineWidth = 2;

title 'Iris Petal Measurements and Maximum Posterior';
xlabel 'Petal length (cm)';
ylabel 'Petal width (cm)';
axis tight
legend(gh,'Location','NorthWest')
hold off

並列計算を使用して誤り訂正出力符号、マルチクラス モデルを学習させ、事後確率を推定します。

arrhythmia データセットを読み込みます。クラスの分布を判断します。

load arrhythmia
Y = categorical(Y);
tabulate(Y)
n = numel(Y);
K = numel(unique(Y));
  Value    Count   Percent
      1      245     54.20%
      2       44      9.73%
      3       15      3.32%
      4       15      3.32%
      5       13      2.88%
      6       25      5.53%
      7        3      0.66%
      8        2      0.44%
      9        9      1.99%
     10       50     11.06%
     14        4      0.88%
     15        5      1.11%
     16       22      4.87%

いくつかのクラスはデータに表れません。また、他の多くのクラスでは相対的頻度が低くなります。

GentleBoost メソッドと 50 個の分類木弱学習器を使用するアンサンブル学習テンプレートを指定します。

t = templateEnsemble('GentleBoost',50,'Tree');

t はテンプレート オブジェクトです。ほとんどのオプションは空です ([])。学習の間、すべての空のオプションに既定値が使用されます。

多くのクラスがあるので、スパース乱数符号化設計を指定します。

rng(1); % For reproducibility
Coding = designecoc(K,'sparserandom');

並列計算を使用する ECOC モデルを学習させます。データの 15% をホールド アウトし、事後確率をあてはめます。

pool = parpool;                      % Invokes workers
options = statset('UseParallel',1);
CVMdl = fitcecoc(X,Y,'Learner',t,'Options',options,'Coding',Coding,...
    'FitPosterior',1,'Holdout',0.15);

CMdl = CVMdl.Trained{1};           % Extract trained, compact classifier
testInds = test(CVMdl.Partition);  % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds,:);
Starting parallel pool  parpool  using the 'local' profile ... connected to 4 workers.

CVMdlClassificationPartitionedECOC モデルです。これには Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationECOC モデルが格納されています。

プールは 4 つのワーカーを起動します。ワーカーの数はシステム間で異なる場合があります。

事後確率を推定し、検定標本観測値からの無作為なセットを与えられたデータで、不整脈 (クラス1) がないと分類された事後確率を表示します。

[~,~,~,posterior] = predict(CMdl,XTest,'Options',options);
idx = randsample(sum(testInds),10);
table(idx,YTest(idx),posterior(idx,1),...
    'VariableNames',{'TestSampleIndex','TrueLabel','PosteriorNoArrhythmia'})
ans = 

    TestSampleIndex    TrueLabel    PosteriorNoArrhythmia
    _______________    _________    _____________________

    11                 6            0.60631              
    41                 4            0.23674              
    51                 2            0.13802              
    33                 10           0.43831              
    12                 1            0.94332              
     8                 1            0.97278              
    37                 1            0.62807              
    24                 10           0.96876              
    56                 16           0.29375              
    30                 1            0.64512              

詳細

すべて展開する

アルゴリズム

すべて展開する

  • 予測子データの標準化を指定して Mdl に学習をさせる場合、学習器 jMdl.BinaryLearner{j}.MuMdl.BinaryLearner{j}.Sigma に格納された対応する平均と標準偏差を使用して X の列が標準化されます。

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

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

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

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

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

参照

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

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

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

拡張機能

R2014b で導入