在數據分析中經常會對不同的模型做判斷
一、混淆矩陣法
作用:一種比較簡單的模型驗證方法,可算出不同模型的預測精度
將模型的預測值與實際值組合成一個矩陣,正例一般是我們要預測的目標。真正例就是預測為正例且實際也是正例(預測正確);假反例是實際是正例但模型錯誤預測成反例(即預測錯誤);假正例是預測是模型預測是正例,但實際是反例;真反例是預測是反例,實際也是反例。
查准率=真正例/假正例+真正例(真正率占我們預測是正例的比例)
查全率=真正例/真正例+假反例(真正率占我們實際是正例的比例)
混淆矩陣運用:
以下以回歸模型為例,探索混淆矩陣的使用
# 設定五折交叉驗證規則 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