ClassificationECOC
サポート ベクター マシン (SVM) などの分類器用のマルチクラス モデル
説明
ClassificationECOC は、分類器が複数のバイナリ学習器 (サポート ベクター マシン (SVM) など) から構成されている場合の、マルチクラス学習用の誤り訂正出力符号 (ECOC) 分類器です。学習済みの ClassificationECOC 分類器には、学習データ、パラメーター値、事前確率および符号化行列が格納されます。これらの分類器を使用して、新しいデータのラベルや事後確率を予測する (predict を参照) などのタスクを実行できます。
作成
ClassificationECOC オブジェクトの作成には fitcecoc を使用します。
交差検証オプションを指定せずに線形またはカーネル バイナリ学習器を指定した場合、fitcecoc は代わりに CompactClassificationECOC オブジェクトを返します。
プロパティ
ClassificationECOC モデル オブジェクトを作成した後で、ドット表記を使用してプロパティにアクセスできます。たとえば、SVM 学習器を使用したマルチクラス モデルの学習を参照してください。
ECOC のプロパティ
学習済みバイナリ学習器。モデル オブジェクトの cell ベクトルを指定します。バイナリ学習器の個数は、Y 内のクラス数と符号化設計によって異なります。
BinaryLearner{j} の学習は、CodingMatrix(:,j) によって指定されるバイナリ問題に従って行われます。たとえば、SVM 学習器を使用したマルチクラス学習では、BinaryLearners の各要素は CompactClassificationSVM 分類器です。
データ型: cell
バイナリ学習器の損失関数。損失関数名を表す文字ベクトルを指定します。
次の表に BinaryLoss の既定値を示します。既定値は、バイナリ学習器が返すスコアの範囲によって異なります。
| 仮定 | 既定値 |
|---|---|
すべてのバイナリ学習器が次のいずれかである。
| "quadratic" |
| すべてのバイナリ学習器が SVM であるか、SVM 学習器の線形またはカーネル分類モデルである。 | "hinge" |
すべてのバイナリ学習器が、AdaboostM1 または GentleBoost によって学習をさせたアンサンブルである。 | "exponential" |
すべてのバイナリ学習器が、LogitBoost によって学習をさせたアンサンブルである。 | "binodeviance" |
fitcecoc で FitPosterior=true を設定して、クラスの事後確率を予測するように指定している。 | "quadratic" |
| バイナリ学習器が異種混合で、さまざまな損失関数を使用している。 | "hamming" |
既定値を確認するには、コマンド ラインでドット表記を使用して学習済みモデルの BinaryLoss プロパティを表示します。
精度が向上する可能性を高めるには、predict または loss の名前と値の引数 BinaryLoss を使用して、予測または損失を計算するときに既定以外のバイナリ損失関数を指定します。詳細については、バイナリ損失を参照してください。
データ型: char
バイナリ学習器クラス ラベル。数値行列として指定します。BinaryY は NumObservations 行 L 列の行列で、L はバイナリ学習器 (length(Mdl.BinaryLearners)) 数です。
BinaryY の要素は –1、0 または 1 で、値は二分法によるクラス割り当てに対応します。次の表に、学習器 j が観測値 k を BinaryY(k,j) の値に対応する二分クラスに割り当てる方法を示します。
| 値 | 二分法によるクラス割り当て |
|---|---|
–1 | 学習器 j は、観測値 k を陰性クラスに割り当てます。 |
0 | 学習の前に、学習器 j は観測値 k をデータ セットから削除します。 |
1 | 学習器 j は、観測値 k を陽性クラスに割り当てます。 |
データ型: double
この プロパティ は読み取り専用です。
数値予測子のビンのエッジ。p 個の数値ベクトルが含まれている cell 配列を指定します。p は予測子の個数です。各ベクトルには、数値予測子のビンのエッジを含めます。カテゴリカル予測子はビン化されないので、カテゴリカル予測子の場合は、この cell 配列の要素を空にします。
数値予測子がビン化されるのは、木学習器を使用してモデルに学習をさせるときに名前と値の引数 NumBins として正の整数スカラーを指定した場合だけです。NumBins の値が空 (既定) である場合、BinEdges プロパティは空になります。
学習済みモデル mdl の BinEdges プロパティを使用することにより、ビン化された予測子データ Xbinned を再現できます。
X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
idxNumeric = idxNumeric';
end
for j = idxNumeric
x = X(:,j);
% Convert x to array if x is a table.
if istable(x)
x = table2array(x);
end
% Group x into bins by using the discretize function.
xbinned = discretize(x,[-inf; edges{j}; inf]);
Xbinned(:,j) = xbinned;
endXbinned に格納されます。カテゴリカル予測子の場合、Xbinned の値は 0 になります。X に NaN が含まれている場合、対応する Xbinned の値は NaN になります。データ型: cell
バイナリ学習器のクラス割り当て符号。数値行列を指定します。CodingMatrix は K 行 L 列の行列で、K はクラスの個数、L はバイナリ学習器の個数です。
CodingMatrix の要素は –1、0、1 であり、値は二分法によるクラス割り当てに対応します。次の表に、学習器 j がクラス i の観測値を CodingMatrix(i,j) の値に対応する二分クラスに割り当てる方法を示します。
| 値 | 二分法によるクラス割り当て |
|---|---|
–1 | 学習器 j は、クラス i の観測値を陰性クラスに割り当てます。 |
0 | 学習の前に、学習器 j はクラス i の観測値をデータ セットから削除します。 |
1 | 学習器 j は、クラス i の観測値を陽性クラスに割り当てます。 |
データ型: double | single | int8 | int16 | int32 | int64
符号化設計名。文字ベクトルを指定します。詳細は、符号化設計を参照してください。
データ型: char
バイナリ学習器の重み。数値行ベクトルを指定します。LearnerWeights の長さは、バイナリ学習器の個数 (length(Mdl.BinaryLearners)) と同じです。
LearnerWeights(j) は、分類器に学習をさせるためにバイナリ学習器 j が使用する観測値の重みの合計です。
LearnerWeights を使用し、カルバック・ライブラー ダイバージェンスの最小化により事後確率を当てはめます。事後確率の推定に二次計画法を使用する場合、LearnerWeights は無視されます。
データ型: double | single
他の分類のプロパティ
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。
データ型: single | double
この プロパティ は読み取り専用です。
学習で使用する一意なクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。ClassNames のデータ型はクラス ラベル Y と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。ClassNames はクラスの順序も決定します。
データ型: categorical | char | logical | single | double | cell
この プロパティ は読み取り専用です。
誤分類のコスト。正方数値行列として指定します。Cost には K 個の行および列が含まれ、K はクラスの数です。
Cost(i,j) は、真のクラスが i である点をクラス j に分類するコストです。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。
データ型: double
展開された予測子名。文字ベクトルの cell 配列を指定します。
モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames は PredictorNames と同じです。
データ型: cell
ECOC 分類器の学習に使用するパラメーター値 (名前と値のペアの引数の値など)。オブジェクトを指定します。推定パラメーターは ModelParameters に格納されません。
ModelParameters のプロパティにはドット表記でアクセスします。たとえば、バイナリ学習器のパラメーターが含まれているテンプレートをリストするには、Mdl.ModelParameters.BinaryLearner を使用します。
学習データに含まれている観測値の数。正の数値スカラーを指定します。
データ型: double
この プロパティ は読み取り専用です。
予測子データ X に現れる順序で並んでいる予測子名。文字ベクトルの cell 配列を指定します。PredictorNames の長さは、X の列数と同じです。
データ型: cell
この プロパティ は読み取り専用です。
クラスの事前確率。数値ベクトルを指定します。Prior の要素数は ClassNames のクラス数と同じであり、要素の順序は ClassNames 内のクラスの順序に対応します。
fitcecoc は、異なるタイプのバイナリ学習器に異なる誤分類のコストを組み込みます。
データ型: double
応答変数名。文字ベクトルを指定します。
データ型: char
ClassificationECOC モデルの当てはめに使用した元の学習データの行。logical ベクトルを返します。すべての行を使用した場合、このプロパティは空になります。
データ型: logical
この プロパティ は読み取り専用です。
予測されたスコアに適用するスコア変換関数。'none' を指定します。ECOC モデルではスコア変換はサポートされません。
ECOC 分類器の学習に使用する観測値の重み。数値ベクトルを指定します。W の要素数は NumObservations です。
学習に使用する重みは正規化され sum(W,'omitnan') は 1 になります。
データ型: single | double
ECOC 分類器の学習に使用する、標準化されていない予測子データ。数値行列または table を指定します。
X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
データ型: single | double | table
ECOC 分類器の学習に使用する、観測されたクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y の要素数は NumObservations で、データ型は fitcecoc の入力引数 Y と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。
Y の各行は、X の対応する行の観測された分類を表します。
データ型: categorical | char | logical | single | double | cell
ハイパーパラメーター最適化のプロパティ
この プロパティ は読み取り専用です。
ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれている table または BayesianOptimization オブジェクトを指定します。モデルを作成するときに名前と値のペアの引数 'OptimizeHyperparameters' が空以外であった場合、このプロパティは空以外になります。HyperparameterOptimizationResults の値は、モデル作成時の構造体 HyperparameterOptimizationOptions の Optimizer フィールドの設定によって変化します。
Optimizer オプションの値 | HyperparameterOptimizationResults の値 |
|---|---|
"bayesopt" (既定の設定) | BayesianOptimization クラスのオブジェクト |
"gridsearch" または "randomsearch" | 使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されている table |
オブジェクト関数
compact | 機械学習モデルのサイズの縮小 |
compareHoldout | 新しいデータを使用して 2 つの分類モデルの精度を比較 |
crossval | 機械学習モデルの交差検証 |
discardSupportVectors | ECOC モデルの線形 SVM バイナリ学習器のサポート ベクターを破棄 |
edge | マルチクラス誤り訂正出力符号 (ECOC) モデルの分類エッジ |
gather | Gather properties of Statistics and Machine Learning Toolbox object from GPU |
incrementalLearner | マルチクラス誤り訂正出力符号 (ECOC) モデルをインクリメンタル学習器に変換 |
loss | マルチクラス誤り訂正出力符号 (ECOC) モデルの分類損失 |
margin | マルチクラス誤り訂正出力符号 (ECOC) モデルの分類マージン |
partialDependence | 部分依存の計算 |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
predict | マルチクラス誤り訂正出力符号 (ECOC) モデルを使用して観測値を分類 |
resubEdge | マルチクラス誤り訂正出力符号 (ECOC) モデルの再代入分類エッジ |
lime | Local Interpretable Model-agnostic Explanations (LIME) |
resubLoss | マルチクラス誤り訂正出力符号 (ECOC) モデルの再代入分類損失 |
resubMargin | マルチクラス誤り訂正出力符号 (ECOC) モデルの再代入分類マージン |
resubPredict | マルチクラス誤り訂正出力符号 (ECOC) モデル内の観測値を分類 |
shapley | シャープレイ値 |
testckfold | 交差検証の反復により 2 つの分類モデルの精度を比較 |
例
サポート ベクター マシン (SVM) バイナリ学習器を使用して、マルチクラス誤り訂正出力符号 (ECOC) モデルに学習をさせます。
フィッシャーのアヤメのデータ セットを読み込みます。予測子データ X と応答データ Y を指定します。
load fisheriris
X = meas;
Y = species;既定のオプションを使用して、マルチクラス ECOC モデルに学習をさせます。
Mdl = fitcecoc(X,Y)
Mdl =
ClassificationECOC
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
BinaryLearners: {3×1 cell}
CodingName: 'onevsone'
Properties, Methods
Mdl は ClassificationECOC モデルです。既定では、fitcecoc は SVM バイナリ学習器および 1 対 1 符号化設計を使用します。ドット表記を使用して Mdl プロパティにアクセスできます。
クラス名および符号化設計行列を表示します。
Mdl.ClassNames
ans = 3×1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
CodingMat = Mdl.CodingMatrix
CodingMat = 3×3
1 1 0
-1 0 1
0 -1 -1
3 つのクラスに対して 1 対 1 符号化設計を使用すると、3 つのバイナリ学習器が生成されます。CodingMat の列は学習器に、行はクラスに対応します。クラスの順序は Mdl.ClassNames 内の順序と同じです。たとえば、CodingMat(:,1) は [1; –1; 0] であり、'setosa' または 'versicolor' として分類されるすべての観測値を使用して最初の SVM バイナリ学習器が学習を行うことを示します。'setosa' は 1 に対応するので陽性クラスであり、'versicolor' は –1 に対応するので陰性クラスです。
各バイナリ学習器にセルのインデックス付けおよびドット表記を使用してアクセスすることができます。
Mdl.BinaryLearners{1} % The first binary learnerans =
CompactClassificationSVM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [-1 1]
ScoreTransform: 'none'
Beta: [4×1 double]
Bias: 1.4505
KernelParameters: [1×1 struct]
Properties, Methods
再代入分類誤差を計算します。
error = resubLoss(Mdl)
error = 0.0067
学習データに対する分類誤差は小さくなっていますが、分類器が過適合モデルになる可能性があります。代わりに、crossval を使用して分類器を交差検証し、交差検証分類誤差を計算することができます。
SVM バイナリ学習器を使用して ECOC 分類器に学習をさせます。次に、ドット表記を使用して、バイナリ学習器のプロパティ (推定パラメーターなど) にアクセスします。
フィッシャーのアヤメのデータ セットを読み込みます。予測子として花弁の寸法を、応答として種の名前を指定します。
load fisheriris
X = meas(:,3:4);
Y = species;SVM バイナリ学習器および既定の符号化設計 (1 対 1) を使用して ECOC 分類器に学習をさせます。予測子を標準化し、サポート ベクターを保存します。
t = templateSVM('Standardize',true,'SaveSupportVectors',true); predictorNames = {'petalLength','petalWidth'}; responseName = 'irisSpecies'; classNames = {'setosa','versicolor','virginica'}; % Specify class order Mdl = fitcecoc(X,Y,'Learners',t,'ResponseName',responseName,... 'PredictorNames',predictorNames,'ClassNames',classNames)
Mdl =
ClassificationECOC
PredictorNames: {'petalLength' 'petalWidth'}
ResponseName: 'irisSpecies'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
BinaryLearners: {3×1 cell}
CodingName: 'onevsone'
Properties, Methods
tは SVM 分類のオプションを含むテンプレート オブジェクトです。関数 fitcecoc は、空 ([]) のプロパティについて既定値を使用します。Mdl は ClassificationECOC 分類器です。ドット表記を使用して Mdl のプロパティにアクセスできます。
クラス名および符号化設計行列を表示します。
Mdl.ClassNames
ans = 3×1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
Mdl.CodingMatrix
ans = 3×3
1 1 0
-1 0 1
0 -1 -1
列は SVM バイナリ学習器に対応し、行は個々のクラスに対応します。行の順序は、Mdl の ClassNames プロパティにおける順序と同じです。各列について:
1は、対応するクラスの観測値を陽性のグループのメンバーとして使用してfitcecocが SVM に学習をさせることを示します。–1は、対応するクラスの観測値を陰性のグループのメンバーとして使用してfitcecocが SVM に学習をさせることを示します。0は、対応するクラスの観測値を SVM が使用しないことを示します。
たとえば、1 番目の SVM で fitcecoc はすべての観測値を 'setosa' または 'versicolor' に割り当てていますが、'virginica' には割り当てていません。
セルの添字とドット表記を使用して、SVM のプロパティにアクセスします。各 SVM の標準化されたサポート ベクターを保存します。サポート ベクターを非標準化します。
L = size(Mdl.CodingMatrix,2); % Number of SVMs sv = cell(L,1); % Preallocate for support vector indices for j = 1:L SVM = Mdl.BinaryLearners{j}; sv{j} = SVM.SupportVectors; sv{j} = sv{j}.*SVM.Sigma + SVM.Mu; end
sv は、SVM の非標準化されたサポート ベクターを含む行列の cell 配列です。
データをプロットし、サポート ベクターを特定します。
figure gscatter(X(:,1),X(:,2),Y); hold on markers = {'ko','ro','bo'}; % Should be of length L for j = 1:L svs = sv{j}; plot(svs(:,1),svs(:,2),markers{j},... 'MarkerSize',10 + (j - 1)*3); end title('Fisher''s Iris -- ECOC Support Vectors') xlabel(predictorNames{1}) ylabel(predictorNames{2}) legend([classNames,{'Support vectors - SVM 1',... 'Support vectors - SVM 2','Support vectors - SVM 3'}],... 'Location','Best') hold off

次の関数に Mdl を渡すことができます。
predict。新しい観測値を分類します。resubLoss。学習データに対する分類誤差を推定します。crossval。10 分割交差検証を実行します。
SVM バイナリ学習器による ECOC 分類器を交差検証し、一般化分類誤差を推定します。
フィッシャーのアヤメのデータ セットを読み込みます。予測子データ X と応答データ Y を指定します。
load fisheriris X = meas; Y = species; rng(1); % For reproducibility
SVM テンプレートを作成し、予測子を標準化します。
t = templateSVM('Standardize',true)t =
Fit template for SVM.
Standardize: 1
t は SVM テンプレートです。テンプレート オブジェクトのプロパティは、ほとんとが空です。ECOC 分類器に学習をさせると、該当するプロパティが既定値に設定されます。
ECOC 分類器に学習をさせ、クラスの順序を指定します。
Mdl = fitcecoc(X,Y,'Learners',t,... 'ClassNames',{'setosa','versicolor','virginica'});
Mdl は ClassificationECOC 分類器です。ドット表記を使用してプロパティにアクセスできます。
10 分割交差検証を使用して Mdl を交差検証します。
CVMdl = crossval(Mdl);
CVMdl は ClassificationPartitionedECOC 交差検証 ECOC 分類器です。
一般化分類誤差を推定します。
genError = kfoldLoss(CVMdl)
genError = 0.0400
一般化分類誤差が 4% なので、ECOC 分類器がかなり良好に一般化を行うことがわかります。
詳細
"誤り訂正出力符号 (ECOC) モデル" は、3 つ以上のクラスがある分類の問題を一連のバイナリ分類問題に縮小します。
ECOC 分類は、バイナリ学習器が学習するクラスを決定する符号化設計と、バイナリ学習器の結果 (予測) が集計される方法を決定する復号化スキームを必要とします。
以下のように仮定します。
分類問題には 3 つのクラスがある。
符号化設計が 1 対 1 である。3 クラスの場合、この符号化設計は次のようになります。
分類モデルを作成するときに、名前と値の引数
Codingを使用して別の符号化設計を指定できます。モデルでの予測クラスの判定にバイナリ損失関数 g による損失に重みを付けた復号化方式を使用する。ソフトウェアでは損失に基づく復号化方式もサポートされます。復号化方式とバイナリ損失関数は、
predict、loss、margin、edgeなどのオブジェクト関数を呼び出すときに、名前と値の引数DecodingとBinaryLossを使用してそれぞれ指定できます。
ECOC アルゴリズムの手順は次のとおりです。
学習器 1 は、クラス 1 またはクラス 2 の観測値について学習を行い、クラス 1 を陽性クラス、クラス 2 を陰性クラスとして扱います。他の学習器の学習も同様に実行します。
次のように仮定します。M は要素 mkl をもつ符号化設計行列です。sl は学習器 l の陽性クラスの予測された分類スコアです。新しい観測値は、B 個のバイナリ学習器について損失の合計が最小になるクラス () に割り当てられます。
ECOC モデルは他のマルチクラス モデルと比較して分類精度を向上させることができます[1]。
"符号化設計" は、各バイナリ学習器がどのクラスを学習したのかを要素が指示する行列です。つまり、マルチクラス問題がどのように一連のバイナリ問題にされたのかを示します。
符号化設計の各行は各クラスに対応し、各列はバイナリ学習器に対応します。三項符号化設計では、特定の列 (バイナリ学習器) に対して以下が実行されます。
1 が含まれている行の場合、対応するクラスの観測値をすべて陽性クラスにグループ化するようバイナリ学習器に指示します。
–1 が含まれている行の場合、対応するクラスの観測値をすべて陰性クラスにグループ化するようバイナリ学習器に指示します。
0 が含まれている行の場合、対応するクラスの観測値をすべて無視するようバイナリ学習器に指示します。
ハミング尺度に基づく行の最小ペアワイズ距離が大きい符号化設計行列が最適です。行のペアワイズ距離の詳細については、ランダム符号化設計行列および[2]を参照してください。
次の表は一般的な符号化設計について説明しています。
| 符号化設計 | 説明 | 学習器の数 | 行の最小ペアワイズ距離 |
|---|---|---|---|
| OVA (1 対他) | 各バイナリ学習器では、1 つのクラスは陽性で残りは陰性です。この計画は陽性クラス割り当てのすべての組み合わせを使用します。 | K | 2 |
| OVO (1 対 1) | 各バイナリ学習器では、1 つのクラスが陽性で、1 つのクラスが陰性です。残りは無視されます。この計画はすべてのクラス ペアの割り当ての組み合わせを使用します。 | K(K – 1)/2 | 1 |
| 完全二項 | この計画はクラスをすべて 2 つの組み合わせに分割します。いずれのクラスも無視されません。つまり、すべてのクラス割り当てが | 2K – 1 – 1 | 2K – 2 |
| 完全三項 | この計画はクラスをすべて 3 つの組み合わせに分割します。つまり、すべてのクラス割り当てが | (3K – 2K + 1 + 1)/2 | 3K – 2 |
| 順序 | 1 番目のバイナリ学習器では、1 番目のクラスが陰性であり、残りは陽性です。2 番目のバイナリ学習器では、最初の 2 つのクラスが陰性であり、残りは陽性です。他についても同様です。 | K – 1 | 1 |
| 密なランダム | 各バイナリ学習器には、陽性または陰性クラス (少なくとも各 1 つ) が無作為に割り当てられます。詳細については、ランダム符号化設計行列を参照してください。 | ランダム。ただし、約 10 log2K | 変数 |
| スパース ランダム | 各バイナリ学習器では、各クラスに確率 0.25 で陽性または陰性が無作為に割り当てられ、確率が 0.5 の場合にクラスが無視されます。詳細については、ランダム符号化設計行列を参照してください。 | ランダム。ただし、約 15 log2K | 変数 |
このプロットは符号化設計のバイナリ学習器の数を増加するクラス数 (K) と比較します。

アルゴリズム
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 の要素です。
既定では、効率を向上させるため、fitcecoc はすべての線形 SVM バイナリ学習器の Alpha、SupportVectorLabels および SupportVectors プロパティを空にします。fitcecoc は、Alpha ではなく Beta をモデル表示で出力します。
Alpha、SupportVectorLabels および SupportVectors を保存するには、サポート ベクターを fitcecoc に保存するよう指定する線形 SVM テンプレートを渡します。たとえば、次のように入力します。
t = templateSVM('SaveSupportVectors',true) Mdl = fitcecoc(X,Y,'Learners',t);
サポート ベクターおよび関連する値は、生成された ClassificationECOC モデルを discardSupportVectors に渡すことにより削除できます。
代替機能
これらの代替アルゴリズムを使用してマルチクラス モデルに学習させることができます。
アンサンブル分類 —
fitcensembleおよびClassificationEnsembleを参照分類木 —
fitctreeおよびClassificationTreeを参照判別分析分類器 —
fitcdiscrおよびClassificationDiscriminantを参照k 最近傍分類器 —
fitcknnおよびClassificationKNNを参照単純ベイズ分類器 —
fitcnbおよびClassificationNaiveBayesを参照
参照
[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.
拡張機能
使用上の注意事項および制限事項:
fitcecocを使用して ECOC モデルに学習をさせる場合、以下の制限が適用されます。すべてのバイナリ学習器が SVM 分類器または線形分類モデルでなければなりません。名前と値の引数
Learnersについて以下を指定できます。'svm'または'linear'SVM テンプレート オブジェクトまたはこのオブジェクトの cell 配列 (
templateSVMを参照)線形分類モデル テンプレート オブジェクトまたはこのオブジェクトの cell 配列 (
templateLinearを参照)
ECOC 分類器で使用するバイナリ学習器に対するコード生成の制限が ECOC 分類器にも適用されます。線形分類モデルでは、正則化強度は 1 つしか指定できず、名前と値の引数
Lambdaに'auto'または非負のスカラーを指定します。コーダー コンフィギュアラーを使用するコード生成では、以下の追加制限が適用されます。
SVM テンプレート オブジェクトの cell 配列を使用する場合、SVM 学習器の
Standardizeの値は一貫していなければなりません。たとえば、ある SVM 学習器に対して'Standardize',trueを指定した場合、すべての SVM 学習器に対して同じ値を指定しなければなりません。SVM テンプレート オブジェクトの cell 配列を使用し、ある SVM 学習器では線形カーネル (
'KernelFunction','linear') を、別の SVM 学習器では異なるタイプのカーネル関数を使用する場合、線形カーネルの学習器に対してを指定しなければなりません。'SaveSupportVectors',trueカテゴリカル予測子 (
logical、categorical、char、string、またはcell) はサポートされません。名前と値の引数CategoricalPredictorsは使用できません。カテゴリカル予測子をモデルに含めるには、モデルを当てはめる前にdummyvarを使用してカテゴリカル予測子を前処理します。categoricalデータ型のクラス ラベルはサポートされません。学習データ内のクラス ラベル値 (TblまたはY) および名前と値の引数ClassNamesの値はどちらもcategoricalデータ型の配列にはできません。詳細については、
ClassificationECOCCoderConfigurerを参照してください。モデルに再学習させる際に変更できない名前と値の引数の詳細については、ヒントを参照してください。
詳細は、コード生成の紹介を参照してください。
使用上の注意および制限:
次のオブジェクト関数は GPU 配列を完全にサポートしています。
次のオブジェクト関数は GPU 配列のサポートに制限があります。
次の少なくとも 1 つに該当する場合、オブジェクト関数は GPU で実行されます。
モデルが GPU 配列を使用して当てはめられている。
オブジェクト関数に渡す予測子データが GPU 配列である。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2014b で導入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)