メインコンテンツ

discardSupportVectors

R2026b

ECOC モデルの線形 SVM バイナリ学習器のサポート ベクターを破棄

説明

Mdl = discardSupportVectors(MdlSV) は、少なくとも 1 つの線形 CompactClassificationSVM バイナリ学習器が含まれている学習済みのマルチクラス誤り訂正出力符号 (ECOC) モデル (MdlSV) から、学習済みのマルチクラス ECOC モデル (Mdl) を返します。Mdl と MdlSV はどちらも同じ型のオブジェクトであり、ClassificationECOC オブジェクトまたは CompactClassificationECOC オブジェクトです。

Mdl には、次のような特徴があります。

例

例

すべて折りたたむ

線形 SVM バイナリ学習器が含まれている ECOC モデルに学習をさせるときに、既定では、fitcecoc はバイナリ学習器の Alpha、SupportVectorLabels および SupportVectors プロパティを空にします。代わりに、サポート ベクターおよび関連する値を保持し、後でモデルから破棄することもできます。

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

load fisheriris
rng(1) % For reproducibility

データ セット全体を使用して ECOC モデルを学習させます。適切な SVM テンプレートに渡すことにより、サポート ベクターを保存するように指定します。

t = templateSVM(SaveSupportVectors=true);
MdlSV = fitcecoc(meas,species,Learners=t);

MdlSV は、線形 SVM バイナリ学習器が含まれている学習済みの ClassificationECOC モデルです。既定では、fitcecoc は 1 対 1 の符号化設計を実装するので、3 クラス学習の場合は 3 つのバイナリ学習器が必要になります。

ドット表記を使用して α (アルファ) の推定値にアクセスします。

alpha = cell(3,1);
alpha{1} = MdlSV.BinaryLearners{1}.Alpha;
alpha{2} = MdlSV.BinaryLearners{2}.Alpha;
alpha{3} = MdlSV.BinaryLearners{3}.Alpha;
alpha
alpha = 3×1 cell array
    { 3×1 double}
    { 3×1 double}
    {23×1 double}

alpha は、α の推定値が格納されている 3 行 1 列の cell 配列です。

サポート ベクターおよび関連する値を ECOC モデルから破棄します。

Mdl = discardSupportVectors(MdlSV);

Mdl は MdlSV に似ていますが、すべての線形 SVM バイナリ学習器の Alpha、SupportVectorLabels および SupportVectors プロパティが空 ([]) であるという点が異なります。

areAllEmpty = @(x)isempty([x.Alpha x.SupportVectors x.SupportVectorLabels]);
cellfun(areAllEmpty,Mdl.BinaryLearners)
ans = 3×1 logical array

   1
   1
   1

2 つの ECOC モデルのサイズを比較します。

vars = whos("Mdl","MdlSV");
100*(1 - vars(1).bytes/vars(2).bytes)
ans = 
4.8702

Mdl は MdlSV より約 5% 小さくなっています。

Mdl を圧縮し Mdl と MdlSV をワークスペースからクリアして、メモリ使用量を減らします。

CompactMdl = compact(Mdl);
clear Mdl MdlSV;

より効率的な SVM モデルを使用して、学習データのランダムな行についてラベルを予測します。

idx = randsample(size(meas,1),1)
idx = 
63
predictedLabel = predict(CompactMdl,meas(idx,:))
predictedLabel = 1×1 cell array
    {'versicolor'}

trueLabel = species(idx)
trueLabel = 1×1 cell array
    {'versicolor'}

入力引数

すべて折りたたむ

少なくとも 1 つの線形 SVM バイナリ学習器が含まれている学習済みの完全またはコンパクトなマルチクラス ECOC モデル。ClassificationECOC または CompactClassificationECOC モデルを指定します。

詳細

すべて折りたたむ

ヒント

  • 既定では、効率を向上させるため、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 に渡すことにより削除できます。

アルゴリズム

predict と resubPredict は、次の式を使用して、ECOC モデル内の各線形 SVM バイナリ学習器の SVM スコア f(x) を推定します。

f(x)=x′β+b.

β はバイナリ学習器の Beta プロパティ、b は Bias プロパティです。cell 配列 Mdl.BinaryLearners に格納されている線形 SVM バイナリ学習器のそれぞれについて、これらのプロパティにアクセスできます。SVM スコアの計算についての詳細は、バイナリ分類のサポート ベクター マシンを参照してください。

拡張機能

すべて展開する

バージョン履歴

R2015a で導入