模型验证⽅法——R语⾔
在数据分析中经常会对不同的模型做判断
⼀、混淆矩阵法
作⽤:⼀种⽐较简单的模型验证⽅法,可算出不同模型的预测精度
将模型的预测值与实际值组合成⼀个矩阵,正例⼀般是我们要预测的⽬标。真正例就是预测为正例且实际也是正例(预测正确);假反例是实际是正例但模型错误预测成反例(即预测错误);假正例是预测是模型预测是正例,但实际是反例;真反例是预测是反例,实际也是反例。
查准率=真正例/假正例+真正例(真正率占我们预测是正例的⽐例)
查全率=真正例/真正例+假反例(真正率占我们实际是正例的⽐例)
混淆矩阵运⽤:
以下以回归模型为例,探索混淆矩阵的使⽤
# 设定五折交叉验证规则
train_control<-trainControl(method = 'cv',number = 5)
# 对数据集分成
t.ed(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
铁路工厂2
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$nsitivities # 查全率作为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