Main Content

discardSupportVectors

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

説明

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

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

すべて折りたたむ

線形 SVM バイナリ学習器が含まれている ECOC モデルに学習をさせるときに、既定では、fitcecoc はバイナリ学習器の AlphaSupportVectorLabels および 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
    { 3x1 double}
    { 3x1 double}
    {23x1 double}

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

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

Mdl = discardSupportVectors(MdlSV);

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

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

   1
   1
   1

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

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

MdlMdlSV より約 5% 小さくなっています。

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

CompactMdl = compact(Mdl);
clear Mdl MdlSV;

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

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

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

入力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

線形 SVM バイナリ学習器

このページのコンテキストでは、線形サポート ベクター マシン (SVM) バイナリ学習器は、線形カーネル関数を使用して作成されたバイナリ SVM 分類器です。ECOC モデル Mdl 内の j 番目のバイナリ学習器が線形 SVM バイナリ学習器である場合、Mdl.BinaryLearners{j}CompactClassificationSVM オブジェクトであり、Mdl.BinaryLearners{j}.KernelParameters.Function'linear' です。

ヒント

  • 既定では、効率を向上させるため、fitcecoc はすべての線形 SVM バイナリ学習器の AlphaSupportVectorLabels および SupportVectors プロパティを空にします。fitcecoc は、Alpha ではなく Beta をモデル表示で出力します。

    AlphaSupportVectorLabels および SupportVectors を保存するには、サポート ベクターを fitcecoc に保存するよう指定する線形 SVM テンプレートを渡します。たとえば、次のように入力します。

    t = templateSVM('SaveSupportVectors',true)
    Mdl = fitcecoc(X,Y,'Learners',t);

    サポート ベクターおよび関連する値は、生成された ClassificationECOC モデルを discardSupportVectors に渡すことにより削除できます。

アルゴリズム

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

f(x)=xβ+b.

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

拡張機能

バージョン履歴

R2015a で導入