このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
templateECOC
誤り訂正出力符号学習器のテンプレート
説明
は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用してテンプレートを返します。t
= templateECOC(Name,Value
)
たとえば、符号化設計の指定、事後確率を近似させるかどうかの指定、バイナリ学習器のタイプの指定を行うことができます。
コマンド ウィンドウに t
を表示する場合、すべてのオプションは、名前と値のペア引数を使用して指定する場合を除き、空 ([]
) で表示されます。学習中、空のオプションに既定値が使用されます。
例
既定の ECOC 分類学習器テンプレートの作成
templateECOC
を使用して既定の ECOC テンプレートを作成します。
t = templateECOC()
t = Fit template for classification ECOC. BinaryLearners: '' Coding: '' FitPosterior: [] Options: [] VerbosityLevel: [] NumConcurrent: [] Version: 1 Method: 'ECOC' Type: 'classification'
Method
と Type
を除き、テンプレート オブジェクトのすべてのプロパティは空です。t
を testckfold
に渡すと、空のプロパティにはそれぞれの既定値が設定されます。たとえば、BinaryLearners
プロパティは、'SVM'
で入力されます。他の既定値の詳細は、fitcecoc
を参照してください。
t
は ECOC 学習器の計画です。これを作成しても、何も計算されません。t
を testckfold
に渡すと、ECOC 分類モデルを他のモデルと統計的に比較するための計画を指定できます。
2 つの ECOC 分類モデルの性能の統計的な比較
予測子または特徴量を選択する方法として、2 つのモデルを学習させます。一方のモデルの学習に使用した予測子のサブセットをもう一方のモデルにも使用します。モデルの予測性能を統計的に比較します。少ない予測子で学習させたモデルの方が多くの予測子で学習させたモデルより性能が高いことを示す十分な証拠がある場合、以後は効率的な方のモデルを使用できます。
フィッシャーのアヤメのデータセットを読み込みます。2 次元の予測子の組み合わせをすべてプロットします。
load fisheriris d = size(meas,2); % Number of predictors pairs = nchoosek(1:d,2)
pairs = 6×2
1 2
1 3
1 4
2 3
2 4
3 4
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(6,:)),meas,species,... 'Alternative','greater','Test','5x2t')
h = logical
0
pValue = 0.8940
h = 0
なので、予測子 3 および 4 を使用して学習させたモデルが、すべての予測子を使用して学習させたモデルより精度が高いことを示す十分な証拠はありません。
入力引数
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'Coding','ternarycomplete','FitPosterior',true,'Learners','tree'
は、完全三項の符号化設計の使用、スコアの事後確率への変換、およびすべてのバイナリ学習器の分類木を成長させることを指定します。
Coding
— 符号化設計
'onevsone'
(既定値) | 'allpairs'
| 'binarycomplete'
| 'denserandom'
| 'onevsall'
| 'ordinal'
| 'sparserandom'
| 'ternarycomplete'
| 数値行列
符号化設計名。'Coding'
と数値行列または次の表の値から構成されるコンマ区切りのペアとして指定します。
値 | バイナリ学習器の数 | 説明 |
---|---|---|
'allpairs' および 'onevsone' | K(K – 1)/2 | 各バイナリ学習器では、1 つのクラスが陽性であり、もう 1 つのクラスは陰性です。残りは無視されます。この計画はすべてのクラス ペアの割り当ての組み合わせを使用します。 |
'binarycomplete' | この計画はクラスをすべて 2 つの組み合わせに分割します。いずれのクラスも無視されません。各バイナリ学習器では、すべてのクラス割り当てが –1 および 1 になり、割り当てに陽性クラスと陰性クラスが少なくとも 1 つずつ含まれます。 | |
'denserandom' | ランダム。ただし、約 10 log2K | 各バイナリ学習器には、陽性または陰性クラス (少なくとも各 1 つ) が無作為に割り当てられます。詳細については、ランダム符号化設計行列を参照してください。 |
'onevsall' | K | 各バイナリ学習器では、1 つのクラスは陽性で残りは陰性です。この計画は陽性クラス割り当てのすべての組み合わせを使用します。 |
'ordinal' | K – 1 | 1 番目のバイナリ学習器では、1 番目のクラスが陰性であり、残りは陽性です。2 番目のバイナリ学習器では、最初の 2 つのクラスが陰性であり、残りは陽性です。他についても同様です。 |
'sparserandom' | ランダム。ただし、約 15 log2K | 各バイナリ学習器では、各クラスに確率 0.25 で陽性または陰性が無作為に割り当てられ、確率が 0.5 の場合にクラスが無視されます。詳細については、ランダム符号化設計行列を参照してください。 |
'ternarycomplete' | この計画はクラスをすべて 3 つの組み合わせに分割します。すべてのクラス割り当てが 0 、–1 、および 1 になり、各割り当てに陽性クラスと陰性クラスが少なくとも 1 つずつ含まれます。 |
符号化設計は、カスタム符号化行列を使用して指定することもできます。K 行 L 列の行列を使用します。各行はクラスに対応し、各列はバイナリ学習器に対応します。クラス順 (行) は ClassNames
での順序に対応します。以下のガイドラインに従って行列を作成します。
カスタム符号化行列は、すべての要素が
–1
、0
、または1
でなければなりません。また、値は二分法によるクラス割り当てに対応しなければなりません。Coding(i,j)
は、学習器j
がクラスi
の観測値に割り当てるクラスとなります。値 二分法によるクラス割り当て –1
学習器 j
は、クラスi
の観測値を陰性クラスに割り当てます。0
学習の前に、学習器 j
はクラスi
の観測値をデータセットから削除します。1
学習器 j
は、クラスi
の観測値を陽性クラスに割り当てます。すべての列に
–1
および1
が少なくとも 1 つずつ含まれていなければなりません。i
≠j
となるすべての列インデックスi
およびj
について、Coding(:,i)
はCoding(:,j)
と等しくなることができず、Coding(:,i)
は–Coding(:,j)
と等しくなることができません。カスタム符号化行列のすべての行は異なっていなければなりません。
カスタム符号化設計行列の形式の詳細については、カスタム符号化設計行列を参照してください。
例: 'Coding','ternarycomplete'
データ型: char
| string
| double
| single
| int16
| int32
| int64
| int8
FitPosterior
— スコアを事後確率に変換するかどうかを示すフラグ
false
または 0
(既定値) | true
または 1
スコアを変換して事後確率にするかどうかを示すフラグ。'FitPosterior'
および true
(1
) または false
(0
) で構成されるコンマ区切りのペアで指定します。
FitPosterior
が true
の場合、バイナリ学習器分類スコアは事後確率に変換されます。事後確率は、kfoldPredict
、predict
または resubPredict
を使用して取得できます。
以下の場合、fitcecoc
は事後確率の当てはめをサポートしません。
アンサンブル法が
AdaBoostM2
、LPBoost
、RUSBoost
、RobustBoost
またはTotalBoost
である。バイナリ学習器 (
Learners
) が、SVM を実装する線形分類モデルまたはカーネル分類モデルである。線形分類モデルまたはカーネル分類モデルの事後確率を得るには、代わりにロジスティック回帰を実装してください。
例: 'FitPosterior',true
データ型: logical
Learners
— バイナリ学習器テンプレート
'svm'
(既定値) | 'discriminant'
| 'kernel'
| 'knn'
| 'linear'
| 'naivebayes'
| 'tree'
| テンプレート オブジェクト | テンプレート オブジェクトの cell ベクトル
バイナリ学習器テンプレート。'Learners'
と文字ベクトル、string スカラー、テンプレート オブジェクト、またはテンプレート オブジェクトの cell ベクトルから構成されるコンマ区切りのペアとして指定します。特に、SVM などのバイナリ学習器と、GentleBoost
、LogitBoost
および RobustBoost
を使用するアンサンブルを指定すると、マルチクラス問題の解を求めることができます。ただし、fitcecoc
もバイナリ分類器としてマルチクラス モデルをサポートしています。
Learners
が文字ベクトルまたは string スカラーである場合、指定されたアルゴリズムの既定値を使用して各バイナリ学習器の学習が行なわれます。次の表は、使用可能なアルゴリズムをまとめたものです。値 説明 'discriminant'
判別分析。既定のオプションについては、 templateDiscriminant
を参照してください。'kernel'
カーネル分類モデル。既定のオプションについては、 templateKernel
を参照してください。'knn'
k 最近傍。既定のオプションについては、 templateKNN
を参照してください。'linear'
線形分類モデル。既定のオプションについては、 templateLinear
を参照してください。'naivebayes'
単純ベイズ。既定のオプションについては、 templateNaiveBayes
を参照してください。'svm'
SVM。既定のオプションについては、 templateSVM
を参照してください。'tree'
分類木。既定のオプションについては、 templateTree
を参照してください。Learners
がテンプレート オブジェクトの場合、各バイナリ学習器は格納されているオプションに従って学習します。テンプレート オブジェクトは以下を使用して作成できます。templateDiscriminant
、判別分析用。templateEnsemble
、アンサンブル学習用。少なくとも学習の方式 (Method
)、学習器の数 (NLearn
) および学習器のタイプ (Learners
) を指定しなくてはなりません。バイナリ学習にはアンサンブル法AdaBoostM2
を使用できません。templateKernel
、カーネル分類用。k 最近傍向けの
templateKNN
。templateLinear
、線形分類用。templateNaiveBayes
、単純ベイズ用。templateSVM
、SVM 用。templateTree
、分類木用。
Learners
がテンプレート オブジェクトの cell ベクトルである場合、以下のようになります。セル j は、バイナリ学習器 j (符号化設計行列の j 列目) に対応します。cell ベクトルの長さは L でなければなりません。L は、符号化設計行列の列数です。詳細については、
Coding
を参照してください。予測に組み込み損失関数のいずれかを使用するには、すべてのバイナリ学習器は同じ範囲のスコアを返さなくてはなりません。たとえば、既定の SVM バイナリ学習器と既定の単純ベイズ学習器を同時に含めることはできません。前者は (-∞,∞) の範囲にあるスコアを、後者はスコアとして事後確率を返します。それ以外の場合は、カスタム損失を関数ハンドルとして関数
predict
やloss
などに指定しなくてはなりません。線形分類モデル学習器のテンプレートを他のテンプレートとともに指定することはできません。
同様に、カーネル分類モデル学習器のテンプレートを他のテンプレートとともに指定することはできません。
既定では、既定の SVM テンプレートが学習器の学習に使用されます。
例: 'Learners','tree'
出力引数
t
— ECOC 分類テンプレート
テンプレート オブジェクト
ECOC 分類テンプレート。テンプレート オブジェクトとして返されます。予測性能を他の分類器と比較する ECOC 分類器の作成方法を指定するには、t
を testckfold
に渡します。
コマンド ウィンドウに t
を表示する場合、すべての未指定のオプションは空 ([]
) で表示されます。しかし、空のオプションは学習中に対応する既定値に置き換えられます。
アルゴリズム
カスタム符号化設計行列
カスタム符号化行列は特定の形式でなければなりません。ソフトウェアによるカスタム符号化行列の検証では、以下について確認されます。
すべての要素が –1、0、または 1 である。
すべての列に –1 および 1 が少なくとも 1 つずつ含まれている。
すべての列ベクトル u と v のそれぞれについて、u ≠ v かつ u ≠ –v である。
すべての行ベクトルが一意である。
行列は任意の 2 つのクラスを分離できます。つまり、任意の行から他の任意の行に次のルールに従って移動できる。
1 から –1 または –1 から 1 に垂直方向に移動。
非ゼロ要素から別の非ゼロ要素に水平方向に移動。
垂直方向の移動に行列の列を一度だけ使用。
上記のルールを使用して、行 i から行 j に移動できない場合、クラス i および j は計画により分離できません。たとえば、次の符号化設計ではクラス 1 および 2 をクラス 3 および 4 から分離できません。
2 行目の 2 列目に 0 があるので、2 行目の –1 を 2 列目に水平に移動できません。したがって、この符号化設計は拒否されます。
ランダム符号化設計行列
K 個のクラスに対して、ランダム符号化設計行列が以下のように生成されます。
次のいずれかの行列が生成されます。
密なランダム — K 行 Ld 列の符号化設計行列の各要素に同じ確率で 1 または –1 が割り当てられます。ここで です。
スパース ランダム — K 行 Ls 列の符号化設計行列の各要素に 0.25 の確率で 1、0.25 の確率で -1、0.5 の確率で 0 が割り当てられます。ここで です。
1 および –1 が少なくとも 1 つずつ列に含まれていない場合、その列は削除されます。
異なる列 u および v について u = v または u = –v である場合、v が符号化設計行列から削除されます。
既定では 10,000 個の行列が無作為に生成されます。次によって与えられるハミング尺度 ([2]) に基づき、行の最小ペアワイズ距離が最大になる行列が保持されます。
ここで、mkjl は符号化設計行列 j の要素です。
参照
[1] Fürnkranz, Johannes. “Round Robin Classification.” J. Mach. Learn. Res., Vol. 2, 2002, pp. 721–747.
[2] 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.
バージョン履歴
R2015a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)