主要内容

使用贝叶斯优化优化分类器

这个例子展示了如何优化SVM分类使用fitcsvm函数和OptimizeHyperparameters名称-值参数。

生成数据

分类工作在一个高斯混合模型的点的位置。在统计学习的要素, Hastie, Tibshirani, and Friedman(2009),第17页描述了这个模型。该模型首先为“绿色”类生成10个基点,分布为均值(1,0)和单位方差的2-D独立正态分布。它还为“红色”类生成10个基点,分布为均值(0,1)和单位方差的2-D独立正态分布。对于每个职业(绿色和红色),生成100个随机点数如下:

  1. 选择一个基点适当的颜色均匀随意。

  2. 生成一个独立的具有二维正态分布的随机点方差I/5,其中I是2 × 2单位矩阵。在本例中,使用方差I/50来更清楚地显示优化的优势。

为每个职业生成10个基点。

rng (“默认”%的再现性grnpop = mvnrnd((1,0)、眼睛(2),10);redpop = mvnrnd([0, 1],眼(2),10);

查看基点。

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

图中包含一个axes对象。axes对象包含两个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),“罗”)举行

图中包含一个axes对象。axes对象包含两个line类型的对象。

准备分类数据

将数据放入一个矩阵,并生成一个向量玻璃钢标记每个点的类别。1表示绿色类,-1表示红色类。

cdata=[grnpts;redpts];grp=one(200,1);grp(101:200)=-1;

准备交叉验证

为交叉验证设置分区。

c=CVD(200,“KFold”10);

此步骤为可选步骤。如果为优化指定一个分区,则可以为返回的模型计算实际的交叉验证损失。

优化匹配

为了找到一个很好的匹配,即具有最优超参数的匹配,以最小化交叉验证损失,可以使用贝叶斯优化。属性指定要优化的超参数列表OptimizeHyperparameters参数,并通过使用HyperparameterOptimizationOptions名称-值参数。

具体说明“OptimizeHyperparameters”作为“汽车”.的“汽车”选项包括一组要优化的典型超参数。fitcsvm的最优值BoxConstraintKernelScale.设置超参数优化选项以使用交叉验证分区c选择“expected-improvement-plus”再现性的获取功能。默认的获取函数取决于运行时,因此可以给出不同的结果。

选择=结构(“CVPartition”c“AcquisitionFunctionName”“expected-improvement-plus”);Mdl = fitcsvm (grp cdata,“KernelFunction”“rbf”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”选择)
|==================================================================================================================================================================Iter |评估|目标|目标| Sofar | Sofar | Boxelscale | |结果|第1244号||||||||||||||||||124|124|124月月第四列列列列第第第7 7 7 7=======================================================================================================================================================================================================================================================================================第第第第第第第第第第第第==========================================================================================0.115 | 0.18714 | 0.115 | 0.12678 | 430.31 | 1.4864 | 3 |接受| 0.52 | 0.27751 | 0.1152 | 0.028415 | 0.014369 |接受| 0.61 1247 1240.115.0 0 0.周四周四周四0 0.周四周四0 0.周四周四0 0.周四周四0 0.0 0 0.周四周四周四0.0 0 0.周四周四0.0 0 0.周四周四0 0.周四0 0 0.周四0 0.周四0 0 0.周四0 0 0.周四周四周四0 0.周四周四0 0.周四周四周四0 0.周四周四周四周四周四0 0 0 0 0 0.周四接受接受0.5 5 5 5 5 4 4 4 4四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四0 0 0 0 0 0 0 0 0 0 0 0.周四周四085428 | 0.3057 | 0.58118 | 8 |接受| 0.21 | 0.26477 | 0.085 | 0.09566 | 0.16044 | 0.91824 | 9 |接受| 0.085 | 0.23688 1240。0.10124周四周四周四0 0.085 0 0 0.085 0 0 0.085 0.085 0.085 0.085 0 0.085 0.085 0 0.085 0 0.085 0 0 0.085 0 0.085 0 0.085 0 0 0 0.085 0 0 0 0.085 5 5 0.085 5 0 0 0.085 512455 5 0 0.08512455 5 0 0 0 0.085 512400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.085 512455 5 5 5 5 5 5 512400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.085 5 5 5 5 5 5 5 5 5 5 5 512400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08402 | 14.338 | 0.44386 | 13 |接受| 0.1 | 0.20009 | 0.08 | 0.08508 | 0.0022577 | 0.23803 | 14 |接受| 0.11 | 0.49489 1240.08 |0“0.2007”0.087378 0 0.087378 0 0.08737812477 7 7 7 7 7 0 0.7 7 7 0 0.7 7 7 7 7 0 0.7 7 0 0 0 0.7 7 7 7 0 0.087 7 7 0 0 0 0 0 0.17 15 15 15 0 0.15 15 15 151240.15 15 15 1512400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 712477 7 7 7 7 7 7 7 7 7 712477 7 7 7 7124周四周四周四周四周四周四周四周四周日周日周日周日周日周日周日周日周日周日0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| 998.74 | 0.23087 | 18 |接受| 0.295 | 0.27085 | 0.065 | 0.072647 | 996.18 | 44.626 | 19 |接受| 0.07 | 0.31933 | 0.065|第0.066 0.06946 0.06946 0 0.069 9 9 9 9 9 9 9.2007 2007年9月10.244 0.066 0.066 0.060 0.066 0.060 0 0.066 6 0.066 0 0 0.06946 6 6 0.06946 0.2007 2007年0.2007 0.2007 2007年9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.你你你你接受接受0 0 0.165;接受0.165;0.165;0 0.165;0.164 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 0.274 4 4 4 4 4 4 4 4 4 4 4 4 4 0.066 0 0.066 0 0 0 0.066 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6==| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint | KernelScale | result | | runtime | | | | | | | | | | | | |(124?????????????????124???????????????????????????????????????????????????????????月月月月月第第第============第第第第第第第==================第第第第第第============================================================第第第第第第第第第第第第第第第第第==============================第第第第第第第第第第第第第第第第第=======================================第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第;0.61 | 0.26964 | 0.065 | 0.071967 | 0.0010168 | 0.0010005 | 23 |接受| 0.345 | 0.34764 | 0.065 | 0.071959 | 0.0011459 | 995.89 | 24 |接受1240。40.628 |; 0.244 0 0 0 0.247 7 7 7 0 0.247 7 0 0 0.247 0 0 0 0 0 0 0 0 0.247 0 0 0.247 0 0 0.247 0 0 0.247 7 0 0 0.22 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| 0.20158 | 0.065 | 0.07218 | 993.69 | 0.029723 | 28 |接受| 0.3 | 0.17353 | 0.065 | 0.072291 | 993.15 | 170.01 | 29 |根据pt | 0.16 | 0.41714 | 0.065 | 0.072103 | 992.81 | 3.8594 | 30 |接受| 0.365 | 0.42269 | 0.065 | 0.072112 | 0.0010017 1244287|

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

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

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:42.6693秒总目标函数计算时间:9.3728BoxConstraint KernelScale _____________ ___________ 953.22 0.26253观测目标函数值= 0.065估计目标函数值= 0.073726函数评估时间= 0.36104最佳估计可行点(根据模型):BoxConstraint KernelScale _____________ ___________ 985.37 0.27389估计的目标函数值= 0.072112估计的函数计算时间= 0.29981
Mdl=ClassificationSVM ResponseName:'Y'分类预测值:[]类名:[-1]ScoreTransform:'none'NumObservations:200超参数优化结果:[1x1贝叶斯优化]α:[77x1双]偏差:-0.2352内核参数:[1x1结构]框约束:[200x1双]收敛信息:[1x1结构]IsupportVector:[200x1逻辑]解算器:“SMO”属性、方法万博1manbetx

fitcsvm返回一个ClassificationSVM使用最佳估计可行点的模型对象。最佳估计可行点是一组超参数,该超参数使基于贝叶斯优化过程的高斯过程模型的交叉验证损失的上置信界最小。

贝叶斯优化过程内部维持目标函数的高斯过程模型。目标函数为进行分类的交叉验证误分类率。对于每一次迭代,优化过程更新高斯过程模型,并使用该模型寻找一组新的超参数。迭代显示的每一行都显示了新的超参数集和这些列值:

  • 客观的-在新的超参数集上计算的目标函数值。

  • 目标运行时-目标函数评估时间。

  • Eval结果—结果报告,指定为接受最好的,或错误接受指示目标函数返回有限值,并且错误指示目标函数返回一个非有限实标量的值。最好的指示目标函数返回一个比先前计算的目标函数值低的有限值。

  • BestSoFar(观察)-到目前为止计算的最小目标函数值。该值是当前迭代的目标函数值(如果Eval结果值为最好的)或前一个的值最好的迭代。

  • BestSoFar (estim)。-在每次迭代时,软件使用更新的高斯过程模型,对迄今为止尝试过的所有超参数集估计目标函数值的置信上限。然后软件选择上置信界最小的点。的BestSoFar (estim)。函数返回的目标函数值预测目标函数在最小点处。

迭代显示下面的图显示了BestSoFar(观察)BestSoFar (estim)。值分别为蓝色和绿色。

返回的对象Mdl使用估计的最佳可行点,即超参数集,产生BestSoFar (estim)。在最终高斯过程模型的基础上,在最终迭代的值。

你可以从HyperparameterOptimizationResults属性或使用bestPoint作用

Mdl.HyperparameterOptimizationResults.xatmineEstimatedObjective
ans =1×2表BoxConstraint内核缩放0.27389
[x, CriterionValue迭代]= bestPoint (Mdl.HyperparameterOptimizationResults)
x=1×2表BoxConstraint内核缩放0.27389
标准值=0.0888
迭代= 19

默认情况下bestPoint函数使用“min-visited-upper-confidence-interval”准则。该准则选择从第19次迭代中获得的超参数作为最佳点。CriterionValue为最终高斯过程模型计算的交叉验证损失的上界。通过使用分区计算实际的交叉验证损失c

L_MinEstimated = kfoldLoss (fitcsvm (grp cdata,“CVPartition”c“KernelFunction”“rbf”...“BoxConstraint”x。BoxConstraint,“内核尺度”, 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 (:));[~,分数]=预测(Mdl xGrid);图h (1:2) = gscatter (cdata (: 1), cdata (:, 2), grp,“rg”' + *’);持有h(3) =情节(cdata (Mdl.IsSu万博1manbetxpportVector, 1),...cdata (Mdl.I万博1manbetxsSupportVector, 2),“柯”); 轮廓(x1Grid,x2Grid,重塑(分数(:,2),大小(x1Grid)),[0],“k”);传奇(h, {' 1 '“+ 1”“万博1manbetx支持向量”},“位置”“东南”);

图中包含一个轴对象。轴对象包含线条、轮廓等4个对象。这些对象代表-1,+1,支持向量。万博1manbetx

评估新数据的准确性

生成和分类新的测试数据点。

grnobj = gmdistribution (grnpop。2 *眼(2));redobj = gmdistribution (redpop。2 *眼(2));newData =随机(grnobj 10);newData = [newData;随机(redobj 10)];grpData = 1(20日1);% green = 1grpData (11) = 1;%红色=-1v =预测(Mdl newData);

计算测试数据集上的误分类率。

L_Test =损失(Mdl newData grpData)
L_Test = 0.3500

确定哪些新数据点被正确分类。将正确分类的点用红色方格表示,错误分类的点用黑色方格表示。

h (4:5) = gscatter (newData (: 1), newData (:, 2), v,“mc”“* *”); mydiff=(v==grpData);%分类正确对于2 = mydiff%在正确的pts周围绘制红色方块h(6)=绘图(新数据(ii,1),新数据(ii,2),“rs”“MarkerSize”12);终止对于2 =不(mydiff)%在错误点周围绘制黑色方块h(7) =情节(newData (ii, 1), newData (ii, 2),“ks”“MarkerSize”12);终止传奇(h, {“1”(培训)“+ 1(培训)”“万博1manbetx支持向量”...“1”(分类)“+ 1(分类)”...正确分类的“是不是”},...“位置”“东南”);持有

图中包含一个轴对象。轴对象包含线型、等高线等8个对象。这些对象代表-1(训练),+1(训练),支持向量,-1(分类),+1(分类),正确分类,错误分类。万博1manbetx

另请参阅

|

相关的话题