主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

베이즈최적화를사용하여분류기피팅최적화하기

이예제에서는fitcsvm함수 및OptimizeHyperparameters이름-값수를사용하여SVM분류를최적화하는방법을보여줍니다。

데이터생성하기

이분류는가우스혼합모델의점위치를사용한것입니다。统计学习的要素、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类型的对象。

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

데이터를한행렬에저장하고,각점의클래스에레이블을지정하는벡터grp를생성합니다。1은녹색클래스를나타내고,-1은빨간색클래스를나타냅니다。

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

교차검준비하기

교차검에사용할분할을설정합니다。

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

이는선택적단계입니다。최적화에사용할분할을지정하면,반환된모델에대한실제교차검증손실을계산할수있습니다。

피팅최적화하기

양호한피팅,즉교차검증손실을최소화하는최적의하이퍼파라미터를갖는피팅을구하려면베이즈최적화를사용하십시오。OptimizeHyperparameters이름-값通讯录수를사용하여최적화할하이퍼파라미터목록을지정하고HyperparameterOptimizationOptions이름-값通讯录수를사용하여최적화옵션을지정합니다。

“OptimizeHyperparameters”“汽车”로지정합니다。“汽车”옵션에는최적화할일반적하이퍼파라미터세트가포함되어있습니다。fitcsvmBoxConstraintKernelScale의최적값을구합니다。재현이가능하도록교차검분할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.26612 | 0.345 | 0.345 | 0.00474 | 306.44 | | 2 |最好| 0.115 | 0.16757 | 0.115 | 0.12678 | 430.31 | 1.4864 | | 3 |接受| 0.52 | 0.21336 | 0.115 | 0.1152 | 0.028415 | 0.014369 | | 4 |接受| 0.61 | 0.41833 | 0.115 | 0.11504 | 133.94 | 0.0031427 | | 5 |接受| 0.34 | 0.46056 | 0.115 | 0.11504 | 0.010993 | 5.7742 | | 6 |的| 0.085 | 0.25465 | 0.085 | 0.085039 | 885.63 | 0.68403 | | | 7日接受| 0.105 | 0.25751 | 0.085 | 0.085428 | 0.3057 | 0.58118 | | |接受8 | 0.21 | 0.28915 | 0.085 | 0.09566 | 0.16044 | 0.91824 | | | 9日接受| 0.085 | 0.30816 | 0.085 | 0.08725 | 972.19 | 0.46259 | | 10 |接受| 0.1 |0.34457 | 0.085 | 0.090952 | 990.29 | 0.491 | | 11 | Best | 0.08 | 0.21805 | 0.08 | 0.079362 | 2.5195 | 0.291 | | 12 | Accept | 0.09 | 0.24212 | 0.08 | 0.08402 | 14.338 | 0.44386 | | 13 | Accept | 0.1 | 0.23766 | 0.08 | 0.08508 | 0.0022577 | 0.23803 | | 14 | Accept | 0.11 | 0.24347 | 0.08 | 0.087378 | 0.2115 | 0.32109 | | 15 | Best | 0.07 | 0.30411 | 0.07 | 0.081507 | 910.2 | 0.25218 | | 16 | Best | 0.065 | 0.24431 | 0.065 | 0.072457 | 953.22 | 0.26253 | | 17 | Accept | 0.075 | 0.33287 | 0.065 | 0.072554 | 998.74 | 0.23087 | | 18 | Accept | 0.295 | 0.21231 | 0.065 | 0.072647 | 996.18 | 44.626 | | 19 | Accept | 0.07 | 0.26876 | 0.065 | 0.06946 | 985.37 | 0.27389 | | 20 | Accept | 0.165 | 0.24669 | 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.20097 | 0.065 | 0.071764 | 971.7 | 999.01 | | 22 | Accept | 0.61 | 0.2416 | 0.065 | 0.071967 | 0.0010168 | 0.0010005 | | 23 | Accept | 0.345 | 0.26803 | 0.065 | 0.071959 | 0.0011459 | 995.89 | | 24 | Accept | 0.35 | 0.23608 | 0.065 | 0.071863 | 0.0010003 | 40.628 | | 25 | Accept | 0.24 | 0.39188 | 0.065 | 0.072124 | 996.55 | 10.423 | | 26 | Accept | 0.61 | 0.46697 | 0.065 | 0.072067 | 994.71 | 0.0010063 | | 27 | Accept | 0.47 | 0.28997 | 0.065 | 0.07218 | 993.69 | 0.029723 | | 28 | Accept | 0.3 | 0.24924 | 0.065 | 0.072291 | 993.15 | 170.01 | | 29 | Accept | 0.16 | 0.37085 | 0.065 | 0.072103 | 992.81 | 3.8594 | | 30 | Accept | 0.365 | 0.19017 | 0.065 | 0.072112 | 0.0010017 | 0.044287 |

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

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

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:42.2011秒总目标函数评估时间:8.4361最佳观测可行点:BoxConstraint KernelScale _____________ ___________ 953.22 0.26253观测目标函数值= 0.065估计目标函数值= 0.073726函数评估时间= 0.24431最佳估计可行点(根据模型):BoxConstraint KernelScale _____________ ___________ 985.37 0.27389估计目标函数值= 0.072112估计函数评估时间= 0.28413
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모델객체를반환합니다。최상의추정된실현가능점은베이즈최적화과정의기본가우스과정모델을기반으로하여교차검증손실의신뢰상한을최소화하는하이퍼파라미터세트입니다。

베이즈최적화과정은내부적으로목적함수의가우스과정모델을유지합니다。분류의경우목적함수는교차검된오분류율입니다。각반복에대해최적화과정은가우스과정모델을업데이트하고이모델을사용하여새하이퍼파라미터세트를구합니다。반복` ` ` ` `시의각라` ` ` ` ` `은새하이퍼파라미터세트와다음열값을` ` ` ` `시합니다。

  • 客观的-새하이퍼파라미터세트에서계산되는목적함수값。

  • 目标运行时-목적함수계산시간。

  • 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

참고 항목

|

관련 항목