大数跨境
0
0

R语言 | 常见模型评价指标(一) 分类模型指标

R语言 | 常见模型评价指标(一) 分类模型指标 谁说菜鸟不会数据分析
2021-07-11
1

小伙伴们大家好!我是菜鸟君。有空给大家唠唠R语言里的常见模型评价指标。主要想着介绍两大类模型的指标,分类模型、回归模型。今天先说分类的指标,全文没有什么特别烧脑的复杂公式,大家放心看嗷!


首先,放上一个表格,也就是混淆矩阵,这样就能解释明白很多指标了。


预测0
预测1
实际0 84  TN
9   FP
实际1
15  FN
90 TP

在这个表格中,有四种情况。例如,有个模型是用来预测患者肺部是否有结节,标签 1:有结节,标签 0:无结节。

(1) 真阳性(True Positive,TP):预测有结节,且实际有结节的有90位患者;正确肯定的匹配数目;
(2) 假阳性(False Positive,FP):预测有结节,但实际无结节的有9位患者;这些是误报,给出的匹配是不正确的;
(3) 真阴性(True Negative,TN):预测无结节,且实际无结节的有84位患者;这是正确拒绝的非匹配数目;
(4) 假阴性(False Negative,FN):预测无结节,但实际有结节的有15位患者;这是漏报,没有识别出来。


了解这四种情况以后,我们接下来计算分类模型的指标:


1.准确率

所有预测正确的样本,除以样本总数。

Accuracy = (TP+TN)/(TN+FN+FP+TP)  =(84+90)/(84+90+15+9)


2. 召回率(recall)又叫 敏感度(sensitivity)、真阳性率(TRP)

实际上标签为1的样本中,被准确预测为1的比例。

R=TP/(TP+FN) = 90/(90+15)


3.精确率 (precision)又叫 正确率

预测为1的样本中,实际上标签为1的样本占多少比例。

P=TP/(TP+FP) = 90/(90+9)


4.特异度(Specificity) 又叫 真阴性率(TNR)

实际上标签为0的样本中,被准确预测为0的比例。

Specificity = TN/(TN+FP) = 84/(84+9)


5.ROC曲线

接收者操作特征曲线(receiver operating characteristic curve),是反映敏感性和特异性连续变量的综合指标,线上每个点对应一个阈值。阈值越小,越来越多的样本被划分为标签是1。阈值越大,就越严格,越来越多的样本被判断为0。

ROC曲线中:

  • 横坐标:1-Specificity,伪正类率(False positive rate, FPR),预测为正但实际为负的样本占所有负例样本 的比例;

  • 纵坐标:Sensitivity,真正类率(True positive rate, TPR),预测为正且实际为正的样本占所有正例样本 的比例。


6. AUC

AUC (Area Under Curve) 是ROC曲线下的面积,显然这个面积的数值不会大于1。由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围一般在0.5和1之间。


最后,奉上R语言代码,包括以上的常见指标。衡量自己的分类模型效果时,可以直接套用。

install.packages('caret'#没安装caret包的小伙伴先安一下library(caret)#pre: 模型预测结果#label: 样本实际标签result <- caret::confusionMatrix(as.factor(pre),as.factor(label))result #混淆矩阵以及各项指标

#ROC曲线install.packages('ggplot2')install.packages('ROCR')library(ggplot2)library(ROCR) data(ROCR.simple) #以这个数据为例pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)  perf <- performance(pred,"tpr","fpr") perfx <- unlist(perf@x.values)y <- unlist(perf@y.values)plotdata <- data.frame(x,y) names(plotdata) <- c("x", "y")
g <- ggplot(plotdata) + geom_path(aes(x = x, y = y, colour = x), size=1) + labs(x = "False positive rate", y = "True positive rate", title ="ROC Curves") + scale_colour_gradient(name = 'False positive rate', low = 'blue', high = 'red') + theme(plot.title = element_text(face = 'bold',size=15))

这就是今天想跟大家分享的R语言常见分类模型指标。觉得有帮助的小伙伴点个右下角“在看”哦!每天进步一点点,一起加油!

【声明】内容源于网络
0
0
谁说菜鸟不会数据分析
以大数据分析为驱动,spss/R/python/数据分析交流技术分享,实用教程干货,敬请期待,B站UP主:谁说菜鸟不会数据分析 有更多在线实操视频。
内容 498
粉丝 0
谁说菜鸟不会数据分析 以大数据分析为驱动,spss/R/python/数据分析交流技术分享,实用教程干货,敬请期待,B站UP主:谁说菜鸟不会数据分析 有更多在线实操视频。
总阅读104
粉丝0
内容498