本文通过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