我试图从Logistic回归中得到AUC值,用于2类分类问题。这个数据的响应是因子1(可怕)和2(伟大)。
模型构建如下:
fit.ridge = glmnet(xmat, as.numeric(train$response), alpha = 0, family="binomial")
在预测步骤中,我找到了两种使用包pROC
实现ROC的方法。但是,这两种方式会产生不同的结果:
xmat = model.matrix(response ~ ., data = train)[, -1]
注意:bestlam.ridge =来自cv.glmnet的最佳lambda值
方式1)
pred = predict(fit.ridge, s = bestlam.ridge, newx = xmat, type="response")
auc = roc(as.numeric(train$response), as.numeric(pred))$auc
方式2)
pred = predict(fit.ridge, s = bestlam.ridge, newx = xmat, type="response")
print(range(pred))
pred_bool = rep('bad', length(pred))
pred_bool[pred > 0.5] = 'good'
table(train$quality, pred_bool)
roc(as.numeric(train$quality), as.numeric(as.factor(pred_bool)))$auc
方式1提供的AUC比方式2高出约0.1(并且当我使用cv.glmnet
时具有与type.measure="auc"
中相同的AUC值。)
但是Way 2看起来是解决分类问题的有效方法。
请告诉我这种情况下AUC的正确方法是什么?