![R語言數(shù)據(jù)分析與挖掘-模型性能評估及優(yōu)化_第1頁](http://file4.renrendoc.com/view/863bdcea32c9019c2ff966e6592bd6ab/863bdcea32c9019c2ff966e6592bd6ab1.gif)
![R語言數(shù)據(jù)分析與挖掘-模型性能評估及優(yōu)化_第2頁](http://file4.renrendoc.com/view/863bdcea32c9019c2ff966e6592bd6ab/863bdcea32c9019c2ff966e6592bd6ab2.gif)
![R語言數(shù)據(jù)分析與挖掘-模型性能評估及優(yōu)化_第3頁](http://file4.renrendoc.com/view/863bdcea32c9019c2ff966e6592bd6ab/863bdcea32c9019c2ff966e6592bd6ab3.gif)
![R語言數(shù)據(jù)分析與挖掘-模型性能評估及優(yōu)化_第4頁](http://file4.renrendoc.com/view/863bdcea32c9019c2ff966e6592bd6ab/863bdcea32c9019c2ff966e6592bd6ab4.gif)
![R語言數(shù)據(jù)分析與挖掘-模型性能評估及優(yōu)化_第5頁](http://file4.renrendoc.com/view/863bdcea32c9019c2ff966e6592bd6ab/863bdcea32c9019c2ff966e6592bd6ab5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
模型性能評估01102模型參數(shù)優(yōu)化01模型性能評估201PAGE3模型性能評估3預(yù)測通常有兩大應(yīng)用場景:第一類是預(yù)測某指標(biāo)的取值,也稱為數(shù)值預(yù)測,數(shù)值預(yù)測模型性能評估主要通過均方誤差、均方根誤差、平均絕對誤差等指標(biāo)來評價;第二類是預(yù)測某事物出現(xiàn)的概率,也稱為概率預(yù)測,對于二分類概率預(yù)測,常以混淆矩陣為基礎(chǔ),通過準(zhǔn)確率率、覆蓋率等指標(biāo),結(jié)合ROC曲線、KS曲線、提升圖等可視化方法來評估模型性能。PAGE4數(shù)值預(yù)測評估方法4
PAGE5數(shù)值預(yù)測評估方法5
PAGE6數(shù)值預(yù)測評估方法R語言實現(xiàn)6讓我們利用mlbench擴(kuò)展包中BostonHousing(波士頓房價)數(shù)據(jù)集為例,利用lm()函數(shù)建立以medv為因變量,其他特征為自變量的線性回歸模型,并通過自定義函數(shù),實現(xiàn)計算以上常見數(shù)值預(yù)測模型評估指標(biāo)。實現(xiàn)代碼如下:>#加載包,不存在就進(jìn)行在線下載后加載>if(!require(mlbench))install.packages("mlbench")>data("BostonHousing")>#數(shù)據(jù)分區(qū)>library(caret)>index<-createDataPartition(BostonHousing$medv,+p=0.75,list=FALSE)>train<-BostonHousing[index,]>test<-BostonHousing[-index,]>#利用訓(xùn)練集構(gòu)建模型,并對測試集進(jìn)行預(yù)測>set.seed(1234)>fit<-lm(medv~.,data=train)>pred<-predict(fit,newdata=test)>>#自定義函數(shù)計算數(shù)值預(yù)測模型的評估指標(biāo)>numericIndex<-function(obs,pred){+#計算平均絕對誤差MAE+MAE<-mean(abs(obs-pred))+#計算均方誤差MSE+MSE<-mean((obs-pred)^2)+#計算均方根誤差RMSE+RMSE<-sqrt(mean((obs-pred)^2))+#計算歸一化均方誤差+NMSE<-sum((obs-pred)^2)/(sum((obs-mean(obs))^2))+#計算判定系數(shù)Rsquared+Rsqured<-cor(pred,obs)^2+#返回向量形式+return(c('MAE'=MAE,'MSE'=MSE,'RMSE'=RMSE,'NMSE'=NMSE,'Rsqured'=Rsqured))+}>#計算各指標(biāo)度量值>numericIndex(test$medv,pred)MAEMSERMSENMSERsqured3.456530826.65314315.16266820.37314740.6461423PAGE7概率預(yù)測評估方法-混淆矩陣7概率是指事物出現(xiàn)的可能性,是對分類問題中某類出現(xiàn)概率的描述,本質(zhì)上是分類問題(通過各類別出現(xiàn)的概率大小確定取某一類)。常用評估方法有:混淆矩陣、ROC曲線、KS曲線、累計提升圖等。處理分類問題的評估思路,最常見的就是通過混淆矩陣,結(jié)合分析圖表綜合評價。
預(yù)測類別實際類別
101TPFN0FPTNTruePositive(TP):指模型預(yù)測為正(1),并且實際上也的確是正(1)的觀察對象的數(shù)量。TrueNegative(TN):指模型預(yù)測為負(fù)(0),并且實際上也的確是負(fù)(0)的觀察對象的數(shù)量。FalsePositive(FP):指模型預(yù)測為正(1),但是實際上是負(fù)(0)的觀測對象的數(shù)量。FalseNegative(FN):指模型預(yù)測為負(fù)(0),但是實際上是正(1)的觀測對象的數(shù)量。PAGE8概率預(yù)測評估方法-混淆矩陣8
PAGE9概率預(yù)測評估方法-混淆矩陣9
PAGE10概率預(yù)測評估方法-混淆矩陣案例10接下來,利用DAAG擴(kuò)展包的數(shù)據(jù)集anesthetic為例進(jìn)行演示。數(shù)據(jù)集來自于一組醫(yī)學(xué)數(shù)據(jù),其中變量conc表示麻醉劑的用量,move則表示手術(shù)病人是否有所移動,而我們用nomove做為因變量,研究的重點在于conc的增加是否會使nomove的概率增加。以下代碼利用邏輯回歸構(gòu)建二分類預(yù)測模型,以0.5作為預(yù)測概率值的劃分閾值,大于0.5預(yù)測概率值的樣本類別為1,否則為0,最后利用table()函數(shù)得到混淆矩陣,并計算各評估指標(biāo)值。>#install.packages("DAAG")>library(DAAG)>data(anesthetic)>anes1=glm(factor(nomove)~conc,family=binomial(link='logit'),data=anesthetic)>#對模型做出預(yù)測結(jié)果>pre=predict(anes1,type='response')#得到的是樣本為1類別時的預(yù)測概率值>#以0.5作為分界點>result<-ifelse(pre>0.5,1,0)>#install.packages("DAAG")>library(DAAG)>data(anesthetic)>anes1=glm(factor(nomove)~conc,family=binomial(link='logit'),data=anesthetic)>#對模型做出預(yù)測結(jié)果>pre=predict(anes1,type='response')#得到的是樣本為1類別時的預(yù)測概率值>#以0.5作為分界點>result<-ifelse(pre>0.5,1,0)>#構(gòu)建混淆矩陣>confusion<-table(actual=anesthetic$nomove,predict=result)>confusionpredictactual0101041214>#計算各指標(biāo)(1為正樣本,0為負(fù)樣本)>(TP<-confusion[4])[1]14>(TN<-confusion[1])[1]10>(FP<-confusion[3])[1]4>(FN<-confusion[2])[1]2>(Accuracy<-(sum(TN)+sum(TP))/sum(confusion))#準(zhǔn)確率[1]0.8>(Precision<-TP/(TP+FP))#精度[1]0.7777778>(Recall<-TP/(TP+FN))#靈敏性/召回率[1]0.875>(F1<-2*TP/(2*TP+FP+FN))#F1-score[1]0.8235294>(FPR<-FP/(TN+FP))#假正率[1]0.2857143PAGE11概率預(yù)測評估方法-ROC曲線11ROC(ReceiverOperatingCharacteristic,接收者運行特征)曲線來源于信號檢測理論,它顯示了給定模型的靈敏性(Sensitivity)真正率與假正率(FalsePostiveRate)之間的比較評定。給定一個二元分類問題,通過對測試數(shù)據(jù)集可以正確識別“1”實例的比例與模型將“0”實例錯誤地識別為“1”的比例進(jìn)行分析,來進(jìn)行不同模型的準(zhǔn)確率的比較評定。真正率的增加是以假正率的增加為代價的,ROC曲線下面的面積就是比較模型準(zhǔn)確度的指標(biāo)和依據(jù)。面積(AUC)大的模型對應(yīng)的模型準(zhǔn)確度要高,也就是要擇優(yōu)應(yīng)用的模型。AUC越接近0.5,對應(yīng)的模型的準(zhǔn)確率就越低。AUC值越接近1,模型效果越好,通常情況下,當(dāng)AUC在0.8以上時,模型就基本可以接受了。紅色實線就是ROC曲線。圖中以假正率(FalsePositiveRate,F(xiàn)PR)為X軸,代表在所有正樣本中,被判斷為假正的機(jī)率,又寫1-Specificity;以真正率(TruePositiveRate,TPR)為Y軸,代表在所有正樣本中,被判斷為真正的機(jī)率,又稱為靈敏性。可見,ROC曲線的繪制還是非常容易的。只要利用預(yù)測為正的概率值對樣本進(jìn)行降序排序后,再計算出從第一個累積到最后一個樣本的真正率和假正率,就可以繪制ROC曲線了。PAGE12概率預(yù)測評估方法-ROC曲線案例12讓我們繼續(xù)利用上一小節(jié)的類別為1的預(yù)測概率值,結(jié)合樣本實際類別,以下代碼計算出從第一個累積到最后一個樣本的真正率和假正率。>#構(gòu)建結(jié)果數(shù)據(jù)集>result<-data.frame(pre_prob=pre,true_label=anesthetic$nomove)>result<-result[order(result$pre_prob,decreasing=T),]#按照預(yù)測概率值進(jìn)行降序排序>result$cumsum<-cumsum(rep(1,nrow(result)))#統(tǒng)計累計樣本數(shù)量>result$poscumsum<-cumsum(result$true_label)#統(tǒng)計累計正樣本數(shù)量>result$tpr<-round(result$poscumsum/sum(result$true_label==1),3)#計算真正率>result$fpr<-round((result$cumsum-result$poscumsum)/sum(result$true_label==0),3)#計算假正率>result$lift<-round((result$poscumsum/result$cumsum)/(sum(result$true_label==1)/nrow(result)),2)#計算提升度>head(result)pre_probtrue_labelcumsumposcumsumtprfprlift60.99941791110.06201.88130.99941791220.12501.8870.91969011330.18801.8890.91969011440.25001.88120.91969011550.31201.88150.91969011660.37501.88PAGE13概率預(yù)測評估方法-ROC曲線案例13接下來,利用result中的變量tpr和fpr,可以非常輕松地繪制出ROC曲線,運行以下代碼得到結(jié)果如圖。>#畫出roc曲線>library(ggplot2)>if(!require(ROCR))install.packages("ROCR")>ggplot(result)++geom_line(aes(x=result$fpr,y=result$tpr),color="red1",size=1.2)++geom_segment(aes(x=0,y=0,xend=1,yend=1),color="grey",lty=2,size=1.2)++annotate("text",x=0.5,y=1.05,label=paste('AUC:',round(ROCR::performance(prediction(result$pre_prob,result$true_label),'auc')@y.values[[1]],3)),+size=6,alpha=0.8)++scale_x_continuous(breaks=seq(0,1,.2))++scale_y_continuous(breaks=seq(0,1,.2))++xlab("FalsePostiveRate")++ylab("TruePostiveRate")++ggtitle(label="ROC-Chart")++theme_bw()++theme(+plot.title=element_text(colour="gray24",size=12,face="bold"),+plot.background=element_rect(fill="gray90"),+axis.title=element_text(size=10),+axis.text=element_text(colour="gray35"))PAGE14概率預(yù)測評估方法-ROCR擴(kuò)展包14其實R語言的ROCR擴(kuò)展包已經(jīng)實現(xiàn)了繪制ROC曲線功能,并且可以輸出對應(yīng)的AUC值。ROCR擴(kuò)展包通過可視化方法根據(jù)得分評估分類器的性能,其中,ROC曲線、敏感度\特異度曲線、提升圖、精度\召回率是權(quán)衡可視化中用于具體成對性能指標(biāo)的經(jīng)典方法。ROCR擴(kuò)展包是用于創(chuàng)建閾值參數(shù)化的二維性能曲線的靈活工具,對應(yīng)的兩個性能指標(biāo)可以從超過25個性能指標(biāo)中選取,并且自由組合。其中主要函數(shù)為performance(),基本表達(dá)形式如下:performance(prediction.obj,measure,x.measure="cutoff",...)PAGE15概率預(yù)測評估方法-ROCR擴(kuò)展包案例15>#利用ROCR包繪制roc曲線>library(ROCR)>pred1<-prediction(pre,anesthetic$nomove)>#設(shè)置參數(shù),橫軸為假正率fpr,縱軸為真正率tpr>perf<-performance(pred1,'tpr','fpr')>#繪制ROC曲線>plot(perf,main="利用ROCR包繪制ROC曲線")PAGE16概率預(yù)測評估方法-KS曲線16KS曲線基于Kolmogorov-Smirnov的兩樣本檢驗的思想,按預(yù)測概率從大到小的順序劃分等分位數(shù)分別統(tǒng)計正負(fù)樣本的累積函數(shù)分布,并檢驗其一致性。分布相差越大,模型效果越好;分布越接近,模型效果越差。兩條折線分別代表各分位點下的正例覆蓋率和1-負(fù)例覆蓋率,通過兩條曲線很難對模型的好壞做評估,一般會選用最大的KS值作為衡量指標(biāo)。KS的計算公式為:KS=Sensitivity-(1-Specificity)=Sensitivity+Specificity-1。對于KS值而言,也是希望越大越好,通常情況下,當(dāng)KS值大于0.2時,說明模型具有區(qū)分能力,預(yù)測效果可能達(dá)到使用要求。Sensitivity:靈敏性(真正率)Specificity:特效性(正負(fù)率)PAGE17概率預(yù)測評估方法-KS曲線案例17這里仍利用result結(jié)果集,使用ggplot2擴(kuò)展包繪制KS曲線,運行以下代碼得到結(jié)果如圖。>#畫出KS曲線>ggplot(result)++geom_line(aes((1:nrow(result))/nrow(result),result$tpr),colour="red2",size=1.2)++geom_line(aes((1:nrow(result))/nrow(result),result$fpr),colour="blue3",size=1.2)++annotate("text",x=0.5,y=1.05,label=paste("KS=",round(which.max(result$tpr-result$fpr)/nrow(result),4),+"atPop=",round(max(result$tpr-result$fpr),4)),size=6,alpha=0.8)++scale_x_continuous(breaks=seq(0,1,.2))++scale_y_continuous(breaks=seq(0,1,.2))++xlab("TotalPopulationRate")++ylab("TP/FPRate")++ggtitle(label="KS-Chart")++theme_bw()++theme(+plot.title=element_text(colour="gray24",size=12,face="bold"),+plot.background=element_rect(fill="gray90"),+axis.title=element_text(size=10),+axis.text=element_text(colour="gray35"))PAGE18概率預(yù)測評估方法-累積提升圖18
>#畫累積提升圖>ggplot(result)++geom_line(aes(x=(1:nrow(result))/nrow(result),y=result$lift),color="red3",size=1.2)++scale_x_continuous(breaks=seq(0,1,.2))++xlab("TotalPopulationRate")++ylab("Liftvalue")++ggtitle(label="LIFT-Chart")++theme_bw()++theme(+plot.title=element
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025高速公路擴(kuò)建爆破作業(yè)合同
- 員工勞動合同范
- 帶多應(yīng)用塊石購銷合同范本
- 三方貸款擔(dān)保合同書模板
- 專業(yè)滅鼠服務(wù)合同
- 上海市農(nóng)產(chǎn)品購銷合同示范文本
- 五金產(chǎn)品長期供貨合同2025
- 二手房預(yù)定合同定金協(xié)議書范本
- 個人信用擔(dān)保借款合同詳解
- 三人合作創(chuàng)業(yè)投資合同范本2025
- 電梯結(jié)構(gòu)與原理-第2版-全套課件
- IEC-62368-1-差異分享解讀
- SWITCH塞爾達(dá)傳說曠野之息-1.6金手指127項修改使用說明教程
- 2022-2023學(xué)年廣東省佛山市順德區(qū)高三(下)模擬英語試卷
- 節(jié)后復(fù)工培訓(xùn)內(nèi)容五篇
- GB/T 33322-2016橡膠增塑劑芳香基礦物油
- GA 1051-2013槍支彈藥專用保險柜
- 某水毀公路維修工程施工方案
- 家庭病房工作制度和人員職責(zé)
- 建設(shè)工程監(jiān)理合同示范文本GF-2018-0202
- 2022質(zhì)檢年終工作總結(jié)5篇
評論
0/150
提交評論