主要内容

ベ@ @ズ最適化の使用による分類器の当てはめの最適化

この例では,関数fitcsvmおよび名前と値の引数OptimizeHyperparametersを使用して支持向量机分類を最適化する方法を示します。

デ,タの生成

この分類は,混合ガウスモデルによる点の位置に作用します。モデルの詳細にいては,统计学习的要素、Hastie Tibshirani,弗里德曼(2009)の17ページを参照してください。このモデルでは,平均(1,0)および単位分散をもつ2次元の独立した正規分布になっている10個の基底点をはじめに“绿色”クラスについて生成します。また,平均(0,1)と単位分散による2次元の独立した正規として分布される“红色”クラスにも,10個の基底点が生成されます。クラス(绿と红)ごとに,次のように100個の無作為な点を生成します。

  1. 適切な色の基底点を一様にランダムに選択します。

  2. 平均と分散我/ 5(我は2行2列の単位行列)をもつ2次元正規分布を使用して,独立した無作為な点を生成します。最適化のアドバンテ,ジをより明確に示すため,この例ではi /50という分散を使用します。

クラスごとに10個の基底点を生成します。

rng (“默认”%用于再现性Grnpop = mvnrnd([1,0],eye(2),10);Redpop = mvnrnd([0,1],eye(2),10);

基底点を表示します。

情节(grnpop (: 1) grnpop (:, 2),“去”)举行情节(redpop (: 1) redpop (:, 2),“罗”)举行

图中包含一个轴对象。axis对象包含2个line类型的对象。

赤の基底点の一部が緑の基底点の近くにあるため,位置のみによるデ,タ点の分類は難しいかもしれません。

各クラスにいて100。

Redpts = 0 (100,2);GRNPTS = redpts;i = 1:10 0 grnpts(我:)= mvnrnd (grnpop(兰迪(10):)、眼睛(2)* 0.02);redpts(我)= mvnrnd (redpop(兰迪(10):)、眼睛(2)* 0.02);结束

デ,タ点を表示します。

图绘制(grnpts (: 1), grnpts (:, 2),“去”)举行情节(redpts (: 1) redpts (:, 2),“罗”)举行

图中包含一个轴对象。axis对象包含2个line类型的对象。

分類用のデ,タの準備

デタを1の行列に格納し,grpを作成します。1绿色はクラスを示し,-1红色はクラスを示します。

Cdata = [grnpts;redpts];GRP = ones(200,1);Grp (101:200) = -1;

交差検証の準備

交差検証用の分割を設定します。

C = cvpartition(200,“KFold”10);

この手順はオプションです。最適化に分割を指定する場合は,返されたモデルの実際の交差検証損失を計算できます。

当てはめの最適化

適切な当てはめ,つまり交差検証損失を最小化する最適なハイパーパラメーターをもつ当てはめを求めるには,ベイズ最適化を使用します。名前と値の引数OptimizeHyperparametersを使用して最適化対象ハパパラメタのリストを指定し,名前と値の引数HyperparameterOptimizationOptionsを使用して最適化オプションを指定します。

“OptimizeHyperparameters”として“汽车”を指定します。“汽车”fitcsvmは,BoxConstraintKernelScaleの最適な値を求めます。再現性を得るために,ハイパーパラメーター最適化オプションを設定して交差検証分割cを使用し,獲得関数“expected-improvement-plus”を選択します。既定の獲得関数は実行時に決定されるので,結果が異なる場合があります。

Opts = struct(“CVPartition”c“AcquisitionFunctionName”“expected-improvement-plus”);Mdl = fitcsvm(cdata,grp,“KernelFunction”“rbf”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”选择)
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | BoxConstraint | KernelScale | | |结果| |运行时| | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.345 | 0.14605 | 0.345 | 0.345 | 0.00474 | 306.44 | | 2 |最好| 0.115 | 0.12018 | 0.115 | 0.12678 | 430.31 | 1.4864 | | 3 |接受| 0.52 | 0.46047 | 0.115 | 0.1152 | 0.028415 | 0.014369 | | 4 |接受| 0.61 | 0.25069 | 0.115 | 0.11504 | 133.94 | 0.0031427 | | 5 |接受| 0.34 | 0.28436 | 0.115 | 0.11504 | 0.010993 | 5.7742 | | 6 |的| 0.085 | 0.14242 | 0.085 | 0.085039 | 885.63 | 0.68403 | | | 7日接受| 0.105 | 0.16772 | 0.085 | 0.085428 | 0.3057 | 0.58118 | | |接受8 | 0.21 | 0.17973 | 0.085 | 0.09566 | 0.16044 | 0.91824 | | | 9日接受| 0.085 | 0.13201 | 0.085 | 0.08725 | 972.19 | 0.46259 | | 10 |接受| 0.1 |0.2146 | 0.085 | 0.090952 | 990.29 | 0.491 | | 11 | Best | 0.08 | 0.20476 | 0.08 | 0.079362 | 2.5195 | 0.291 | | 12 | Accept | 0.09 | 0.16608 | 0.08 | 0.08402 | 14.338 | 0.44386 | | 13 | Accept | 0.1 | 0.18011 | 0.08 | 0.08508 | 0.0022577 | 0.23803 | | 14 | Accept | 0.11 | 0.16809 | 0.08 | 0.087378 | 0.2115 | 0.32109 | | 15 | Best | 0.07 | 0.12923 | 0.07 | 0.081507 | 910.2 | 0.25218 | | 16 | Best | 0.065 | 0.15465 | 0.065 | 0.072457 | 953.22 | 0.26253 | | 17 | Accept | 0.075 | 0.26143 | 0.065 | 0.072554 | 998.74 | 0.23087 | | 18 | Accept | 0.295 | 0.1624 | 0.065 | 0.072647 | 996.18 | 44.626 | | 19 | Accept | 0.07 | 0.1505 | 0.065 | 0.06946 | 985.37 | 0.27389 | | 20 | Accept | 0.165 | 0.17975 | 0.065 | 0.071622 | 0.065103 | 0.13679 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.345 | 0.12679 | 0.065 | 0.071764 | 971.7 | 999.01 | | 22 | Accept | 0.61 | 0.15791 | 0.065 | 0.071967 | 0.0010168 | 0.0010005 | | 23 | Accept | 0.345 | 0.15532 | 0.065 | 0.071959 | 0.0011459 | 995.89 | | 24 | Accept | 0.35 | 0.15428 | 0.065 | 0.071863 | 0.0010003 | 40.628 | | 25 | Accept | 0.24 | 0.2712 | 0.065 | 0.072124 | 996.55 | 10.423 | | 26 | Accept | 0.61 | 0.26453 | 0.065 | 0.072067 | 994.71 | 0.0010063 | | 27 | Accept | 0.47 | 0.13908 | 0.065 | 0.07218 | 993.69 | 0.029723 | | 28 | Accept | 0.3 | 0.1427 | 0.065 | 0.072291 | 993.15 | 170.01 | | 29 | Accept | 0.16 | 0.26179 | 0.065 | 0.072103 | 992.81 | 3.8594 | | 30 | Accept | 0.365 | 0.19097 | 0.065 | 0.072112 | 0.0010017 | 0.044287 |

图中包含一个轴对象。标题为Min objective vs. Number of function的axis对象包含2个类型为line的对象。这些对象代表最小观测目标,估计最小目标。

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

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:28.7424秒总目标函数评估时间:5.7198最佳观测可行点:BoxConstraint KernelScale _____________ ___________ 953.22 0.26253观测目标函数值= 0.065估计目标函数值= 0.073726函数评估时间= 0.15465最佳估计可行点(根据模型):BoxConstraint KernelScale _____________ ___________ 985.37 0.27389估计目标函数值= 0.072112估计函数评估时间= 0.17373
Mdl = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [-1 1] ScoreTransform: 'none' NumObservations: 200 HyperparameterOptimizationResults: [1x1 bayesioptimization] Alpha: [77x1 double] Bias: -0.2352 KernelParameters: [1x1 struct] BoxConstraints: [200x1 double] ConvergenceInfo: [1x1 struct] IsSu金宝apppportVector: [200x1 logical] Solver: 'SMO' Properties, Methods

fitcsvmは,最適な推定実行可能点を使用するClassificationSVMモデルオブジェクトを返します。最適な推定実行可能点は,ベイズ最適化プロセスの基となるガウス過程モデルに基づいて交差検証損失の信頼限界の上限を最小化するハイパーパラメーターのセットです。

ベesc escズ最適化プロセスは,目的関数のガウス過程モデルを内部に保持します。目的関数は,分類の場合は交差検証済み誤分類率です。各反復において,最適化プロセスによってガウス過程モデルが更新され,そのモデルを使用して新しいハイパーパラメーターのセットが求められます。。

  • 客观的—新しいハパパラメタのセットにおいて計算された目的関数値。

  • 目标运行时-目的関数の評価時間。

  • Eval结果- - - - - -接受最好的または错误として指定される結果レポ,ト。接受は目的関数が有限値を返すことを示し,错误は目的関数が有限の実数スカラ,ではない値を返すことを示します。最好的は,目的関数が以前に計算された目的関数値より小さい有限値を返すことを示します。

  • BestSoFar(观察)-それまでに計算された最小の目的関数値。この値は,現在の反復の目的関数値(現在の反復におけるEval结果の値が最好的である場合),または前回の最好的反復の値です。

  • BestSoFar (estim)。——各反復で,更新されたガウス過程モデルを使用して,それまでに試行されたすべてのハイパーパラメーターのセットにおける目的関数値の信頼限界の上限が推定されます。次に,信頼限界の上限が最小になる点が選択されます。BestSoFar (estim)。の値は,最小点において関数predictObjectiveによって返される目的関数値です。

反復表示の下のプロットは,BestSoFar(观察)BestSoFar (estim)。の値をそれぞれ青と緑で示しています。

返されるオブジェクトMdlは,最適な推定実行可能点,まり,最終的なガウス過程モデルに基づく最後の反復でBestSoFar (estim)。の値を生成するハパパラメタのセットを使用します。

HyperparameterOptimizationResultsプロパティから,または関数bestPointを使用して,最適な点を取得できます。

Mdl.HyperparameterOptimizationResults.XAtMinEstimatedObjective
ans =1×2表BoxConstraint KernelScale  _____________ ___________ 985.37 - 0.27389
[x,CriterionValue,iteration] = bestPoint(mml . hyperparameteroptimizationresults)
x =1×2表BoxConstraint KernelScale  _____________ ___________ 985.37 - 0.27389
CriterionValue = 0.0888
迭代= 19

既定では,関数bestPointは基準“min-visited-upper-confidence-interval”を使用します。この基準では,19番目の反復から取得されたハ。CriterionValueは,最終的なガウス過程モデルによって計算された交差検証損失の上限です。分割cを使用して実際の交差検証損失を計算します。

L_MinEstimated = kfoldLoss(fitcsvm(cdata,grp,“CVPartition”c“KernelFunction”“rbf”...“BoxConstraint”x。BoxConstraint,“KernelScale”, x.KernelScale))
L_MinEstimated = 0.0700

実際の交差検証損失は,推定値に近くなっています。最適化の結果を示すプロットの下に目标函数估计值が表示されます。

また,HyperparameterOptimizationResultsプロパティから,または标准として“min-observed”を指定して,最適な観測実行可能点(まり,反復表示内の最後の最好的点)を抽出できます。

Mdl.HyperparameterOptimizationResults.XAtMinObjective
ans =1×2表BoxConstraint KernelScale  _____________ ___________ 953.22 - 0.26253
[x_observed,CriterionValue_observed,iteration_observed] = bestPoint(Mdl。HyperparameterOptimizationResults,“标准”“min-observed”
x_observed =1×2表BoxConstraint KernelScale  _____________ ___________ 953.22 - 0.26253
CriterionValue_observed = 0.0650
Iteration_observed = 16

基準“min-observed”では,16番目の反復から取得されたハ。CriterionValue_observed。詳細にいては,bestPointの名前と値の引数标准を参照してください。

最適化された分類器を可視化します。

D = 0.02;[x1Grid, x2Grid] = meshgrid (min (cdata (: 1)): d:马克斯(cdata (: 1)),...分钟(cdata (:, 2)): d:马克斯(cdata (:, 2)));xGrid = [x1Grid(:),x2Grid(:)];[~,scores] = predict(Mdl,xGrid);图h (1:2) = gscatter (cdata (: 1), cdata (:, 2), grp,“rg”' + *’);持有h(3) = plot(cdata(mld . 金宝appissupportvector,1),...cdata (Mdl.I金宝appsSupportVector, 2),“柯”);轮廓(x1Grid x2Grid,重塑(分数(:,2),大小(x1Grid)), [0 0),“k”);传奇(h, {' 1 '“+ 1”“金宝app支持向量”},“位置”“东南”);

图中包含一个轴对象。坐标轴对象包含线、轮廓等4个对象。这些对象表示-1,+1,支持向量。金宝app

新しいデ,タにおける精度の評価

新しい検定デ,タ点を生成して分類します。

Grnobj = gmdistribution(grnpop,.2*eye(2));Redobj = gmdistribution(redpop,.2*eye(2));newData = random(grnobj,10);newData = [newData;random(redobj,10)];grpData = ones(20,1);%绿色= 1grpData(11:20) = -1;%红色= -1v = predict(Mdl,newData);

検定デ,タセットで誤分類率を計算します。

L_Test = loss(Mdl,newData,grpData)
L_Test = 0.3500

正しく分類された新しいデ,タ点を判別します。正しく分類された点は赤い四角形で囲まれ,正しく分類されていない点は黒い四角形で囲まれています。

h(4:5) = gscatter(newData(:,1),newData(:,2),v,“mc”“* *”);mydiff = (v == grpData);%正确分类Ii = mydiff在正确的点周围画红方块h(6) = plot(newData(ii,1),newData(ii,2),“rs”“MarkerSize”12);结束Ii = not(mydiff)在不正确的点周围画黑色方块h(7) = plot(newData(ii,1),newData(ii,2),“ks”“MarkerSize”12);结束传奇(h, {“1”(培训)“+ 1(培训)”“金宝app支持向量”...“1”(分类)“+ 1(分类)”...正确分类的“是不是”},...“位置”“东南”);持有

图中包含一个轴对象。坐标轴对象包含8个对象类型的线,轮廓。这些对象表示-1(训练),+1(训练),支持向量,-1(分类),+1(分类),正确分类,错误分类。金宝app

参考

|

関連するトピック