提高 R 中 Caret 包的特异性

Increasing specificity in Caret package in R

我正在尝试将逻辑回归与插入符号结合使用。 “ISLR2”包中的数据框是“默认”。 由于默认概率阈值为 0.5,我的特异性较低 (27%)。 更改此默认概率阈值的方法是什么,比如更改为 0.2 或 0.7。 使用的代码如下:

set.seed(7702)
# test & train partition
index <- sample(1:nrow(Default), 0.80*nrow(Default))
train_default <- Default[index, ]
test_default <- Default[-index, ]

# Creating controling parameters
controlValues <- trainControl(method = "cv",
                              number = 10,
                              savePredictions = "all",
                              classProbs = TRUE)
# building the model
model_default <- train(default ~ income + balance,
                       data = train_default,
                       method = "glm",
                       family = binomial,
                       trControl = controlValues)

# Model  prediction & confusion Matrix
model_pred <- predict(model_default, 
                      newdata = test_default)
confusionMatrix(model_pred, test_default$default)

混淆矩阵和统计数据

      Reference

预测否是 没有 1937 41 是 7 15

           Accuracy : 0.976           
             95% CI : (0.9683, 0.9823)
No Information Rate : 0.972           
P-Value [Acc > NIR] : 0.1543          
                                      
              Kappa : 0.3747          
                                      

Mcnemar 检验 P 值:1.906e-06

        Sensitivity : 0.9964          
        Specificity : 0.2679 

predict 函数内部您需要指定 de type='prob' 参数。这允许您获得所有概率并选择您喜欢的阈值。

model_pred <- predict(model_default, newdata = test_default, type = "prob")

然后,您可以手动进行分类。例如:

model_pred_class <- ifelse(model_pred < 0.2, "No", "Yes")