bayesopt
を使用した交差検証分類器の最適化
この例では,関数bayesopt
を使用して支持向量机分類を最適化する方法を示します。
あるいは,名前と値の引数OptimizeHyperparameters
を使用して分類器を最適化できます。例にいては,ベ@ @ズ最適化の使用による分類器の当てはめの最適化を参照してください。
デ,タの生成
この分類は,混合ガウスモデルによる点の位置に作用します。モデルの詳細にいては,统计学习的要素、Hastie Tibshirani,弗里德曼(2009)の17ページを参照してください。このモデルでは,平均(1,0)および単位分散をもつ2次元の独立した正規分布になっている10個の基底点をはじめに“绿色”クラスについて生成します。また,平均(0,1)と単位分散による2次元の独立した正規として分布される“红色”クラスにも,10個の基底点が生成されます。クラス(绿と红)ごとに,次のように100個の無作為な点を生成します。
適切な色の基底点米を一様にランダムに選択します。
平均米と分散我/ 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),“罗”)举行从
赤の基底点の一部が緑の基底点の近くにあるため,位置のみによるデ,タ点の分類は難しいかもしれません。
各クラスにいて100。
Redpts = 0 (100,2);为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),“罗”)举行从
分類用のデ,タの準備
デタを1の行列に格納し,grp
を作成します。1绿色はクラスを示し,-1红色はクラスを示します。
Cdata = [grnpts;redpts];GRP = ones(200,1);Grp (101:200) = -1;
交差検証の準備
交差検証用の分割を設定します。これにより,各ステップで最適化に使用される学習セットと検定セットとが決まります。
C = cvpartition(200,“KFold”10);
ベ@ @ズ最適化用の変数の準備
入力としてZ = [rbf_sigma,boxconstraint]
を受け入れz
の交差検証損失値を返す関数を設定します。z
の成分を1 e-5
~1 e5
の範囲で正の変数に対数変換します。どの値が適切であるかがわからないので,広い範囲を選択します。
sigma = optimizableVariable(“σ”(1 e-5, 1 e5),“转换”,“日志”);box = optimizableVariable(“盒子”(1 e-5, 1 e5),“转换”,“日志”);
目的関数
この関数ハンドルは,(σ,盒子)
というパラメ,タ,で交差検証損失を計算します。詳細にいては,kfoldLoss
を参照してください。
bayesopt
は変数z
を1行のテ,ブルとして目的関数に渡します。
minfn = @(z)kfoldLoss(fitcsvm(cdata,grp,“CVPartition”c...“KernelFunction”,“rbf”,“BoxConstraint”z.box,...“KernelScale”z.sigma));
分類器の最適化
bayesopt
を使用して最良のパラメタ(σ,盒子)
を求めます。再現性を得るために,“expected-improvement-plus”
の獲得関数を選択します。既定の獲得関数は実行時に決定されるので,結果が異なる場合があります。
结果= bayesopt(minfn,[sigma,box],“IsObjectiveDeterministic”,真的,...“AcquisitionFunctionName”,“expected-improvement-plus”)
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar |σ盒| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.61 | 0.40182 | 0.61 | 0.61 | 0.00013375 | 13929 | | 2 |最好| 0.345 | 0.16948 | 0.345 | 0.345 | 24526 | 1.936 | | 3 |接受| 0.61 | 0.27978 |0.345 | 0.345 | 0.0026459 | 0.00084929 | | 4 |接受| 0.345 | 0.36862 | 0.345 | 0.345 | 3506.3 | 6.7427 e-05 | | 5 |接受| 0.345 | 0.4436 | 0.345 | 0.345 | 9135.2 | 571.87 | | 6 |接受| 0.345 | 0.22518 | 0.345 | 0.345 | 99701 | 10223 | | 7最好| | 0.295 | 0.31096 | 0.295 | 0.295 | 455.88 | 9957.4 | | 8最好| | 0.24 | 1.4672 | 0.24 | 0.24 | 31.56 | 99389 | | | 9日接受| 0.24 | 1.7328 | 0.24 | 0.24 | 10.451 | 64429 | | 10 |接受| 0.35 | 0.34473 | 0.24 | 0.24 | 17.331 | 1.0264 e-05 | |最好11 | | 0.23 | 1.221 | 0.23 | 0.23 | 16.005 | 90155 | | 12最好| | 0.1 | 0.47691 | 0.1 | 0.1 | 0.36562 | 80878 | | | 13日接受| 0.115 | 0.33208 | 0.1 | 0.1 | 0.1793 | 68459 | | | 14日接受| 0.105 | 0.4219 | 0.1 | 0.1 | 0.2267 | 95421 | |最好15 | | 0.095 | 0.34636 | 0.095 | 0.095 | 0.28999 | 0.0058227 | | 16最好| | 0.075 | 0.40056 | 0.075 | 0.075 | 0.30554 | 8.9017 | | | 17日接受| 0.085 | 0.51762 | 0.075 | 0.075 | 0.41122 | 4.4476 | | | 18日接受| 0.085 | 0.311 | 0.075 | 0.075 |0.25565 | 7.8038 | | | 19日接受| 0.075 | 0.38174 | 0.075 | 0.075 | 0.32869 | 18.076 | | 20 |接受| 0.085 | 0.25386 | 0.075 | 0.075 | 0.32442 | 5.2118 | |=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar |σ盒| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 21|Accept | 0.3 | 0.22476 | 0.075 | 0.075 | 1.3592 | 0.0098067 | | 22 | Accept | 0.12 | 0.21961 | 0.075 | 0.075 | 0.17515 | 0.00070913 | | 23 | Accept | 0.175 | 0.38522 | 0.075 | 0.075 | 0.1252 | 0.010749 | | 24 | Accept | 0.105 | 0.32286 | 0.075 | 0.075 | 1.1664 | 31.13 | | 25 | Accept | 0.1 | 0.22029 | 0.075 | 0.075 | 0.57465 | 2013.8 | | 26 | Accept | 0.12 | 0.38576 | 0.075 | 0.075 | 0.42922 | 1.1602e-05 | | 27 | Accept | 0.12 | 0.29772 | 0.075 | 0.075 | 0.42956 | 0.00027218 | | 28 | Accept | 0.095 | 0.27226 | 0.075 | 0.075 | 0.4806 | 13.452 | | 29 | Accept | 0.105 | 0.34351 | 0.075 | 0.075 | 0.19755 | 943.87 | | 30 | Accept | 0.205 | 0.27557 | 0.075 | 0.075 | 3.5051 | 93.492 |
__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:50.236秒总目标函数评估时间:13.3547最佳观测可行点:西格玛箱_______ ______ 0.30554 8.9017观测目标函数值= 0.075估计目标函数值= 0.075函数评估时间= 0.40056最佳估计可行点(根据模型):西格玛箱_______ ______ 0.32869 18.076估计目标函数值= 0.075估计函数评估时间= 0.33494
results = BayesianOptimization with properties: ObjectiveFcn: [function_handle] variabledescription: [1x2 optimizableVariable] Options: [1x1 struct] MinObjective: 0.0750 XAtMinObjective: [1x2 table] minestimatedobjobjective: 0.0750 xatminestimatedobjobjective: [1x2 table] numobjectiveevaluation: 30 TotalElapsedTime: 50.2360 NextPoint: [1x2 table] XTrace: [30x2 table] ObjectiveTrace: [30x1 double] ConstraintsTrace: [] UserDataTrace: {30x1 cell} ObjectiveEvaluationTimeTrace:[30x1 double] IterationTimeTrace: [30x1 double] ErrorTrace: [30x1 double]可行性trace: [30x1 logical]可行性probabilitytrace: [30x1 double] IndexOfMinimumTrace: [30x1 double] objectivminimumtrace: [30x1 double] estimatedobjectivminimumtrace: [30x1 double]
XAtMinEstimatedObjective
プロパティから,または関数bestPoint
を使用して,最適な推定実行可能点を取得します。既定では,関数bestPoint
は基準“min-visited-upper-confidence-interval”
を使用します。詳細にいては,bestPoint
の名前と値の引数标准を参照してください。
结果。XAtMinEstimatedObjective
ans =1×2表西格玛箱_______ ______ 0.32869 18.076
z = bestPoint(结果)
z =1×2表西格玛箱_______ ______ 0.32869 18.076
最良の点を使用して,最適化された新しいSVM分類器に学習させます。
SVMModel = fitcsvm(cdata,grp,“KernelFunction”,“rbf”,...“KernelScale”z.sigma,“BoxConstraint”, z.box);
サポ,トベクタ,分類器を可視化するため,グリッド全体でスコアを予測します。
D = 0.02;[x1Grid, x2Grid] = meshgrid (min (cdata (: 1)): d:马克斯(cdata (: 1)),...分钟(cdata (:, 2)): d:马克斯(cdata (:, 2)));xGrid = [x1Grid(:),x2Grid(:)];[~,scores] = predict(SVMModel,xGrid);
分類境界線をプロットします。
图h (1:2) = gscatter (cdata (: 1), cdata (:, 2), grp,“rg”,' + *’);持有在h(3) = plot(cdata(SVMModel.Is万博1manbetxSupportVector,1),...cdata (SVMModel.I万博1manbetxsSupportVector, 2),“柯”);轮廓(x1Grid x2Grid,重塑(分数(:,2),大小(x1Grid)), [0 0),“k”);传奇(h, {' 1 ',“+ 1”,“万博1manbetx支持向量”},“位置”,“东南”);
新しいデ,タにおける精度の評価
新しい検定デ,タ点を生成して分類します。
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(SVMModel,newData);
検定デ,タセットで誤分類率を計算します。
L = loss(SVMModel,newData,grpData)
L = 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(培训)”,“万博1manbetx支持向量”,...“1”(分类),“+ 1(分类)”,...正确分类的,“是不是”},...“位置”,“东南”);持有从