使用脊线预测Logistic回归的ROC的正确方法是什么?

时间:2017-09-16 05:13:06

标签: r glm glmnet auc

我试图从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的正确方法是什么?

0 个答案:

没有答案