templateECOC
誤り訂正出力符号学習器のテンプレート
説明
は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用してテンプレートを返します。t = templateECOC(Name,Value)
たとえば、符号化設計の指定、事後確率を当てはめるかどうかの指定、バイナリ学習器のタイプの指定を行うことができます。
コマンド ウィンドウに t を表示する場合、すべてのオプションは、名前と値のペア引数を使用して指定する場合を除き、空 ([]) で表示されます。学習中、空のオプションに既定値が使用されます。
例
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 つのモデルを学習させます。一方のモデルの学習に使用した予測子のサブセットをもう一方のモデルにも使用します。モデルの予測性能を統計的に比較します。少ない予測子で学習させたモデルの方が多くの予測子で学習させたモデルより性能が高いことを示す十分な証拠がある場合、以後は効率的な方のモデルを使用できます。
フィッシャーのアヤメのデータ セットを読み込みます。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' と数値行列または次の表の値から構成されるコンマ区切りのペアとして指定します。
| 値 | バイナリ学習器の数 | 説明 |
|---|---|---|
"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' および true (1) または false (0) で構成されるコンマ区切りのペアで指定します。
FitPosterior が true の場合、バイナリ学習器分類スコアは事後確率に変換されます。事後確率は、kfoldPredict、predict または resubPredict を使用して取得できます。
以下の場合、fitcecoc は事後確率の当てはめをサポートしません。
アンサンブル法が
AdaBoostM2、LPBoost、RUSBoost、RobustBoostまたはTotalBoostである。バイナリ学習器 (
Learners) が、SVM を実装する線形分類モデルまたはカーネル分類モデルである。線形分類モデルまたはカーネル分類モデルの事後確率を得るには、代わりにロジスティック回帰を実装してください。
例: 'FitPosterior',true
データ型: logical
バイナリ学習器テンプレート。文字ベクトル、string スカラー、テンプレート オブジェクト、またはテンプレート オブジェクトの cell ベクトルとして指定します。特に、SVM などのバイナリ学習器と、GentleBoost、LogitBoost および RobustBoost を使用するアンサンブルを指定すると、マルチクラス問題の解を求めることができます。ただし、fitcecoc もバイナリ分類器としてマルチクラス モデルをサポートしています。
Learnersが文字ベクトルまたは string スカラーである場合、指定されたアルゴリズムの既定値を使用して各バイナリ学習器の学習が行なわれます。次の表は、使用可能なアルゴリズムをまとめたものです。値 説明 "discriminant"判別分析。既定のオプションについては、 templateDiscriminantを参照してください。"ensemble"(R2024a 以降)アンサンブル学習モデル。既定では、適応ロジスティック回帰 ( "LogitBoost") 集約法、100 学習サイクル、木弱学習器を使用するアンサンブルになります。その他の既定のオプションについては、templateEnsembleを参照してください。"kernel"カーネル分類モデル。既定のオプションについては、 templateKernelを参照してください。"knn"k 最近傍。既定のオプションについては、 templateKNNを参照してください。"linear"線形分類モデル。既定のオプションについては、 templateLinearを参照してください。"naivebayes"単純ベイズ。既定のオプションについては、 templateNaiveBayesを参照してください。"svm"SVM。既定のオプションについては、 templateSVMを参照してください。"tree"分類木。既定のオプションについては、 templateTreeを参照してください。Learnersがテンプレート オブジェクトの場合、各バイナリ学習器は格納されているオプションに従って学習します。テンプレート オブジェクトは以下を使用して作成できます。templateDiscriminant、判別分析用。templateEnsemble、アンサンブル学習用。少なくとも学習の方式 (Method)、学習器の数 (NLearn) および学習器のタイプ (Learners) を指定しなくてはなりません。バイナリ学習にはアンサンブル法"AdaBoostM2"を使用できません。名前と値の引数OptimizeHyperparametersを使用してハイパーパラメーターの最適化を実行する場合、アンサンブル法は"AdaBoostM1"、"GentleBoost"、または"LogitBoost"でなければならず、アンサンブルの弱学習器は木でなければなりません。templateKernel、カーネル分類用。k 最近傍向けの
templateKNN。templateLinear、線形分類用。templateNaiveBayes、単純ベイズ用。templateSVM、SVM 用。templateTree、分類木用。
Learnersがテンプレート オブジェクトの cell ベクトルである場合、以下のようになります。セル j は、バイナリ学習器 j (符号化設計行列の j 列目) に対応します。cell ベクトルの長さは L でなければなりません。L は、符号化設計行列の列数です。詳細については、
Codingを参照してください。予測に組み込み損失関数のいずれかを使用するには、すべてのバイナリ学習器は同じ範囲のスコアを返さなくてはなりません。たとえば、既定の SVM バイナリ学習器と既定の単純ベイズ学習器を同時に含めることはできません。前者は (-∞,∞) の範囲にあるスコアを、後者はスコアとして事後確率を返します。それ以外の場合は、カスタム損失を関数ハンドルとして関数
predictやlossなどに指定しなくてはなりません。線形分類モデル学習器のテンプレートを他のテンプレートとともに指定することはできません。
同様に、カーネル分類モデル学習器のテンプレートを他のテンプレートとともに指定することはできません。
既定では、既定の SVM テンプレートが学習器の学習に使用されます。
例: "Learners","tree"
出力引数
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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)