主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

templateSVM

サポートベクターマシンテンプレート

説明

t= templateSVM ()はECOC(誤り訂正出力符号)マルチクラスモデルの学習に適したSVM(サポートベクターマシン)学習器テンプレートを返します。

既定のテンプレートを指定する場合,学習中のすべての入力引数には既定値が使用されます。

tfitcecocのバイナリ学習器またはバイナリ学習器のセットの1つとして指定し,ECOCマルチクラス分類器に学習をさせます。

t= templateSVM (名称,值は1つ以上の名前と値のペアの引数で指定された追加オプションを使用してテンプレートを返します。

たとえば,ボックス制約,カーネル関数または予測子を標準化するかを指定します。

コマンドウィンドウにtを表示する場合,すべてのオプションは,名前と値のペア引数を使用して指定する場合を除き,空([])で表示されます。学習中,空のオプションに既定値が使用されます。

すべて折りたたむ

templateSVMを使用して既定のSVMテンプレートを指定します。

t = templateSVM ()
t =适合分类支持向量机的模板。α:[0 x1双]BoxConstraint: [] CacheSize: [] CachingMethod:“ClipAlphas: [] DeltaGradientTolerance:[]ε:[]GapTolerance: [] KKTTolerance: [] IterationLimit: [] KernelFunction:“KernelScale: [] KernelOffset: [] KernelPolynomialOrder: [] NumPrint:[]ν:[]OutlierFraction: [] RemoveDuplicates: [] ShrinkagePeriod:[]解算器:" standzedata: [] SaveSuppo万博1manbetxrtVectors: [] VerbosityLevel: [] Version: 2 Method: 'SVM' Type: 'classification'

方法类型を除き,テンプレートオブジェクトのすべてのプロパティは空です。tを学習関数に渡す場合,空のプロパティはそれぞれの既定値で入力されます。たとえば,KernelFunctionプロパティは,“线性”で入力されます。他の既定値の詳細は,fitcsvmを参照してください。

tはSVM分類器の計画です。これを指定する場合,計算は実行されません。tfitcecocに渡して,ECOCマルチクラス学習のSVMバイナリ学習器を指定します。しかし,既定の設定では,fitcecocは既定のSVMバイナリ学習器を使用します。

fitcecocで使用する既定以外のSVMテンプレートを作成します。

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

负载fisheriris

SVMバイナリ分類器のテンプレートを作成して,ガウスカーネル関数を指定します。

t = templateSVM (“KernelFunction”“高斯”
t =适合分类支持向量机的模板。α:[0 x1双]BoxConstraint: [] CacheSize: [] CachingMethod:“ClipAlphas: [] DeltaGradientTolerance:[]ε:[]GapTolerance: [] KKTTolerance: [] IterationLimit: [] KernelFunction:“高斯”KernelScale: [] KernelOffset: [] KernelPolynomialOrder: [] NumPrint:[]ν:[]OutlierFraction: [] RemoveDuplicates: [] ShrinkagePeriod:[]解决方案:"标准化数据:[]SaveSupportVectors: []万博1manbetx VerbosityLevel: [] Version: 2方法:'SVM'类型:'classification'

DistributionNames方法および类型を除き,テンプレートオブジェクトのすべてのプロパティは空です。学習の際,空のプロパティはそれぞれの既定値で入力されます。

tをECOCマルチクラスモデルのバイナリ学習器として指定します。

Mdl = fitcecoc(量、种类、“学习者”t);

MdlClassificationECOCマルチクラス分類器です。既定の設定では,Mdlは,対1の符号化設計を使用の学習が実行されます。

標本内(再代入)誤分類誤差を表示します。

L = resubLoss (Mdl,“LossFun”“classiferror”
L = 0.0200

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

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

负载fisheririsrng (1);%的再现性

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

t = templateSVM (“Save万博1manbetxSupportVectors”,真正的);MdlSV = fitcecoc(量、种类、“学习者”t);

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

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

α=细胞(3,1);α{1}= MdlSV.BinaryLearners {1} .Alpha;α{2}= MdlSV.BinaryLearners {2} .Alpha;α{3}= MdlSV.BinaryLearners {3} .Alpha;α
α=3×1单元阵列{3x1 double} {3x1 double} {23x1 double}

αは, α の推定値が格納されている3行1列の细胞配列です。

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

Mdl = discard万博1manbetxSupportVectors (MdlSV);

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

areAllEmpty = @ isempty ([x (x)。αx.万博1manbetxSupportVectorsx.万博1manbetxSupportVectorLabels]); cellfun(areAllEmpty,Mdl.BinaryLearners)
ans =3 x1逻辑阵列1 1 1

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

var =谁(“Mdl”“MdlSV”);100 * (1 - var (1) .bytes / var (2) .bytes)
ans = 4.7075

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

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

CompactMdl =紧凑(Mdl);清晰的MdlMdlSV

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

idx = randsample(大小(量,1),1)
idx = 63
predictedLabel =预测(CompactMdl量(idx,:))
predictedLabel =1 x1单元阵列{“癣”}
trueLabel =物种(idx)
trueLabel =1 x1单元阵列{“癣”}

入力引数

すべて折りたたむ

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:“BoxConstraint”,0.1,“KernelFunction”、“高斯”,“标准化”,1はガウス(RBF)カーネルの使用と予測の標準化に0.1のボックス制約を指定します。

ボックス制約“BoxConstraint”と正のスカラーで構成されるコンマ区切りペアとして指定します。

1クラス学習の場合,ボックス制約は必ず1に設定されます。

BoxConstraint成本之前标准化および权重の関係とアルゴリズム動作についての詳細は,アルゴリズムを参照してください。

例:“BoxConstraint”,100年

データ型:|

キャッシュサイズ。“CacheSize”“最大”または正のスカラーで構成されるコンマ区切りのペアとして指定します。

CacheSize“最大”の場合,n行n列のグラム行列を保持できる十分なメモリが確保されます。

CacheSizeが正のスカラーの場合,モデルの学習用にCacheSizeメガバイトのメモリが確保されます。

例:“CacheSize”、“最大”

データ型:||字符|字符串

アルファ係数をクリップするためのフラグ。“ClipAlphas”真正的またはのいずれかから構成されるコンマ区切りのペアとして指定します。

観測値jのアルファ係数がαj,観測値jのボックス制約がCjであるとします(j = 1,…,n)。nは学習標本のサイズです。

説明
真正的 各反復でαjが0またはCjに近い場合,MATLAB®でαjがそれぞれ0またはCjに設定されます。
最適化時にMATLABでアルファ係数は変更されません。

MATLABでは,学習済みのSVMモデルオブジェクトのαプロパティに最終的なαの値が格納されます。

ClipAlphasは,SMOとISDAの収束に影響を与える可能性があります。

例:“ClipAlphas”,假的

データ型:逻辑

SMO(逐次最小最適化)またはISDA(反復単一データアルゴリズム)により取得された上位の違反値と下位の違反値の間に存在する,勾配差分の許容誤差。“DeltaGradientTolerance”と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

DeltaGradientTolerance0の場合,最適化収束を確認するために,勾配差分の許容誤差を使用しません。

既定値は,以下のとおりです。

  • ソルバーがSMOの場合(たとえば,“规划求解”、“SMO的を設定した場合なはど)1 e - 3

  • ソルバーがISDAの場合(たとえば,“规划求解”、“ISDA的を設定した場合なはど)0

例:依照“DeltaGradientTolerance”,1

データ型:|

SMOまたはISDAにより取得された実行可能性ギャップの許容誤差。“GapTolerance”と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

GapTolerance0の場合,最適化収束の確認には,実行可能性ギャップの許容誤差を使用しません。

例:依照“GapTolerance”,1

データ型:|

数値最適化反復の最大回数。“IterationLimit”と正の整数値で構成されるコンマ区切りのペアとして指定します。

最適化ルーチンが正常に収束したかどうかに関係なく,学習済みのモデルが返されます。Mdl。ConvergenceInfoに収束情報が格納されます。

例:“IterationLimit”,1 e8

データ型:|

グラム行列の要素の計算に使用するカーネル関数。“KernelFunction”とカーネル関数名から構成されるコンマ区切りのペアとして指定します。G (xj, xk)がグラム行列の要素(j, k)であるとします。ここでxjおよびxkX内の観測値jおよびkを表すp次元ベクトルです。サポートされるカーネル関数の名前および関数形式を次の表で説明します。

カーネル関数名 説明
“高斯”または“rbf” ガウスまたは放射基底関数(RBF)カーネル(1クラス学習の場合の既定値)

G x j x k 经验值 x j x k 2

“线性” 線形カーネル(2クラス学習の場合の既定値)

G x j x k x j x k

多项式的 多項式カーネル。“PolynomialOrder”,を使用して多項式カーネルの順序()を指定します。

G x j x k 1 + x j x k

独自のカーネル関数を設定することもできます。たとえば,“KernelFunction”、“内核”を使用すると内核が設定されます。値内核は次の形式でなければなりません。

函数G =内核(U, V)
ここで,

  • Uは,m行p列の行列です。列は予測子変数に,行は観測値に対応します。

  • Vはn行p列の行列です。列は予測子変数に,行は観測値に対応します。

  • Gは,UVの行によるm行n列のグラム行列です。

kernel.mは,MATLABパス上になければなりません。

カーネル関数には一般的な名前を使用しないようにしてください。たとえば,シグモイドカーネル関数には“乙状结肠”ではなく“mysigmoid”などの名前を使用します。

例:“KernelFunction”、“高斯”

データ型:字符|字符串

カーネルオフセットパラメーター。“KernelOffset”と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

KernelOffsetがグラム行列の各要素に追加されます。

既定値は以下のとおりです。

  • ソルバーがSMOの場合(つまり,“规划求解”、“SMO的はを設定した場合)0

  • ソルバーがISDAの場合(つまり,“规划求解”、“ISDA的はを設定した場合)0.1

例:“KernelOffset”,0

データ型:|

カーネルスケールパラメーター。“KernelScale”と,“汽车”または正のスカラーで構成される,コンマ区切りのペアとして指定します。予測子行列Xのすべての要素がKernelScaleの値で除算されます。その後,適切なカーネルノルムが適用され,グラム行列が計算されます。

  • “汽车”を指定した場合,ヒューリスティック手法を使用して適切なスケール係数が選択されます。このヒューリスティック手法では副標本抽出を使用するので,呼び出すたびに推定値が変化する可能性があります。このため,結果を再現するには,学習の前にrngを使用して乱数シードを設定します。

  • “KernelFunction”、“内核”のようにKernelScaleと独自のカーネル関数を指定すると,エラーが発生します。内核の内部でスケーリングを適用しなければなりません。

例:“KernelScale”、“汽车”

データ型:||字符|字符串

马(カルーシュ・キューン・タッカー)相補性条件の違反許容誤差。“KKTTolerance”と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

KKTTolerance0の場合,最適化収束の確認に実行可能性の马相補性条件の違反許容誤差は使用されません。

既定値は,以下のとおりです。

  • ソルバーがSMOの場合(たとえば,“规划求解”、“SMO的を設定した場合なはど)0

  • ソルバーがISDAの場合(たとえば,“规划求解”、“ISDA的を設定した場合なはど)1 e - 3

例:依照“KKTTolerance”,1

データ型:|

最適化診断メッセージ出力の反復回数。“NumPrint”と非負の整数で構成されるコンマ区切りのペアとして指定します。

“详细”,1NumPrint, NumPrintを指定すると,numprint回反復するたびにSMOとISDAからのすべての最適化診断メッセージがコマンドウィンドウに表示されます。

例:“NumPrint”,500年

データ型:|

学習データで想定される外れ値の比率。“OutlierFraction”と区間(0,1)の数値スカラーから構成されるコンマ区切りのペアとして指定します。

OutlierFraction, OutlierFractionを設定するとします。outlierfractionは0より大きい値です。

  • 2クラス学習では“ロバスト学習”が行われます。この方式では,最適化アルゴリズムが収束すると,観測値のうち100 *outlierfraction%が削除されます。削除された観測値は,勾配の大きいものに対応します。

  • 1クラス学習では,学習セットに負のスコアをもつ観測outlierfractionなど,適切なバイアス項が検出されます。

例:“OutlierFraction”,0.01

データ型:|

多項式カーネル関数の次数。“PolynomialOrder”と正の整数から成るコンマ区切りのペアとして指定されます。

KernelFunction多项式的ではない場合に“PolynomialOrder”を設定すると,エラーがスローされます。

例:“PolynomialOrder”,2

データ型:|

結果のモデルのプロパティとしてサポートベクター,そのラベル,および推定したαの係数を格納するかどうか。“Save万博1manbetxSupportVectors”真正的またはをコンマ区切りのペアとして指定します。

Save万博1manbetxSupportVectors真正的の場合,結果のモデルの万博1manbetxSupportVectorsプロパティにはサポートベクター,万博1manbetxSupportVectorLabelsプロパティにはそのラベル,コンパクトなSVM学習器のαプロパティには推定したαの係数が格納されます。

Save万博1manbetxSupportVectorsKernelFunction“线性”の場合,結果のモデルではサポートベクターと関連推定値が格納されません。

コンパクトなSVMモデルのメモリ消費量を減らすには,Save万博1manbetxSupportVectorsを指定します。

ECOCモデルに線形SVMバイナリ学習器を使用した場合,既定値はです。それ以外の場合,既定値は真正的です。

例:“Save万博1manbetxSupportVectors”,真的

データ型:逻辑

アクティブセットの縮小間の反復回数。“ShrinkagePeriod”と非負の整数から構成されるコンマ区切りのペアとして指定します。

“ShrinkagePeriod”,0を設定すると,アクティブセットは縮小されません。

例:“ShrinkagePeriod”,1000年

データ型:|

最適化ルーチン。“规划求解”と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
ISDA的 反復単一データアルゴリズム([30]参照)
“L1QP” quadprog(优化工具箱)を使用して二次計画法によるL1ソフトマージン最小化を実装します。このオプションには优化工具箱™ライセンスが必要です。詳細は,二次計画法の定義(优化工具箱)を参照してください。
SMO的 逐次最小最適化 ([17]参照)

既定値は2クラス学習で“OutlierFraction”を正の値に設定した場合はISDA的で,それ以外の場合はSMO的です。

例:“规划求解”、“ISDA的

予測子データを標準化するためのフラグ。“标准化”真正的1)または(0)から構成されるコンマ区切りのペアとして指定します。

“标准化”,真的を設定した場合,次のようになります。

  • 列の加重平均と標準偏差によって予測子データ(X)の各列がそれぞれセンタリングおよびスケーリングされます(重みを付けた標準化の詳細についてはアルゴリズムを参照してください)。MATLABでは、カテゴリカル予測子用に生成されたダミー変数の列に含まれているデータは標準化されません。

  • 分類器の学習には標準化された予測子行列が使用されますが,分類器のXプロパティには標準化されていないデータが格納されます。

例:“标准化”,真的

データ型:逻辑

詳細レベル。“详细”01または2から構成されるコンマ区切りのペアとして指定します。详细的の値は,コマンドウィンドウに表示され構造体としてMdl.ConvergenceInfo.Historyに保存される最適化情報の量を制御します。

次の表は,使用できる詳細レベルオプションの一覧です。

説明
0 収束情報の表示や保存は行われません。
1 診断メッセージが表示され,numprint回の反復ごとに収束基準が保存されます。ここで,numprintは名前と値のペアの引数“NumPrint”の値です。
2 診断メッセージが表示され,1回の反復ごとに収束基準が保存されます。

例:“详细”,1

データ型:|

出力引数

すべて折りたたむ

ECOC(誤り訂正出力符号)マルチクラスモデルの学習に適したSVM分類テンプレート。テンプレートオブジェクトとして返します。tfitcecocに渡し,ECOCモデルのSVM分類器を作成する方法を指定します。

コマンドウィンドウにtを表示する場合,すべての未指定のオプションは空([])で表示されます。しかし,空のオプションは学習中に対応する既定値に置き換えられます。

ヒント

既定では,効率を向上させるため,fitcecocはすべての線形SVMバイナリ学習器のα万博1manbetxSupportVectorLabelsおよび万博1manbetxSupportVectorsプロパティを空にします。fitcecocは,αではなくβをモデル表示で出力します。

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

t = templateSVM (“Save万博1manbetxSupportVectors”Mdl = fitcecoc(X,Y,“学习者”t);

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

参照

克里斯汀尼尼,N。c。肖-泰勒。支持向量机和其他基于核的学习方法简介。万博1manbetx英国剑桥:剑桥大学出版社,2000年。

[2]球迷,R.-E。,林志信。陈,C.-J。林。使用二阶信息进行训练支持向量机的工作集选择万博1manbetx机器学习研究杂志,2005年第6卷,1889-1918页。

Hastie, T., R. Tibshirani, J. Friedman。统计学习的要素,第二版。纽约:施普林格,2008年。

凯克曼V., T. -M。和M. Vogt。从大数据集训练核机的迭代单数据算法:理论与性能支持向万博1manbetx量机:理论与应用。王力波主编,255-274。柏林:斯普林格出版社,2005年版。

Scholkopf, B., J. C. Platt, J. C. shaw - taylor, A. J. Smola, R. C. Williamson。"估算高维分布的支持度"万博1manbetx神经第一版。,Vol. 13, Number 7, 2001, pp. 1443–1471.

[6] Scholkopf, B.和A. Smola。核学习:支持向量机,正则化,优化和超越,自适应万博1manbetx计算和机器学习。麻省理工学院出版社,2002年。

R2014bで導入