主要内容

bayesopt를사용하여교차검된분류기최적화하기

이예제에서는bayesopt함수를사용하여支持向量机분류를최적화하는방법을보여줍니다。

또는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);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类型的对象。

분류를위한데이터준비하기

데이터를한행렬에저장하고,각점의클래스에레이블을지정하는벡터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-51 e5사이의양의로그변환변수로취하십시오。어떤값이좋을지알수없으므로넓은범위를선택하십시오。

sigma = optimizableVariable(“σ”(1 e-5, 1 e5),“转换”“日志”);box = optimizableVariable(“盒子”(1 e-5, 1 e5),“转换”“日志”);

목적 함수

이함수핸들은모수(σ,盒子)에서교차검손실을계산합니다。자세한내용은kfoldLoss항목을참조하십시오。

bayesopt는 변수z를목적함수에행이하나테이블로전달합니다。

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.20927 | 0.61 | 0.61 | 0.00013375 | 13929 | | 2 |最好| 0.345 | 0.098472 | 0.345 | 0.345 | 24526 | 1.936 | | 3 |接受| 0.61 | 0.14089 |0.345 | 0.345 | 0.0026459 | 0.00084929 | | 4 |接受| 0.345 | 0.24847 | 0.345 | 0.345 | 3506.3 | 6.7427 e-05 | | 5 |接受| 0.345 | 0.20974 | 0.345 | 0.345 | 9135.2 | 571.87 | | 6 |接受| 0.345 | 0.21647 | 0.345 | 0.345 | 99701 | 10223 | | 7最好| | 0.295 | 0.19945 | 0.295 | 0.295 | 455.88 | 9957.4 | | 8最好| | 0.24 | 0.96289 | 0.24 | 0.24 | 31.56 | 99389 | | | 9日接受| 0.24 | 1.2554 | 0.24 | 0.24 | 10.451 | 64429 | | 10 |接受| 0.35 | 0.21298 | 0.24 | 0.24 | 17.331 | 1.0264 e-05 |最好11 | | | 0.23 | 0.87151 | 0.23 | 0.23 | 16.005 | 90155 | | 12最好| | 0.1 | 0.23447 | 0.1 | 0.1 | 0.36562 | 80878 | | | 13日接受| 0.115 | 0.19081 | 0.1 | 0.1 | 0.1793 | 68459 | | | 14日接受| 0.105 | 0.30429 | 0.1 | 0.1 | 0.2267 | 95421 | |最好15 | | 0.095 | 0.14948 | 0.095 | 0.095 | 0.28999 | 0.0058227 | | 16最好| | 0.075 | 0.25525 | 0.075 | 0.075 | 0.30554 | 8.9017 | | | 17日接受| 0.085 | 0.22912 | 0.075 | 0.075 | 0.41122 | 4.4476 | | | 18日接受| 0.085 | 0.2578 | 0.075 | 0.075|0.25565 | 7.8038 | | 19 | Accept | 0.075 | 0.2328 | 0.075 | 0.075 | 0.32869 | 18.076 | | 20 | Accept | 0.085 | 0.16727 | 0.075 | 0.075 | 0.32442 | 5.2118 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | sigma | box | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.3 | 0.16719 | 0.075 | 0.075 | 1.3592 | 0.0098067 | | 22 | Accept | 0.12 | 0.20921 | 0.075 | 0.075 | 0.17515 | 0.00070913 | | 23 | Accept | 0.175 | 0.26044 | 0.075 | 0.075 | 0.1252 | 0.010749 | | 24 | Accept | 0.105 | 0.24597 | 0.075 | 0.075 | 1.1664 | 31.13 | | 25 | Accept | 0.1 | 0.19861 | 0.075 | 0.075 | 0.57465 | 2013.8 | | 26 | Accept | 0.12 | 0.16175 | 0.075 | 0.075 | 0.42922 | 1.1602e-05 | | 27 | Accept | 0.12 | 0.17382 | 0.075 | 0.075 | 0.42956 | 0.00027218 | | 28 | Accept | 0.095 | 0.16979 | 0.075 | 0.075 | 0.4806 | 13.452 | | 29 | Accept | 0.105 | 0.21391 | 0.075 | 0.075 | 0.19755 | 943.87 | | 30 | Accept | 0.205 | 0.19205 | 0.075 | 0.075 | 3.5051 | 93.492 |

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

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

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:31.3766秒总目标函数评估时间:8.6396最佳观测可行点:西格玛箱_______ ______ 0.30554 8.9017观测目标函数值= 0.075估计目标函数值= 0.075函数评估时间= 0.25525最佳估计可行点(根据模型):西格玛箱_______ ______ 0.32869 18.076估计目标函数值= 0.075估计函数评估时间= 0.21907
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] numobjectiveevaluveevaluveevaluation: 30 TotalElapsedTime: 31.3766 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

최상의점을사용하여최적화된새支持向量机분류기를훈련시킵니다。

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金宝appSupportVector,1),...cdata (SVMModel.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(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(培训)”“金宝app支持向量”...“1”(分类)“+ 1(分类)”...正确分类的“是不是”},...“位置”“东南”);持有

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

참고 항목

|

관련 항목