Skip to main content
 首页 » 人工智能

如何度量逻辑回归模型表现

2022年07月19日144langtianya

本文通过R实现逻辑回归模型示例,并利用AUC指标衡量模型、画出ROC曲线。

逻辑回归用于拟合二元分类响应变量的统计模型。衡量逻辑回归模型拟合数据集情况,通常使用两个指标:

  • 敏感性

模型预测阳性结果并且实际也是阳性的概率,也称为真阳性率。

  • 特异性

模型预测阴性结果并且实际也是隐形的概率,也称为真阴性率。可以通过ROC曲线对这两个指标进行可视化,它代表“受试者工作特征”曲线,x轴为敏感性,y轴为(1-特异性)。

通过计算AUC(area under curve)可以量化逻辑回归模型对分类数据的效果,AUC越接近1,模型越好。下面通过示例说明其计算过程。

示例

加载数据

我们使用ISLR包种Default数据集,它包括不同个体贷款是否违约信息。

 
data <- ISLR::Default 
head(data) 
 
#   default student   balance    income 
# 1      No      No  729.5265 44361.625 
# 2      No     Yes  817.1804 12106.135 
# 3      No      No 1073.5492 31767.139 
# 4      No      No  529.2506 35704.494 
# 5      No      No  785.6559 38463.496 
# 6      No     Yes  919.5885  7491.559 

拟合逻辑回归模型

下面拟合逻辑回归模型,预测个体违约的概率:

set.seed(100) 
 
# 定义样本比例 
sample <- sample(c(TRUE, FALSE), nrow(data), replace= TRUE, prob=c(0.7, 0.3)) 
 
# 生成训练集和测试集 
sample(c(TRUE, FALSE), 10, replace= TRUE, prob=c(0.7, 0.3)) 
train <- data[sample, ] 
test  <- data[!sample, ] 
 
# 拟合逻辑回归模型 
model <- glm(default~student+balance+income, family = "binomial", data = train) 

计算模型AUC

我们使用pROC包种的auc()函数计算模型AUC,语法如下:

auc(response, predicted)

实现代码如下:

# 预测测试集中个体违约概率 
library(pROC) 
predicted <- predict(model, test, type = "response") 
 
# 计算AUC 
auc(test$default, predicted) 
# Area under the curve: 0.9405 
 
# 计算AUC并画ROC图 
test_roc = roc(test$default, predicted, plot=TRUE, print.auc = TRUE) 
 
# as.numeric(test_roc$auc) 

在这里插入图片描述

我们看到 Area under the curve: 0.9405,比较接近1,表明模型预测能力非常好。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/124282922