提高 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")
我正在尝试将逻辑回归与插入符号结合使用。 “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")