构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...
?
盡管對(duì)于較高的閾值,SVM可以產(chǎn)生更好的ROC值,但邏輯回歸通常更擅長區(qū)分不良雷達(dá)收益與良好雷達(dá)。樸素貝葉斯的ROC曲線通常低于其他兩個(gè)ROC曲線,這表明樣本內(nèi)性能比其他兩個(gè)分類器方法差。
比較所有三個(gè)分類器的曲線下面積。
R
1
2
3
4
5
6
AUClog
AUClog=0.9659
AUCsvm
AUCsvm=0.9489
AUCnb
AUCnb=0.9393
Logistic回歸的AUC度量最高,而樸素的貝葉斯則最低。該結(jié)果表明,邏輯回歸對(duì)此樣本數(shù)據(jù)具有更好的樣本內(nèi)平均性能。
確定自定義內(nèi)核功能的參數(shù)值
本示例說明如何使用ROC曲線為分類器中的自定義內(nèi)核函數(shù)確定更好的參數(shù)值。
在單位圓內(nèi)生成隨機(jī)的一組點(diǎn)。
定義預(yù)測變量。將第一象限和第三象限中的點(diǎn)標(biāo)記為屬于正類別,而將第二象限和第二象限中的點(diǎn)標(biāo)記為負(fù)類。
R
1
2
3
pred=[X1;X2];
resp=ones(4*n,1);
resp(2*n+1:end)=-1;%Labels
創(chuàng)建函數(shù)mysigmoid.m?,該函數(shù) 接受要素空間中的兩個(gè)矩陣作為輸入,并使用S形內(nèi)核將其轉(zhuǎn)換為Gram矩陣。
使用Sigmoid內(nèi)核函數(shù)訓(xùn)練SVM分類器。使用標(biāo)準(zhǔn)化數(shù)據(jù)。
設(shè)置? gamma = 0.5?,使用調(diào)整后的S形核訓(xùn)練SVM分類器。
R
1
2
3
4
SVMModel2=fitPosterior(SVMModel2);
[~,scores2]=resubPredict(SVMModel2);
計(jì)算兩個(gè)模型的ROC曲線和曲線下面積(AUC)。
繪制ROC曲線。
R
1
2
3
4
5
6
plot(x1,y1)
holdon
plot(x2,y2)
holdoff
title('ROC for classification by SVM');
?
將gamma參數(shù)設(shè)置為0.5的內(nèi)核函數(shù)可提供更好的樣本內(nèi)結(jié)果。
比較AUC度量。
R
1
2
3
4
5
6
7
8
9
10
auc1
auc2
auc1=
0.9518
auc2=
0.9985
伽瑪設(shè)置為0.5時(shí)曲線下的面積大于伽瑪設(shè)置為1時(shí)曲線下的面積。這也證實(shí)了伽瑪參數(shù)值為0.5會(huì)產(chǎn)生更好的結(jié)果。為了直觀比較這兩個(gè)伽瑪參數(shù)值的分類性能。
繪制分類樹的ROC曲線
加載樣本數(shù)據(jù)。
R
1
loadfisheriris
列向量? species由三種不同物種的鳶尾花組成。雙矩陣? meas?包含對(duì)花朵的四種測量類型:萼片長度,萼片寬度,花瓣長度和花瓣寬度。所有度量單位均為厘米。
使用萼片的長度和寬度作為預(yù)測變量訓(xùn)練分類樹。
根據(jù)樹預(yù)測物種的分類標(biāo)簽和分?jǐn)?shù)?。
R
1
[~,score]=resubPredict(Model);
分?jǐn)?shù)是觀察值(數(shù)據(jù)矩陣中的一行)所屬類別的后驗(yàn)概率。列? score?對(duì)應(yīng)于所指定的類? 'ClassNames'。
由于這是一個(gè)多類問題,因此不能僅將其? score(:,2)?作為輸入。這樣做將無法提供? perfcurve?有關(guān)兩個(gè)陰性類別(setosa和virginica)分?jǐn)?shù)的足夠信息。此問題與二元分類問題不同,在二元分類問題中,知道一個(gè)類別的分?jǐn)?shù)就足以確定另一個(gè)類別的分?jǐn)?shù)。因此,必須提供? perfcurve?將兩個(gè)否定類的得分納入考慮范圍的函數(shù)。一種函數(shù)是score(:,2)-max(score(:,1),score(:,3))。
X,默認(rèn)為假陽性率,??Y,默認(rèn)為真陽性率(召回率或敏感性)。正類標(biāo)簽為? versicolor。由于未定義否定類別,因此? perfcurve?假設(shè)不屬于肯定類別的觀測值屬于一個(gè)類別。該函數(shù)將其接受為否定類。
R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
suby=12×2
00
0.18000.1800
0.48000.4800
0.58000.5800
0.62000.6200
0.80000.8000
0.88000.8800
0.92000.9200
0.96000.9600
0.98000.9800
?
subnames=1x2cell
{'setosa'}{'virginica'}
在ROC曲線上繪制ROC曲線和最佳工作點(diǎn)。
?
找到與最佳工作點(diǎn)相對(duì)應(yīng)的閾值。
R
1
2
T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))
ans=0.2857
指定? virginica?為否定類,并計(jì)算和繪制ROC曲線? versicolor。
同樣,必須提供? perfcurve?將否定類分?jǐn)?shù)納入考量的函數(shù)。要使用的函數(shù)的一個(gè)示例是score(:,2)-score(:,3)。
?
計(jì)算ROC曲線的逐點(diǎn)置信區(qū)間
加載樣本數(shù)據(jù)。
R
1
loadfisheriris
僅將前兩個(gè)變量用作預(yù)測變量,來定義二元問題。
R
1
pred=meas(51:end,1:2);
定義二進(jìn)制因變量。
R
1
resp=(1:100)'>50;%Versicolor=0,virginica=1
擬合邏輯回歸模型。
通過垂直平均(VA)和使用bootstrap進(jìn)行采樣,計(jì)算真實(shí)正率(TPR)上的逐點(diǎn)置信區(qū)間。
'NBoot',1000?將引導(dǎo)樣本的數(shù)量設(shè)置為1000。? 'XVals','All'?提示? perfcurve?返回? X,? Y和? T?所有分?jǐn)?shù)的Y?值,并X?使用垂直平均將所有值的值(真陽性率)? 平均? (假陽性率)。?默認(rèn)情況下將使用閾值平均來計(jì)算置信范圍。
繪制逐點(diǎn)置信區(qū)間。
R
1
2
errorbar(X,Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1));
?
不一定總是可以控制誤報(bào)率(FPR,X?此示例中的? 值)。因此,可能希望通過閾值平均來計(jì)算真實(shí)正利率(TPR)的逐點(diǎn)置信區(qū)間。
繪制置信區(qū)間。
R
1
2
3
figure()
errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));
?
指定閾值計(jì)算ROC曲線。然后繪制曲線。
R
1
2
3
4
figure()
errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));
?
總結(jié)
以上是生活随笔為你收集整理的构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SU-100反坦克歼击车
- 下一篇: tikhonov正则化 matlab_4