主要内容

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

fitcsvm

1クラスおよびバイナリ分類用のサポートベクターマシン(SVM)分類器の学習

説明

fitcsvmは,低~中次元の予測子データセットにおける1クラスおよび2クラス(バイナリ)分類について,サポートベクターマシン(SVM)モデルに学習をさせるか,その交差検証を行います。fitcsvmは,カーネル関数を使用する予測子データのマッピングをサポートし,逐次最小最適化(SMO),反復単一データアルゴリズム(ISDA)または二次計画法によるL1ソフトマージン最小化を目的関数最小化についてサポートします。

高次元データセット,つまり多数の予測子変数が含まれているデータセットに対するバイナリ分類の場合に線形SVMモデルに学習をさせるには,代わりにfitclinearを使用します。

バイナリSVMモデルが結合されたマルチクラス学習の場合は,誤り訂正出力符号(ECOC)を使用します。詳細は,fitcecocを参照してください。

支持向量机回帰モデルに学習をさせる方法については,低~中次元の予測子データセットの場合はfitrsvm,高次元データセットの場合はfitrlinearを参照してください。

Mdl= fitcsvm (资源描述ResponseVarNameは,テーブル资源描述に格納されている標本データを使用して学習させたサポートベクターマシン(SVM)分類器Mdlを返します。ResponseVarNameは1クラスまたは2クラス分類用のクラスラベルが含まれている资源描述内の変数の名前です。

Mdl= fitcsvm (资源描述公式は,テーブル资源描述に格納されている標本データを使用して学習させたSVM分類器を返します。公式は,Mdlのあてはめに使用する応答および资源描述内の予測子変数サブセットの説明モデルです。

Mdl= fitcsvm (资源描述Yは,テーブル资源描述内の予測子変数とベクトルY内のクラスラベルを使用して学習させたSVM分類器を返します。

Mdl= fitcsvm (XYは1クラス分類または2クラス分類の場合に,行列X内の予測子とベクトルY内のクラスラベルを使用して学習させたSVM分類器を返します。

Mdl= fitcsvm (___名称,值では,前の構文の入力引数に加えて,1つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば,交差検証の種類,誤分類のコスト,スコア変換関数の種類を指定できます。

すべて折りたたむ

フィッシャーのアヤメのデータセットを読み込みます。がく片の長さと幅および観測済みのすべての setosa 種のアヤメを削除します。

负载fisheriris第1 = ~ strcmp(物种,“setosa”);X =量(第1 3:4);y =物种(第1);

処理済みのデータセットを使用してSVM分類器に学習させます。

SVMModel = fitcsvm (X, y)
SVMModel = ClassificationSVM ResponseName:‘Y’CategoricalPredictors:[]类名:{“癣”“virginica”}ScoreTransform:“没有一个”NumObservations: 100α:[24 x1双]偏见:-14.4149 KernelParameters: [1 x1 struct] BoxConstraints: x1双[100]ConvergenceInfo: [1 x1 struct] IsSupportVector: x1逻辑[100]解算器:SMO的属性,方法金宝app

SVMModelは学習させたClassificationSVM分類器です。SVMModelのプロパティを表示します。たとえば,クラスの順序を確認するには、ドット表記を使用します。

classOrder = SVMModel。一会
classOrder =2 x1细胞{“癣”}{' virginica '}

最初のクラス(“多色的”)は陰性のクラスで,2番目のクラス(“virginica”)は陽性のクラスです。“类名”名前と値のペアの引数を使用すると,学習中にクラスの順序を変更できます。

データの散布図をプロットし,サポートベクターを円で囲みます。

sv = SVMModel.金宝appSupportVectors;图gscatter (X (: 1), (:, 2), y)情节(sv (: 1), sv (:, 2),“柯”“MarkerSize”10)传说(“多色的”“virginica”“金宝app支持向量”)举行

图中包含一个坐标轴。轴线包含3个线型对象。这些对象代表花斑,维珍,支持向量。金宝app

サポートベクターは,推定されたクラス境界の上または外側で発生する観測値です。

名前と値のペアの引数“BoxConstraint”を使用して学習時のボックス制約を設定すると,境界(および結果的にサポートベクターの個数)を調整できます。

电离层データセットを読み込みます。

负载电离层rng (1);%的再现性

放射基底関数を使用してSVM分類器に学習させます。本ソフトウェアを使用してカーネル関数のスケール値を検出します。予測子を標準化します。

SVMModel = fitcsvm (X, Y,“标准化”,真的,“KernelFunction”“RBF”...“KernelScale”“汽车”);

SVMModelは学習させたClassificationSVM分類器です。

支持向量机分類器を交差検証します。既定では、10分割交差検証が使用されます。

CVSVMModel = crossval (SVMModel);

CVSVMModelClassificationPartitionedModel交差検証分類器です。

標本外誤分類率を推定します。

classLoss = kfoldLoss (CVSVMModel)
classLoss = 0.0484

汎化率は約5%です。

すべてのアヤメを同じクラスに割り当てることにより,フィッシャーのアヤメのデータセットを変更します。修正したデータセットの外れ値を検出し,外れ値である観測値の比率が予想どおりであることを確認します。

フィッシャーのアヤメのデータセットを読み込みます。花弁の長さと幅を削除します。すべてのアヤメを同じクラスとして扱います。

负载fisheririsX =量(:,1:2);y = 1(大小(X, 1), 1);

修正したデータセットを使用してSVM分類器に学習させます。観測値のうち5%が外れ値であるとします。予測子を標準化します。

rng (1);SVMModel = fitcsvm (X, y,“KernelScale”“汽车”“标准化”,真的,...“OutlierFraction”, 0.05);

SVMModelは学習させたClassificationSVM分類器です。既定では、1クラス学習にはガウス カーネルが使用されます。

観測値と判定境界をプロットします。サポートベクターと外れ値の可能性がある値にフラグを設定します。

svInd = SVMModel.Is金宝appSupportVector;h = 0.02;%网格网格步长(X1, X2) = meshgrid (min (X (: 1)): h:马克斯(X (: 1))...min (X (:, 2)): h:马克斯(X (:, 2)));[~,分数]=预测(SVMModel (X1 (:), X2 (:)));scoreGrid =重塑(得分,大小(X1, 1),大小(X2, 2));图绘制(X (: 1), (:, 2),“k”。)举行情节(X (svInd, 1), X (svInd, 2),“罗”“MarkerSize”, 10)轮廓(X1, X2, scoreGrid) colorbar;标题(“{\bf虹膜离群点的一类支持向量机检测}”)包含(“花萼长度(厘米)”) ylabel (萼片宽(cm)的)传说(“观察”“金宝app支持向量”)举行

图中包含一个坐标轴。标题为{\bf虹膜离群检测的一类支持向量机}的坐标轴包含3个类型为线、轮廓的对象。这些对象表示观察,支持向量。金宝app

外れ値と他のデータとの境界は,等高線値が0である場所で発生します。

交差検証データで負のスコアをもつ観測値のごく一部が,約5%であることを確認します。

CVSVMModel = crossval (SVMModel);[~, scorePred] = kfoldPredict (CVSVMModel);outlierRate =意味着(scorePred < 0)
outlierRate = 0.0467

fisheririsデータセットの散布図を作成します。プロット内のグリッドの座標をデータセットの分布から派生する新しい観測値として扱い,データセット内の3つのクラスのいずれかに座標を割り当てることによりクラスの境界を求めます。

フィッシャーのアヤメのデータセットを読み込みます。花弁の長さと幅を予測子として使用します。

负载fisheririsX =量(:,3:4);Y =物种;

データの散布図を調べます。

图gscatter (X (: 1), (:, 2), Y);甘氨胆酸h =;lims = [h。XLim h.YLim];%提取x和y轴的极限标题('{\bf虹膜测量散点图}');包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(cm)”);传奇(“位置”“西北”);

图中包含一个坐标轴。标题为{\bf虹膜测量散点图}的轴包含3个线型对象。这些物品代表着维珍卡。

データには3つのクラスが含まれており,そのうち1つは他のクラスから線形分離可能です。

各クラスに対して,以下を実行します。

  1. 観測値がクラスのメンバーであるかどうかを示す逻辑ベクトル(indx)を作成します。

  2. 予測子データとindxを使用してSVM分類器に学習させます。

  3. 分類器を细胞配列のセルに保存します。

クラスの順序を定義します。

SVMModels =细胞(3,1);类=独特(Y);rng (1);%的再现性j = 1:numel(classes) indx = strcmp(Y,classes(j))); / /索引为每个分类器创建二进制类SVMModels {j} = fitcsvm (X, indx“类名”(虚假的真实),“标准化”,真的,...“KernelFunction”“rbf”“BoxConstraint”1);结束

SVMModelsは3行1列の细胞配列です。ここで,各セルにはClassificationSVM分類器が格納されています。各セルで,陽性のクラスはそれぞれsetosa,杂色的,virginicaです。

プロット内で細かいグリッドを定義し,座標を学習データの分布からの新しい観測値として扱います。各分類器を使用して,この新しい測定値のスコアを推定します。

d = 0.02;[x1Grid, x2Grid] = meshgrid (min (X (: 1)): d:马克斯(X (: 1))...min (X (:, 2)): d:马克斯(X (:, 2)));xGrid = [x1Grid (:), x2Grid (:));N =大小(xGrid, 1);成绩= 0 (N,元素个数(类));j = 1:numel(classes) [~,score] = predict(SVMModels{j},xGrid);分数(:,j) =分数(:,2);%第二列包含正面类得分结束

分数の各行には3つのスコアが格納されています。スコアが最大の要素のインデックスは,新しいクラスの観測値の所属先となる可能性が最も高いと思われるクラスのインデックスです。

新しいそれぞれの観測値を,当該の観測値に最大スコアを設定する分類器に関連付けます。

[~, maxScore] = max(分数,[],2);

プロットの各領域の色は,対応する新しい観測値が属するクラスに基づいています。

图h(1:3) = gscatter(xGrid(:,1),xGrid(:,2),maxScore,...[0.1 0.5 0.5;0.5 0.1 0.5;0.5 0.5 0.1]);持有h (6) = gscatter (X (: 1), (:, 2), Y);标题('{\bf虹膜分类区域}');包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(cm)”);传奇(h, {“setosa地区”“杂色的地区”“virginica地区”...“观察setosa”的观察到的多色的“观察virginica”},...“位置”“西北”);轴持有

图中包含一个坐标轴。标题为{\bf Iris Classification Regions}的轴包含6个线型对象。这些物体分别代表刚毛区、花色区、刚毛区、观测到的刚毛区、观测到的花色区、观测到的刚毛区。

fitcsvmを使用してハイパーパラメーターを自動的に最適化します。

电离层データセットを読み込みます。

负载电离层

自動的なハイパーパラメーター最適化を使用して,5分割交差検証損失を最小化するハイパーパラメーターを求めます。再現性を得るために,乱数シードを設定し,“expected-improvement-plus”の獲得関数を使用します。

rng默认的Mdl = fitcsvm (X, Y,“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”...“expected-improvement-plus”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | BoxConstraint | KernelScale | | |结果| | |运行时(观察)| (estim) | | ||=====================================================================================================| | 最好1 | | 0.20513 | 18.101 | 0.20513 | 0.20513 | 64.836 | 0.0015729 | | 2 |接受| 0.35897 | 0.1603 | 0.20513 | 0.21471 | 0.036335 | 5.5755 | | 3 |最好| 0.13105 | 6.959 | 0.13105 | 0.14133 | 0.0022147 | 0.0023957 | | | 0.35897 | 4 |接受0.15104 | 0.13105 | 0.13109 | 5.1259 | 98.62 | | 5 | Accept | 0.13675 | 13.415 | 0.13105 | 0.13111 | 0.0011599 | 0.0010098 | | 6 | Accept | 0.13675 | 2.9897 | 0.13105 | 0.13119 | 0.0010151 | 0.0059137 | | 7 | Accept | 0.1339 | 8.611 | 0.13105 | 0.13127 | 0.0010281 | 0.0027003 | | 8 | Accept | 0.13675 | 13.997 | 0.13105 | 0.13232 | 0.016269 | 0.0024597 | | 9 | Accept | 0.13105 | 11.708 | 0.13105 | 0.13137 | 0.0021526 | 0.0025081 | | 10 | Best | 0.12821 | 15.305 | 0.12821 | 0.12841 | 0.0086928 | 0.0010304 | | 11 | Accept | 0.12821 | 15.118 | 0.12821 | 0.12828 | 0.010039 | 0.0010077 | | 12 | Accept | 0.13675 | 15.368 | 0.12821 | 0.13162 | 0.0071238 | 0.0010245 | | 13 | Accept | 0.1339 | 14.852 | 0.12821 | 0.13179 | 0.0050166 | 0.0016385 | | 14 | Best | 0.11966 | 15.632 | 0.11966 | 0.12919 | 0.013746 | 0.0010181 | | 15 | Accept | 0.13105 | 16.907 | 0.11966 | 0.1294 | 0.025222 | 0.001012 | | 16 | Accept | 0.13105 | 17.926 | 0.11966 | 0.12958 | 0.024019 | 0.001013 | | 17 | Accept | 0.35897 | 0.22187 | 0.11966 | 0.12962 | 0.0010245 | 994.95 | | 18 | Accept | 0.13675 | 14.732 | 0.11966 | 0.12925 | 990.28 | 0.36736 | | 19 | Accept | 0.18234 | 18.276 | 0.11966 | 0.12917 | 949.33 | 0.082849 | | 20 | Accept | 0.1339 | 6.9508 | 0.11966 | 0.12914 | 979.17 | 1.3107 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.14245 | 16.629 | 0.11966 | 0.13062 | 0.024598 | 0.0010041 | | 22 | Accept | 0.13675 | 11.697 | 0.11966 | 0.13058 | 907 | 0.70254 | | 23 | Accept | 0.35897 | 0.12748 | 0.11966 | 0.13062 | 999.82 | 995.02 | | 24 | Accept | 0.15385 | 0.12296 | 0.11966 | 0.13042 | 0.001002 | 0.30762 | | 25 | Accept | 0.12251 | 0.13769 | 0.11966 | 0.12275 | 0.0010105 | 0.056734 | | 26 | Accept | 0.1339 | 0.2236 | 0.11966 | 0.12251 | 0.021279 | 0.054708 | | 27 | Accept | 0.12821 | 0.13149 | 0.11966 | 0.12517 | 0.0010127 | 0.064566 | | 28 | Accept | 0.12821 | 0.19541 | 0.11966 | 0.12557 | 0.0010014 | 0.036667 | | 29 | Accept | 0.1339 | 0.12338 | 0.11966 | 0.12743 | 0.0010509 | 0.078319 | | 30 | Accept | 0.12251 | 0.18274 | 0.11966 | 0.12706 | 0.0030057 | 0.028009 |

图中包含一个坐标轴。标题为“最小目标vs.函数计算数”的轴包含2个类型为line的对象。这些对象代表最小观测目标、最小估计目标。

图中包含一个坐标轴。以目标函数模型为标题的轴包含线、面、轮廓等5个对象。这些对象表示观测点,模型均值,下一个点,模型最小可行值。

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:304.1292秒总目标函数计算时间:256.9533最佳观测可行点:BoxConstraint KernelScale _____________ ___________ 0.013746 0.0010181观测目标函数值= 0.11966估计目标函数值= 0.13091函数评价时间= 15.6316最佳估计可行点(根据模型):BoxConstraint KernelScale _____________ ___________ 0.0010105 0.056734估计的目标函数值= 0.12706估计的函数评价时间= 0.13624
Mdl = ClassificationSVM ResponseName:‘Y’CategoricalPredictors:[]类名:{b ' g '} ScoreTransform:“没有一个”NumObservations: 351 HyperparameterOptimizationResults: [1 x1 BayesianOptimization]α:[117 x1双]偏见:-2.6521 KernelParameters: [1 x1 struct] BoxConstraints: x1双[351]ConvergenceInfo: [1 x1 struct] IsSupportVector:金宝app[351x1 logical] Solver: 'SMO'属性,方法

入力引数

すべて折りたたむ

モデルを学習させるために使用する標本データ。テーブルとして指定します。资源描述の各行は1つの観測値に,各列は1つの予測子変数に対応します。オプションとして,资源描述に応答変数用の列を1つ追加できます。文字ベクトルの细胞配列ではない cell 配列と複数列の変数は使用できません。

  • 资源描述に応答変数が含まれている場合に资源描述内の他の変数をすべて予測子として使用するには,ResponseVarNameを使用して応答変数を指定します。

  • 资源描述に応答変数が含まれている場合に资源描述内の他の変数の一部のみを予測子として使用するには,公式を使用して式を指定します。

  • 资源描述に応答変数が含まれていない場合は,Yを使用して応答変数を指定します。応答変数の長さと资源描述の行数は等しくなければなりません。

データ型:表格

応答変数の名前。资源描述内の変数の名前で指定します。

ResponseVarNameには文字ベクトルまたは字符串スカラーを指定しなければなりません。たとえば,応答変数Y资源描述。Yとして格納されている場合,“Y”として指定します。それ以外の場合,モデルを学習させるときに、资源描述の列はYを含めてすべて予測子として扱われます。

応答変数は,绝对配列,文字配列,字符串配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列でなければなりません。Yが文字配列である場合,応答変数の各要素は配列の1つの行に対応しなければなりません。

名前と値の引数一会を使用してクラスの順序を指定することをお勧めします。

データ型:字符|字符串

応答変数および予測子変数サブセットの説明モデル。“Y ~ x1 + x2 + x3”という形式の文字ベクトルまたは字符串スカラーを指定します。この形式では,Yは応答変数を,x1x2およびx3は予測子変数を表します。

モデルに学習をさせるための予測子として资源描述内の変数のサブセットを指定するには,式を使用します。式を指定した場合,公式に現れない资源描述内の変数は使用されません。

式の変数名は资源描述の変数名(Tbl.Properties.VariableNames)であり,有効なMATLAB®識別子でなければなりません。関数isvarnameを使用して资源描述の変数名を検証できます。変数名が有効でない場合,関数matlab.lang.makeValidNameを使用してそれらを変換できます。

データ型:字符|字符串

SVMモデルに学習させるクラスラベル。绝对配列、文字配列、字符串配列、逻辑ベクトル、数値ベクトル、または文字ベクトルの细胞配列を指定します。

  • Yに含まれるクラスは,2種類を超えてはなりません。マルチクラス学習については,fitcecocを参照してください。

  • Yが文字配列である場合,クラスラベルの各要素は配列の1つの行に対応しなければなりません。

  • Yの長さと资源描述またはXの行数は同じでなければなりません。

  • 名前と値のペアの引数一会を使用してクラスの順序を指定することをお勧めします。

データ型:分类|字符|字符串|逻辑|||细胞

支持向量机分類器に学習させる予測子データ。数値の行列として指定します。

Xの各行は1つの観測値(インスタンスまたは例とも呼ばれます)に,各列は1つの予測子(特徴量とも呼ばれます)に対応します。

Yの長さとXの行数は等しくなければなりません。

予測子の名前をXに表示される順序で指定するには,“PredictorNames”名前と値のペアの引数を使用します。

データ型:|

名前と値のペアの引数

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

例:fitcsvm (X, Y, KFold, 10日,“成本”,[0 2;1 0],“ScoreTransform”、“标志”)は10分割交差検証を実行し,偽陰性の2倍のペナルティを偽陽性に適用し,符号関数を使用してスコアを変換します。
SVMのオプション

すべて折りたたむ

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

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

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

例:“BoxConstraint”,100年

データ型:|

グラム行列の要素の計算に使用するカーネル関数。“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”、“高斯”

データ型:字符|字符串

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

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

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

例:“KernelScale”、“汽车”

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

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

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

例:“PolynomialOrder”,2

データ型:|

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

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

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

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

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

例:“KernelOffset”,0

データ型:|

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

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

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

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

例:“标准化”,真的

データ型:逻辑

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

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

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

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

アルファ係数の初期推定値。“α”と非負値の数値ベクトルから構成されるコンマ区切りのペアとして指定します。αの長さはXの行数と等しくなければなりません。

  • “α”の各要素はXの観測値に対応します。

  • “α”を格納できません。

  • “α”を交差検証の名前と値のペアの引数(“CrossVal”“CVPartition”“坚持”“KFold”または“Leaveout”)のいずれかと同時に指定すると,エラーが返されます。

Yに欠損値が含まれている場合は,欠損値に対応するすべての行をYXおよび“α”から削除してください。つまり,次のように入力します。

idx = ~ isundefined(分类(Y));: Y = Y (idx);X = X (idx:);α=α(idx);
そして,YXおよびαをそれぞれ応答,予測子およびアルファの初期推定値として渡します。

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

  • 1クラス学習の場合:0.5 * 1(大小(X, 1), 1)

  • 2クラス学習の場合:0(大小(X, 1), 1)

例:“阿尔法”,0.1 *(大小(X, 1), 1)

データ型:|

キャッシュサイズ。“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”,假的

データ型:逻辑

1クラス学習のνパラメーター。“怒”と正のスカラーから構成されるコンマ区切りのペアとして指定します。νは,0より大きく1以下でなければなりません。

νの設定により,学習例の大部分を陽性のクラスにするか,スコア関数の重みを最小限にするかのバランスを制御します。

例:“怒”,0.25

データ型:|

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

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

例:“NumPrint”,500年

データ型:|

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

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

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

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

例:“OutlierFraction”,0.01

データ型:|

学習データ内の重複する観測値を単一の観測値に置き換えるためのフラグ。“RemoveDuplicates”真正的またはから構成されるコンマ区切りのペアとして指定します。

RemoveDuplicates真正的の場合,fitcsvmは学習データ内の重複する観測値を同じ値の単一の観測値に置き換えます。単一の観測値の重みは,削除された対応する重複の重みの合計に等しくなります(权重を参照)。

ヒント

多数の重複する観測値がデータセットに含まれている場合は,“RemoveDuplicates”,真的を指定すると収束時間が大幅に短くなる可能性があります。

データ型:逻辑

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

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

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

例:“详细”,1

データ型:|

その他の分類オプション

すべて折りたたむ

カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。

説明
正の整数のベクトル

ベクトルの各エントリは,カテゴリカル変数が含まれている予測子データの列に対応するインデックス値です。インデックス値の範囲は1 ~pです。pはモデルの学習に使用した予測子の数です。

fitcsvmが入力変数のサブセットを予測子として使用する場合,関数はサブセットのみを使用して予測子にインデックスを作成します。応答変数,観測値の重み変数,および関数で使用されないその他の変数は,“CategoricalPredictors”値でカウントされません。

逻辑ベクトル

真正的というエントリは,予測子データの対応する列がカテゴリカル変数であることを意味します。ベクトルの長さはpです。

文字行列 行列の各行は予測子変数の名前です。名前はPredictorNamesのエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。
文字ベクトルの细胞配列または字符串配列 配列の各要素は予測子変数の名前です。名前はPredictorNamesのエントリに一致しなくてはなりません。
“所有” すべての予測子がカテゴリカルです。

既定では,予測子データがテーブル(资源描述)内にある場合,fitcsvmは,その変数が逻辑ベクトル,直言ベクトル,文字配列,字符串配列または文字ベクトルの细胞配列のいずれかである場合に,変数を直言であると見なします。予測子データが行列(X)である場合,fitcsvmはすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには,名前と値の引数“CategoricalPredictors”を使用してそれらを指定します。

特定されたカテゴリカル予測子に対して,fitcsvmはカテゴリカル変数に順序が設定されていないか順序が設定されているかに応じて,2つの異なる方式を使用してダミー変数を作成します。順序付けのないカテゴリカル変数の場合,fitcsvmは,そのカテゴリカル変数の各レベルについて1つずつダミー変数を作成します。順序付けされたカテゴリカル変数の場合,fitcsvmは,カテゴリの数よりも1つ少ないダミー変数を作成します。詳細については,ダミー変数の自動作成を参照してください。

例:“CategoricalPredictors”、“所有”

データ型:||逻辑|字符|字符串|细胞

学習に使用するクラスの名前。分类配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として指定します。一会のデータ型は资源描述内の応答変数またはYと同じでなければなりません。

一会が文字配列の場合,各要素は配列の1つの行に対応しなければなりません。

一会の使用目的は次のとおりです。

  • 学習時のクラスの順序を指定する。

  • クラスの順序に対応する入力または出力引数の次元の順序を指定する。たとえば,成本の次元の順序や预测によって返される分類スコアの列の順序を指定するために一会を使用します。

  • 学習用にクラスのサブセットを選択する。たとえば,Yに含まれているすべての異なるクラス名の集合が{' a ', ' b ', ' c '}であるとします。クラス“一个”および“c”のみの観測値を使用してモデルに学習をさせるには,“类名”,{' a ', ' c '}を指定します。

一会の既定値は,资源描述内の応答変数またはYに含まれているすべての異なるクラス名の集合です。

例:“类名”,{' b ', ' g '}

データ型:分类|字符|字符串|逻辑|||细胞

誤分類のコスト。“成本”と正方行列または構造体配列から構成されるコンマ区切りのペアとして指定します。

  • 正方行列成本を指定した場合,成本(i, j)は真のクラスがである点をクラスjに分類するコストです。つまり,行は真のクラスに、列は予測クラスに対応します。成本の対応する行と列についてクラスの順序を指定するには,名前と値のペアの引数一会も指定します。

  • 構造体年代を指定する場合,次の2つのフィールドが必要です。

    • S.ClassNamesYと同じデータ型のクラス名を表す変数を含む。

    • S.ClassificationCosts。行と列の順序がS.ClassNamesと同じコスト行列。

2クラス学習の場合,コスト行列を指定すると,そのコスト行列で指定されているペナルティが組み込まれ,事前確率が更新されます。この結果,コスト行列は既定の状態にリセットされます。BoxConstraint成本之前标准化および权重の関係とアルゴリズム動作についての詳細は,アルゴリズムを参照してください。

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

  • 1クラス学習の場合:成本= 0

  • 2クラス学習では,我~ = jの場合は成本(i, j) = 1我=我の場合は成本(i, j) = 0です。

例:“成本”,(0,1,2,0)

データ型:||结构体

予測子変数名。一意な名前の字符串配列または一意な文字ベクトルの细胞配列として指定します。PredictorNamesの機能は,学習データの提供方法によって決まります。

  • XYを指定した場合,PredictorNamesを使用してX内の予測子変数に名前を割り当てることができます。

    • PredictorNames内の名前の順序は,Xの列の順序に一致しなければなりません。つまり,PredictorNames {1}X (: 1)の名前,PredictorNames {2}X (:, 2)の名前であり,他も同様です。また,大小(X, 2)元素个数(PredictorNames)は等しくなければなりません。

    • 既定ではPredictorNames{x1, x2,…}です。

  • 资源描述を指定する場合,PredictorNamesを使用して学習に使用する予測子変数を選択できます。つまり,fitcsvmは,学習中にPredictorNamesの予測子変数と応答変数のみを使用します。

    • PredictorNamesTbl.Properties.VariableNamesのサブセットでなければならず,応答変数の名前を含めることはできません。

    • 既定では,すべての予測子変数の名前がPredictorNamesに格納されます。

    • “PredictorNames”公式の両方ではなく,いずれか一方を使用して学習用の予測子を指定することをお勧めします。

例:PredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}

データ型:字符串|细胞

各クラスの事前確率。“之前”と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
“经验” クラスの事前確率は,Yのクラスの相対的頻度です。
“统一” クラスの事前確率はいずれも1 / K (Kはクラス数)となります。
数値ベクトル ベクトルの各要素はクラスの事前確率です。Mdl。ClassNamesに従って要素を並べ替えるか,一会名前と値のペアの引数を使用して順序を指定します。要素は合計が1になるように正規化されます。
構造体

構造体年代には2つのフィールドがあります。

  • S.ClassNamesYと同じ型の変数のクラス名が格納されます。

  • S.ClassProbs:対応する事前確率のベクトルが格納されます。ベクトルの要素は合計が1になるように正規化されます。

2クラス学習の場合,コスト行列を指定すると,そのコスト行列で指定されているペナルティが組み込まれ,事前確率が更新されます。BoxConstraint成本之前标准化および权重の関係とアルゴリズム動作についての詳細は,アルゴリズムを参照してください。

例:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)

データ型:字符|字符串|||结构体

応答変数名。文字ベクトルまたは字符串スカラーとして指定します。

  • Yを指定した場合,“ResponseName”を使用して応答変数の名前を指定できます。

  • ResponseVarNameまたは公式を指定した場合,“ResponseName”を使用することはできません。

例:“ResponseName”、“响应”

データ型:字符|字符串

スコア変換。文字ベクトル,弦スカラー,または関数ハンドルとして指定します。

次の表は,使用可能な文字ベクトルおよび字符串スカラーをまとめています。

説明
“doublelogit” 1 / (1 + e2 x
“invlogit” Log (x / (1 - x))
“ismax” 最大のスコアをもつクラスのスコアを1に設定し,他のすべてのクラスのスコアを0に設定する
分对数的 1 / (1 + e- x
“没有”または“身份” x(変換なし)
“标志” x < 0のとき1
x = 0のとき0
x > 0のとき1
“对称” 2 x - 1
“symmetricismax” 最大のスコアをもつクラスのスコアを1に設定し,他のすべてのクラスのスコアを1に設定する
“symmetriclogit” 2 / (1 + e- x) - 1

MATLAB関数またはユーザー定義関数の場合は,スコア変換用の関数ハンドルを使用します。関数ハンドルは,行列 (元のスコア) を受け入れて同じサイズの行列 (変換したスコア) を返さなければなりません。

例:“ScoreTransform”、“分对数的

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

観測値の重み。“重量”と,正の値の数値ベクトルまたは资源描述内の変数の名前から構成されるコンマ区切りのペアとして指定します。Xまたは资源描述の各行に含まれている観測値は,权重の対応する値で重み付けされます。权重のサイズは,Xまたは资源描述の行数と同じでなければなりません。

入力データをテーブル资源描述として指定した場合,权重は数値ベクトルが含まれている资源描述内の変数の名前にすることができます。この場合,权重には文字ベクトルまたは字符串スカラーを指定しなければなりません。たとえば,重みベクトルW资源描述。Wとして格納されている場合,' W 'として指定します。それ以外の場合,モデルに学習をさせるときに、资源描述の列はWを含めてすべて予測子または応答変数として扱われます。

既定の設定では,权重(n, 1)です。nXまたは资源描述の観測値数です。

合計が各クラスの事前確率の値と等しくなるように权重が正規化されます。BoxConstraint成本之前标准化および权重の関係とアルゴリズム動作についての詳細は,アルゴリズムを参照してください。

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

メモ

交差検証の名前と値のペアの引数を名前と値のペアの引数“OptimizeHyperparameters”と同時に使用することはできません。“OptimizeHyperparameters”の場合の交差検証は,名前と値のペアの引数“HyperparameterOptimizationOptions”を使用することのみによって変更できます。

交差検証オプション

すべて折りたたむ

交差検証分類器を学習させるためのフラグ。“Crossval”“上”または“关闭”で構成されるコンマ区切りのペアとして指定します。

“上”を指定すると10の分割を使用して交差検証分類器の学習が実行されます。

名前と値のペアの引数CVPartition坚持KFoldまたはLeaveoutを使用すると,この交差検証の設定を変更できます。交差検証済みモデルを作成するときに使用できる交差検証の名前と値のペアの引数は,一度に1つだけです。

または,後でMdlcrossvalに渡して交差検証を実行します。

例:“Crossval”,“上”

交差検証分割。cvpartitionで作成したcvpartition分割オブジェクトとして指定します。分割オブジェクトは,交差検証のタイプと、学習セットおよび検証セットのインデックス付けを指定します。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFoldLeaveoutの4つのうちのいずれかのみです。

例:本量利= cvpartition(500年,“KFold”,5)500年を使用して個の観測値に対する5分割交差検証について無作為な分割を作成するとします。この場合,“CVPartition”,本量利を使用して交差検証済みモデルを指定できます。

ホールドアウト検証に使用されるデータの比率。(0,1)の範囲のスカラー値として指定します。‘坚持’,pを指定した場合,以下の手順が実行されます。

  1. p * 100%のデータを無作為に選択して検証データとして確保し,残りのデータを使用してモデルに学習をさせる。

  2. コンパクトな学習済みモデルを交差検証済みモデルの训练有素的プロパティに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFoldLeaveoutの4つのうちのいずれかのみです。

例:“坚持”,0.1

データ型:|

交差検証済みモデルで使用する分割の数。1より大きい正の整数値として指定します。KFold, kを指定した場合,以下の手順が実行されます。

  1. データを無作為にk個のセットに分割する。

  2. 各セットについて,そのセットを検定データとして確保し,他のk- 1個のセットを使用してモデルに学習をさせる。

  3. k個のコンパクトな学習済みモデルを,交差検証済みモデルの训练有素的プロパティに含まれているk行1列の细胞ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFoldLeaveoutの4つのうちのいずれかのみです。

例:“KFold”,5

データ型:|

分析法の交差検証のフラグ。“上”または“关闭”として指定します。“Leaveout”,“上”を指定した場合,n個の観測値(nはモデルのNumObservationsプロパティで指定される,欠損観測値を除外した観測値の個数)のそれぞれについて以下の手順が実行されます。

  1. いずれかの観測値を検証データとして確保し,他のn - 1個の観測値を使用してモデルに学習をさせる。

  2. n個のコンパクトな学習済みモデルを,交差検証済みモデルの训练有素的プロパティに含まれているn行1列の细胞ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFoldLeaveoutの4つのうちのいずれかのみです。

例:“Leaveout”,“上”

収束制御オプション

すべて折りたたむ

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

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

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

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

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

例:依照“DeltaGradientTolerance”,1

データ型:|

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

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

例:依照“GapTolerance”,1

データ型:|

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

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

例:“IterationLimit”,1 e8

データ型:|

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

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

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

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

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

例:依照“KKTTolerance”,1

データ型:|

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

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

例:“ShrinkagePeriod”,1000年

データ型:|

ハイパーパラメーター最適化オプション

すべて折りたたむ

最適化するパラメーター。“OptimizeHyperparameters”と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。

  • “没有”——最適化を行いません。

  • “汽车”- - - - - -{“BoxConstraint”、“KernelScale”}を使用します。

  • “所有”——すべての使用可能パラメーターを最適化します。

  • 使用可能パラメーター名の字符串配列または细胞配列。

  • optimizableVariableオブジェクトのベクトル。通常はhyperparametersの出力です。

最適化では,パラメーターを変化させることにより,fitcsvmの交差検証損失(誤差)を最小化しようとします。交差検証損失の詳細については,分類損失を参照してください。交差検証のタイプおよびその他の最適化の側面を制御するには,名前と値のペアの引数HyperparameterOptimizationOptionsを使用します。

メモ

“OptimizeHyperparameters”の値は,他の名前と値のペアの引数を使用して設定した値より優先されます。たとえば,“OptimizeHyperparameters”“汽车”に設定すると,“汽车”の値が適用されます。

fitcsvmでは,以下のパラメーターを使用できます。

  • BoxConstraint- - - - - -fitcsvmは,既定では範囲(1 e - 3, 1 e3)の対数スケールで,正の値を探索します。

  • KernelScale- - - - - -fitcsvmは,既定では範囲(1 e - 3, 1 e3)の対数スケールで,正の値を探索します。

  • KernelFunction- - - - - -fitcsvmは,“高斯”“线性”および多项式的で探索します。

  • PolynomialOrder- - - - - -fitcsvmは,範囲(2、4)の整数値を探索します。

  • 标准化- - - - - -fitcsvmは,“真正的”“假”で探索します。

既定以外のパラメーターを設定するには,既定以外の値が含まれているoptimizableVariableオブジェクトのベクトルを渡します。以下に例を示します。

负载fisheririsparams = hyperparameters (“fitcsvm”量,物种);参数(1)。范围=(1的军医,1 e6);

OptimizeHyperparametersの値として参数个数を渡します。

既定では,コマンドラインに反復表示が表示され,最適化のハイパーパラメーターの個数に従ってプロットが表示されます。最適化とプロットにおける目的関数は,回帰の場合はLog(1 +交叉验证损失),分類の場合は誤分類率です。反復表示を制御するには,名前と値のペアの引数“HyperparameterOptimizationOptions”详细的フィールドを設定します。プロットを制御するには,名前と値のペアの引数“HyperparameterOptimizationOptions”ShowPlotsフィールドを設定します。

たとえば,支持向量机分類器の最適化を参照してください。

例:“汽车”

最適化のオプション。“HyperparameterOptimizationOptions”と構造体から構成されるコンマ区切りのペアとして指定します。この引数を指定すると,名前と値のペアの引数OptimizeHyperparametersの効果が変化します。この構造体のフィールドは,すべてオプションです。

フィールド名 既定の設定
优化器
  • “bayesopt”——ベイズ最適化を使用。内部的にはbayesoptが呼び出されます。

  • “gridsearch”——次元ごとにNumGridDivisionsの値があるグリッド探索を使用。

  • “randomsearch”- - - - - -MaxObjectiveEvaluations個の点で無作為に探索。

“gridsearch”では,グリッドからの一様な非復元抽出により,無作為な順序で探索します。最適化後、sortrows (Mdl.HyperparameterOptimizationResults)コマンドを使用してグリッド順のテーブルを取得できます。

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “expected-improvement”

  • “expected-improvement-plus”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “probability-of-improvement”

オブジェクト関数のランタイムによって最適化が異なるので,名前に每秒が含まれている獲得関数は,再現性がある結果を生成しません。名前に+が含まれている獲得関数は,領域を過剰利用している場合に動作を変更します。詳細は,獲得関数のタイプを参照してください。

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目的関数評価の最大的数。 “bayesopt”または“randomsearch”の場合は30.“gridsearch”の場合はグリッド全体
MaxTime

制限時間。正の実数を指定します。制限時間の単位は,抽搐tocによって測定される秒です。MaxTimeは関数評価を中断させないため,実行時間がMaxTimeを超える可能性があります。

NumGridDivisions “gridsearch”における各次元の値の個数。値は、各次元の値の個数を表す正の整数のベクトル、またはすべての次元に適用されるスカラーが可能です。カテゴリカル変数の場合、このフィールドは無視されます。 10
ShowPlots プロットを表示するかどうかを示す論理値。真正的の場合,最良の目的関数の値が反復回数に対してプロットされます。1つまたは2つの最適化パラメーターがあり,优化器“bayesopt”である場合,ShowPlotsはパラメーターに対する目的関数のモデルのプロットも行います。 真正的
SaveIntermediateResults 优化器“bayesopt”である場合に結果を保存するかどうかを示す論理値。真正的の場合,“BayesoptResults”という名前のワークスペース変数が反復ごとに上書きされます。この変数はBayesianOptimizationオブジェクトです。
详细的

コマンドラインへの表示。

  • 0——反復表示なし

  • 1——反復表示あり

  • 2——追加情報付きで反復表示あり

詳細については,bayesoptの名前と値のペアの引数详细的を参照してください。

1
UseParallel ベイズ最適化を並列実行するかどうかを示す論理値。並列実行には并行计算工具箱™が必要です。並列でのタイミングに再現性がないため,並列ベイズ最適化で再現性のある結果が生成されるとは限りません。詳細については,並列ベイズ最適化を参照してください。
重新分区

反復ごとに交差検証を再分割するかどうかを示す論理値。の場合,オプティマイザーは単一の分割を最適化に使用します。

分割ノイズが考慮されるので,通常は真正的にすると最も確実な結果が得られます。ただし,真正的で良好な結果を得るには,2倍以上の関数評価が必要になります。

以下の3つのフィールド名は1つだけ使用できます。
CVPartition cvpartitionによって作成されるcvpartitionオブジェクト。 交差検証フィールドが指定されていない場合“Kfold”,5
坚持 ホールドアウトの比率を表す範囲(0,1)のスカラー。
Kfold 1より大きい整数。

例:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)

データ型:结构体

出力引数

すべて折りたたむ

学習済みのSVM分類モデル。ClassificationSVMモデルオブジェクトまたはClassificationPartitionedModel交差検証済みモデルオブジェクトとして返されます。

以下の各名前と値のペアの引数のいずれかを設定する場合,MdlClassificationPartitionedModel交差検証分類器となります。KFold坚持LeaveoutCrossValまたはCVPartition。それ以外の場合,MdlClassificationSVM分類器です。

Mdlのプロパティを参照するには,ドット表記を使用します。たとえば,コマンドウィンドウにMdl。αと入力すると,学習させたラグランジュ乗数が表示されます。

制限

  • fitcsvmは1クラスまたは2クラスの学習アプリケーションの場合にSVM分類器に学習をさせます。クラスが3つ以上あるデータを使用してSVM分類器を学習させるには,fitcecocを使用します。

  • fitcsvmは,低~中次元のデータセットをサポートします。高次元データセットの場合は,代わりにfitclinearを使用してください。

詳細

すべて折りたたむ

ボックス制約

ボックス制約は,マージンに違反している観測値に課せられる最大ペナルティを制御するパラメーターであり,過適合の防止(正則化)に役立ちます。

ボックス制約の値を大きくすると,支持向量机分類器が割り当てるサポートベクターは少なくなります。ただし,ボックス制約の値を大きくすると,学習時間が長くなる場合があります。

グラム行列

n個のベクトルの組{x1. . xn;xj∊Rp}のグラム行列とは,n行n列の行列で,要素(j, k)はG (xj, xk) = <ϕ(xj),ϕ(xk) >(カーネル関数ϕを使用して変換された予測子の内積)として定義されます。

非線形SVMの場合,予測子データXの行を使用してグラム行列が形成されます。双対形式化によりX内の観測値の内積が,形成されるグラム行列の対応する要素に置き換えられます(“カーネルトリック”と呼ばれます)。この結果,分離超平面を求めるために,変換された予測子空間で非線形SVMが作用します。

カルーシュ・キューン・タッカー(马)相補性条件

马相補性条件は,最適な非線形計画法の解決に必要な最適化制約です。

SVMでは,すべてのj = 1,……nについてKKT 相補性条件は次のようになります。

α j y j f x j 1 + ξ j 0 ξ j C α j 0

ここで, f x j ϕ x j β + b であり,ϕはカーネル関数(グラム行列を参照),ξjはスラック変数です。クラスが完全に可分な場合、すべての j = 1,...,n に対して ξj= 0となります。

1クラス学習

1クラス学習(教師なしSVM)は,(元の予測子空間ではない)高次元予測子空間の原点からデータを分離することを目的としており,外れ値の検出に使用されるアルゴリズムです。

このアルゴリズムはバイナリ分類のSVMのアルゴリズムと類似しています。目的は, α 1 ... α n に関して次の双対式を最小化することです。

0.5 j k α j α k G x j x k

これには,すべてのj = 1,……nについて 0 α j 1 と次の式を満たすという条件があります。

α j n ν

G (xj, xk)の値は,グラム行列の要素(j, k)です。

νの値が小さいとサポートベクターが少なくなるので,判定境界は起伏が少なく柔軟性が低いものとなります。νの値が大きいとサポートベクターが多くなるので,判定境界は起伏が多く柔軟性が高いものとなります。νの最適値は,データの複雑さを取り込めるだけの大きさがあり,過学習が発生しない程度に小さい値です。また0 <ν≤1です。

詳細は,[5]を参照してください。

サポートベクター

サポートベクターは,α1,…,αnの厳密に正の推定値に対応する観測値です。

特定の学習セットに対して生成されるサポートベクターが少ないSVM分類器の方が推奨されます。

バイナリ分類のサポートベクターマシン

SVMバイナリ分類アルゴリズムでは,データを2つのクラスに分離する最適超平面が検索されます。クラスが可分な場合,最適超平面は周囲の“マージン”(観測値がない領域)を最大化します。これにより,陽性のクラスと陰性のクラスの境界が作成されます。クラスが不可分な場合でも目的は同じですが、クラスの境界の誤った側にあるすべての観測のマージンの長さに対し、アルゴリズムによりペナルティが課されます。

線形SVMスコア関数は次のようになります。

f x x β + b

ここで

  • xは観測値です(Xの行に対応します)。

  • ベクトルβには超平面に直交するベクトルを定義する係数(Mdl。βに対応)が含まれています。可分データの場合,最適なマージンの長さは 2 / β です。

  • bは(Mdl。偏见に対応する)バイアス項です。

特定の係数に対するf (x)の根により超平面が定義されます。特定の超平面について,f (z)は点zから超平面までの距離です。

このアルゴリズムでは,陽性(y = 1)のクラスと陰性(y = 1)のクラスを分離したままマージンの最大長を求めます。

  • 可分クラスの場合,目的はβおよびbに関して β を最小化することです。これには,すべてのj = 1, . .nについてyjf (xj)≥1という条件があります。これが可分クラスの"主"問題の定式化です。

  • 不可分クラスの場合,このアルゴリズムではスラック変数(ξj)を使用して,クラスのマージン境界を超える観測値の目的関数にペナルティを課します。クラスのマージン境界を超えない観測値ではξj= 0であり,そうでない場合はξj≥0です。

    目的は,β,bおよびξjに関して 0.5 β 2 + C ξ j を最小化することです。これには,すべてのj = 1, . .nおよび正のスカラーボックス制約Cについて y j f x j 1 ξ j および ξ j 0 という条件があります。これは不可分クラスの主問題の定式化です。

このアルゴリズムでは,ラグランジュ乗数法を使用して目的関数を最適化します。これにより(Mdl。αに対応する)n個の係数α1,…,αnが導入されます。線形SVMの双対形式化は次のようになります。

  • 可分クラスの場合,α1,…,αnに関して次の式を最小化します。

    0.5 j 1 n k 1 n α j α k y j y k x j x k j 1 n α j

    これには,すべてのj = 1,……nについて α j y j 0 j≥0という条件とカルーシュ・キューン・タッカー(马)相補性条件が適用されます。

  • 不可分クラスの場合,目的関数は可分クラスの場合と同じですが,すべてのj = 1, . .nについて 0 α j C という条件が加わります。

生成されるスコア関数は次のようになります。

f x j 1 n α j y j x x j + b

b はバイアスの推定値, α j はベクトル α のj番目の推定値です(j = 1,…,n)。このように記述すると,主問題を定式化した結果,スコア関数はβの推定値の影響を受けなくなります。

SVMアルゴリズムでは, 标志 f z を使用して新しい観測値zを分類します。

場合によっては,非線形境界によってクラスが分離されます。“非線形SVM”は変換済み予測子空間で,最適な分離超平面を検索します。

非線形SVMの双対問題は,α1,…,αnに関して次のように定式化されます。

0.5 j 1 n k 1 n α j α k y j y k G x j x k j 1 n α j

これには,すべてのj = 1, . .nについて α j y j 0 0 α j C という条件と马相補性条件が適用されます。G (xk, xj)はグラム行列の要素です。生成されるスコア関数は次のようになります。

f x j 1 n α j y j G x x j + b

詳細は,サポートベクターマシンについて[1]および[3]を参照してください。

ヒント

  • データセットが大規模でない限り,常に予測子を標準化してください(标准化を参照してください)。標準化を行うと,予測子を測定するスケールの影響を受けなくなります。

  • 名前と値のペアの引数KFoldを使用して交差検証を行うことをお勧めします。この交差検証の結果により,支持向量机分類器の一般化の精度がわかります。

  • 1クラス学習では,以下のようになります。

    • 名前と値のペアの引数αで既定の設定を使用すると,学習時間が長くなる場合があります。学習時間を短縮するには,主に0で構成されているベクトルにαを設定します。

    • 名前と値のペアの引数ν0に近い値に設定すると,サポートベクターの個数が少なくなるので,判定境界は滑らかで大まかなものになります。

  • 支持向量机分類器では,サポートベクターの密度が低い方が望ましい状態です。サポートベクターの数を少なくするには,BoxConstraintを大きい値に設定します。この場合,学習時間が長くなります。

  • 学習時間を最適にするには,使用しているコンピューターで許容されるメモリの制限値までCacheSizeを大きくします。

  • サポートベクターの個数が学習セット内の観測値数よりはるかに少ないと考えられる場合,名前と値のペアの引数“ShrinkagePeriod”を使用してアクティブセットを縮小すると,収束を大幅に高速化することができます。“ShrinkagePeriod”,1000年を指定することをお勧めします。

  • 判定境界から離れている重複する観測値は,収束に影響を与えません。しかし,重複する観測値が判定境界の近くに少しでもあると,収束が大幅に遅くなる可能性があります。収束を高速化するには,次の場合に“RemoveDuplicates”,真的を指定します。

    • 多数の重複する観測値がデータセットに含まれている。

    • 少数の重複する観測値が判定境界の近くにあると考えられる。

    学習時に元のデータセットを維持するため,fitcsvmは別々のデータセット,つまり元のデータセットおよび重複する観測値を除外したデータセットを一時的に格納しなければなりません。このため,重複がほとんど含まれていないデータセットの場合に真正的を指定すると,fitcsvmは元のデータの場合の2倍に近いメモリを消費します。

  • モデルに学習をさせた後で,新しいデータについてラベルを予測するC / c++コードを生成できます。C / c++コードの生成にはMATLAB编码器™が必要です。詳細については、コード生成の紹介を参照してください。

アルゴリズム

  • SVMバイナリ分類アルゴリズムの数学的定式化については,バイナリ分類のサポートベクターマシンサポートベクターマシンについてを参照してください。

  • <定义>,空の文字ベクトル(''),空の字符串(""),および< >失踪値は,欠損値を示します。fitcsvmは,欠損応答に対応するデータ行全体を削除します。fitcsvmは,重みの合計を計算するときに(以下の項目を参照),欠損している予測子が1つ以上ある観測値に対応する重みを無視します。これにより,平衡なクラスの問題で不平衡な事前確率が発生する可能性があります。したがって,観測値のボックス制約がBoxConstraintに等しくならない可能性があります。

  • fitcsvmは,重みまたは事前確率がゼロの観測値を削除します。

  • 2クラス学習でコスト行列 C 成本を参照)を指定した場合, C で表されているペナルティを組み込むことにより,クラスの事前確率p (之前を参照)がpcに更新されます。

    具体的には,fitcsvmは以下のステップを完了します。

    1. p c p C を計算します。

    2. 更新された事前確率の合計が1になるようにpcを正規化します。

      p c 1 j 1 K p c j p c

      Kはクラスの個数です。

    3. コスト行列を既定値にリセットします。

      C 0 1 1 0

    4. 事前確率がゼロのクラスに対応する観測値を学習データから削除します。

  • 2クラス学習の場合,fitcsvmは合計が1になるようにすべての観測値の重み(权重を参照)を正規化します。その後,観測値が属しているクラスの更新後の事前確率に重みの合計が等しくなるように,正規化された重みを再度正規化します。つまり,クラスkの観測値jについて,重みの合計は次のようになります。

    w j w j j k w j p c k

    ここで,wjは観測値jの正規化された重み,pc kはクラスkの更新された事前確率(前の項目を参照)です。

  • 2クラス学習の場合,fitcsvmは学習データの各観測値にボックス制約を割り当てます。観測値jのボックス制約の式は,次のようになります。

    C j n C 0 w j

    ここでnは学習標本のサイズ,C0は初期のボックス制約(名前と値のペアの引数“BoxConstraint”を参照), w j は観測値jの重みの合計(前の項目を参照)です。

  • “标准化”,真的と訛れと値のペアの引数“成本”“之前”または“重量”を設定した場合,fitcsvmは対応する加重平均および加重標準偏差を使用して予測子を標準化します。つまり,fitcsvmは以下を使用して予測子j (xj)を標準化します。

    x j x j μ j σ j

    μ j 1 k w k k w k x j k

    xjkは,予測子j(列)の観測値k(行)です。

    σ j 2 v 1 v 1 2 v 2 k w k x j k μ j 2

    v 1 j w j

    v 2 j w j 2

  • pは学習データで予期される外れ値の比率であり,OutlierFraction, pを設定したと仮定します。

    • 1クラス学習では,バイアス項の学習により,学習データの観測値のうち100p%が負のスコアをもつようになります。

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

  • 予測子データにカテゴリカル変数が含まれている場合,一般にこれらの変数について完全なダミーエンコードが使用されます。各カテゴリカル変数の各レベルについて,1つずつダミー変数が作成されます。

    • PredictorNamesプロパティには,元の予測子変数名のそれぞれについて1つずつ要素が格納されます。たとえば,3.つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、PredictorNamesは元の予測子変数名が含まれている1行3列の文字ベクトルの细胞配列になります。

    • ExpandedPredictorNamesプロパティには,ダミー変数を含む予測子変数のそれぞれについて1つずつ要素が格納されます。たとえば,3.つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、ExpandedPredictorNamesは予測子変数および新しいダミー変数の名前が含まれている1行5列の文字ベクトルの细胞配列になります。

    • 同様に,βプロパティには,ダミー変数を含む各予測子について1つずつベータ係数が格納されます。

    • 金宝appSupportVectorsプロパティには,ダミー変数を含むサポートベクターの予測子の値が格納されます。たとえば,m 個のサポート ベクターと 3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、金宝appSupportVectorsはn行5列の行列になります。

    • Xプロパティには,はじめに入力されたときの状態で学習データが格納され,ダミー変数は含まれません。入力がテーブルの場合,Xには予測子として使用した列のみが格納されます。

  • テーブルで予測子を指定した場合,いずれかの変数に順序付きのカテゴリが含まれていると,これらの変数について順序付きエンコードが使用されます。

    • k個の順序付きレベルが変数に含まれている場合,k - 1個のダミー変数が作成されます。j番目のダミー変数は、j までのレベルについては1j + 1からkまでのレベルについては+1になります。

    • ExpandedPredictorNamesプロパティに格納されるダミー変数の名前は1番目のレベルを示し,値は+1になります。レベル2、3、……kの名前を含むk - 1個の追加予測子名がダミー変数について格納されます。

  • どのソルバーもL1ソフトマージン最小化を実装します。

  • 1クラス学習の場合,次の条件を満たすラグランジュ乗数α1,…,αnが推定されます。

    j 1 n α j n ν

参照

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

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

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

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

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

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

拡張機能

R2014aで導入