ドキュメンテーション

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

templateECOC

誤り訂正出力符号学習器のテンプレート

構文

t = templateECOC()
t = templateECOC(Name,Value)

説明

t = templateECOC() は、誤り訂正出力符号 (ECOC) 分類学習器のテンプレートを返します。

既定のテンプレートを指定する場合、学習中のすべての入力引数には既定値が使用されます。

t = templateECOC(Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用してテンプレートを返します。

たとえば、符号化設計の指定、事後確率を近似させるかどうかの指定、バイナリ学習器のタイプの指定を行うことができます。

コマンド ウィンドウに t を表示する場合、すべてのオプションは、名前と値のペア引数を使用して指定する場合を除き、空 ([]) で表示されます。学習中、空のオプションに既定値が使用されます。

すべて折りたたむ

templateECOC を使用して既定の ECOC テンプレートを作成します。

t = templateECOC()
t = 
Fit template for classification ECOC.

    BinaryLearners: ''
            Coding: ''
      FitPosterior: []
           Options: []
    VerbosityLevel: []
     NumConcurrent: []
           Version: 1
            Method: 'ECOC'
              Type: 'classification'

MethodType を除き、テンプレート オブジェクトのすべてのプロパティは空です。ttestckfold に渡すと、空のプロパティにはそれぞれの既定値が設定されます。たとえば、BinaryLearners プロパティは、'SVM' で入力されます。他の既定値の詳細は、fitcecocを参照してください。

t は ECOC 学習器の計画です。これを作成しても、何も計算されません。ttestckfold に渡すと、ECOC 分類モデルを他のモデルと統計的に比較するための計画を指定できます。

予測子または特徴量を選択する方法として、2 つのモデルを学習させます。一方のモデルの学習に使用した予測子のサブセットをもう一方のモデルにも使用します。モデルの予測性能を統計的に比較します。少ない予測子で学習させたモデルの方が多くの予測子で学習させたモデルより性能が高いことを示す十分な証拠がある場合、以後は効率的な方のモデルを使用できます。

フィッシャーのアヤメのデータセットを読み込みます。2 次元の予測子の組み合わせをすべてプロットします。

load fisheriris
d = size(meas,2); % Number of predictors
pairs = combnk(1:d,2);

figure;
for j = 1:size(pairs,1);
    subplot(3,2,j);
    gscatter(meas(:,pairs(j,1)),meas(:,pairs(j,2)),species);
    xlabel(sprintf('meas(:,%d)',pairs(j,1)));
    ylabel(sprintf('meas(:,%d)',pairs(j,2)));
    legend off;
end

この散布図では、meas(:,3)meas(:,4) がグループを十分に分離しているように見えます。

ECOC テンプレートを作成します。1 対他の符号化計画を使用するように指定します。

t = templateECOC('Coding','onevsall');

既定の設定では、ECOC モデルは線形 SVM バイナリ学習器を使用します。'Learners' の名前と値のペアの引数によって指定すると、サポートされている他のアルゴリズムを選択できます。

予測子 3 および 4 のみを使用して学習させた ECOC モデルが、すべての予測子を使用して学習させた ECOC モデルと同程度以下の性能であるかどうかを検定します。この帰無仮説が棄却されると、予測子 3 および 4 のみを使用して学習させた ECOC モデルが、すべての予測子を使用して学習させた ECOC モデルより性能が高いことが示されます。予測子 3 および 4 を使用して学習をさせた ECOC モデルの分類誤差を 、すべての予測子を使用して学習をさせた ECOC モデルの分類誤差を で表すと、検定は次のようになります。

既定の設定では testckfold は 5 x 2 の k 分割 F 検定を実行しますが、これは片側検定に適していません。5 x 2 の k 分割 t 検定を実行するように指定します。

rng(1); % For reproducibility
[h,pValue] = testckfold(t,t,meas(:,pairs(1,:)),meas,species,...
    'Alternative','greater','Test','5x2t')
h = logical
   0

pValue = 0.8940

h = 0 なので、予測子 3 および 4 を使用して学習させたモデルが、すべての予測子を使用して学習させたモデルより精度が高いことを示す十分な証拠はありません。

入力引数

すべて折りたたむ

名前と値のペアの引数

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

例: 'Coding','ternarycomplete','FitPosterior',true,'Learners','tree' は、完全三項の符号化設計の使用、スコアの事後確率への変換、およびすべてのバイナリ学習器の分類木を成長させることを指定します。

符号化設計名。'Coding' と数値行列または次の表の値から構成されるコンマ区切りのペアとして指定します。

バイナリ学習器の数説明
'allpairs' および 'onevsone'K(K – 1)/2各バイナリ学習器では、1 つのクラスが正であり、もう 1 つのクラスは負です。残りは無視されます。この計画はすべてのクラス ペアの割り当ての組み合わせを使用します。
'binarycomplete'2(K1)1この計画はクラスをすべて 2 つの組み合わせに分割します。いずれのクラスも無視されません。各バイナリ学習器で、すべてのクラス割り当てが -11 になります。陽性クラスと陰性クラスが少なくとも 1 つずつ割り当てに含まれます。
'denserandom'ランダム。ただし、約 10 log2K各バイナリ学習器には、正または陰性クラス (少なくとも各 1 つ) が無作為に割り当てられます。詳細は、ランダム符号化設計行列を参照してください。
'onevsall'K各バイナリ学習器では、1 つのクラスは正で残りは負です。この計画は陽性クラス割り当てのすべての組み合わせを使用します。
'ordinal'K – 1最初のバイナリ学習器では、最初のクラスは負であり、残りは正です。2 番目のバイナリ学習器では、初めの 2 つのクラスが負になり、残りが正になります。3 番目以降も同様です。
'sparserandom'ランダム。ただし、約 15 log2K各バイナリ学習器では、各クラスに確率 0.25 で正または負が無作為に割り当てられ、確率が 0.5 の場合にクラスが無視されます。詳細は、ランダム符号化設計行列を参照してください。
'ternarycomplete'(3K2(K+1)+1)/2この計画はクラスをすべて 3 つの組み合わせに分割します。すべてのクラス割り当てが 0-1 および 1 になります。陽性クラスと陰性クラスが少なくとも 1 つずつ割り当てに含まれます。

符号化設計をカスタム コーディング行列を使用して指定できます。カスタム符号化行列は K 行 L 列の行列です。各行はクラスに対応し、各列はバイナリ学習器に対応します。クラス順 (行) は ClassNames での順序に対応します。以下のガイドラインに従って行列を作成します。

  • カスタム コーディング行列は、すべての要素が -10 または 1 でなければなりません。また、値は二分法によるクラス割り当てに対応しなければなりません。この表は Coding(i,j) の意味を説明します。つまり、学習器 j がクラス i の観測値に割り当てるクラスです。

    二分法によるクラス割り当て
    –1学習器 j は、クラス i の観測値を陰性クラスに割り当てます。
    0学習の前に、学習器 j はクラス i の観測値をデータセットから削除します。
    1学習器 j は、クラス i の観測値を陽性クラスに割り当てます。

  • すべての列には少なくとも 1 つの -1 または 1 がなければなりません。

  • ij となるすべての列インデックス i および j に対して、Coding(:,i)Coding(:,j) に等しくなることができず、Coding(:,i)-Coding(:,j) に等しくなることができません。

  • カスタム コーディング行列のすべての行は異なっていなければなりません。

カスタム符号化設計行列の形式の詳細については、カスタム符号化設計行列を参照してください。

例: 'Coding','ternarycomplete'

データ型: char | string | double | single | int16 | int32 | int64 | int8

スコアを変換して事後確率にするかどうかを示すフラグ。'FitPosterior' および true (1) または false (0) で構成されるコンマ区切りのペアで指定します。

FitPosteriortrue の場合、バイナリ学習器分類スコアは事後確率に変換されます。事後確率は、kfoldPredictpredict または resubPredict を使用して取得できます。

以下の場合、fitcecoc は事後確率のあてはめをサポートしません。

  • アンサンブル法が AdaBoostM2LPBoostRUSBoostRobustBoost または TotalBoost である。

  • バイナリ学習器 (Learners) が、SVM を実装する線形分類モデルまたはカーネル分類モデルである。線形分類モデルまたはカーネル分類モデルの事後確率を得るには、代わりにロジスティック回帰を実装してください。

例: 'FitPosterior',true

データ型: logical

バイナリ学習器テンプレート。'Learners' と文字ベクトル、string スカラー、テンプレート オブジェクト、またはテンプレート オブジェクトの cell ベクトルから構成されるコンマ区切りのペアとして指定します。特に、SVM などのバイナリ学習器と、GentleBoostLogitBoost および RobustBoost を使用するアンサンブルを指定すると、マルチクラス問題の解を求めることができます。ただし、fitcecoc もバイナリ分類器としてマルチクラス モデルをサポートしています。

  • Learners が文字ベクトルまたは string スカラーである場合、指定されたアルゴリズムの既定値を使用して各バイナリ学習器の学習が行なわれます。次の表は、使用可能なアルゴリズムをまとめたものです。

    説明
    'discriminant'判別分析。既定のオプションについては、templateDiscriminant を参照してください。
    'kernel'カーネル分類モデル。既定のオプションについては、templateKernel を参照してください。
    'knn'k 最近傍。既定のオプションについては、templateKNN を参照してください。
    'linear'線形分類モデル。既定のオプションについては、templateLinear を参照してください。
    'naivebayes'単純ベイズ。既定のオプションについては、templateNaiveBayes を参照してください。
    'svm'SVM。既定のオプションについては、templateSVM を参照してください。
    'tree'分類木。既定のオプションについては、templateTree を参照してください。

  • Learners がテンプレート オブジェクトの場合、各バイナリ学習器は格納されているオプションに従って学習します。テンプレート オブジェクトは以下を使用して作成できます。

  • Learners がテンプレート オブジェクトの cell ベクトルである場合、以下のようになります。

    • セル j は、バイナリ学習器 j (符号化設計行列の j 列目) に対応します。cell ベクトルの長さは L でなければなりません。L は、符号化設計行列の列数です。詳細は、Coding を参照してください。

    • 予測に組み込み損失関数のいずれかを使用するには、すべてのバイナリ学習器は同じ範囲のスコアを返さなくてはなりません。たとえば、既定の SVM バイナリ学習器と既定の単純ベイズ学習器を同時に含めることはできません。前者は (-∞,∞) の範囲にあるスコアを、後者はスコアとして事後確率を返します。それ以外の場合は、カスタム損失を関数ハンドルとして関数 predictloss などに指定しなくてはなりません。

    • 線形分類モデル学習器のテンプレートを他のテンプレートとともに指定することはできません。

    • 同様に、カーネル分類モデル学習器のテンプレートを他のテンプレートとともに指定することはできません。

既定では、既定の SVM テンプレートが学習器の学習に使用されます。

例: 'Learners','tree'

出力引数

すべて折りたたむ

ECOC 分類テンプレート。テンプレート オブジェクトとして返されます。予測性能を他の分類器と比較する ECOC 分類器の作成方法を指定するには、ttestckfold に渡します。

コマンド ウィンドウに t を表示する場合、すべての未指定のオプションは空 ([]) で表示されます。しかし、空のオプションは学習中に対応する既定値に置き換えられます。

R2015a で導入