模型驗證方法——R語言


在數據分析中經常會對不同的模型做判斷

一、混淆矩陣法

作用:一種比較簡單的模型驗證方法,可算出不同模型的預測精度

將模型的預測值與實際值組合成一個矩陣,正例一般是我們要預測的目標。真正例就是預測為正例且實際也是正例(預測正確);假反例是實際是正例但模型錯誤預測成反例(即預測錯誤);假正例是預測是模型預測是正例,但實際是反例;真反例是預測是反例,實際也是反例。

查准率=真正例/假正例+真正例(真正率占我們預測是正例的比例)

查全率=真正例/真正例+假反例(真正率占我們實際是正例的比例)

混淆矩陣運用:

以下以回歸模型為例,探索混淆矩陣的使用

# 設定五折交叉驗證規則
train_control<-trainControl(method = 'cv',number = 5)
# 對數據集分成
set.seed(1234)# 在任何隨機事件之前都需要設定隨機種子
index<-createDataPartition(good_data$left,p=.7,list = F)
head(index)
traindata<-good_data[index, ]
testdata<-good_data[-index, ]

# 建立回歸樹模型
rpart_model1<-train(left ~ .,data=traindata,
                   trControl=train_control,method='rpart') 
# 將測試集導入回歸樹模型,求得測試結果
pred_rpart<-predict(rpart_model1,testdata[-7])
# 利用混淆矩陣對回歸樹模型進行評估
con_rpart<-table(pred_rpart,testdata$left) # 混淆矩陣只用測試集,與訓練集無關
con_rpart # 求得混淆矩陣結果

pred_rpart   0   1
0           2246  72
1           51     528

對應查准率為:528/51+528=91.19%

 

二、roc曲線

模型驗證,根據學習器的結果對樣例排序,逐個把樣本作為正例進行預測,每次計算出兩個重要的值,分別以它們為橫縱坐標作圖,即得到ROC曲線。

###################ROC曲線 #################
# roc函數的值必須是數值型,而pred_rpart為數值型
pred_rpart<-as.numeric(as.character(pred_rpart))# 因子型需要轉字符型然后轉數值

roc_rpart<-roc(testdata$left,pred_rpart)# 后續繪圖需要用的信息
# 確定ROC曲線的橫縱軸
Specificity<-roc_rpart$specificities # 真反利率 作為X軸
Sensitivity<-roc_rpart$sensitivities # 查全率 作為Y軸
# 開始繪制ROC曲線圖
ROC_line<-ggplot(NULL,aes(x=1-Specificity,y=Sensitivity))+
  geom_line()+
  geom_abline()+
  annotate('text',x=.3,y=.6,label = paste('AUC=',round(roc_rpart$auc, 3)))+
  theme_bw()
ROC_line

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM