ROC曲线比较R中的逻辑回归和神经网络预测

时间:2020-01-05 00:50:21

标签: r neural-network binary logistic-regression roc

我正在尝试使用逻辑回归模型和神经网络比较数据集的预测准确性。在查看两种方法的混淆矩阵时,与逻辑回归模型相比,ANN模型提供了更好的输出。但是,在绘制这两种方法的ROC曲线时,似乎逻辑回归模型更好。我想知道我的ROC曲线代码是否有问题。

对于上下文,我正在解释我的程序。首先,我将数据集分为训练和测试数据。

data = read.csv("heart.csv", header=TRUE)

set.seed(300)
index = sample(seq_len(nrow(data)), size = samplesize) # For logistic 
train <- data[index,]
test <- data[-index,]

normalize <- function(x) {
  return ((x - min(x)) / (max(x) - min(x)))
}
scaled <- as.data.frame(lapply(data, normalize))
index = sample(seq_len(nrow(scaled)), size = samplesize) # For ANN
trainset <- scaled[index, ] 
testset <- scaled[-index, ]

响应变量是“目标”,因此我适合以下GLM:

glm.fit <- glm(target ~ ., data=train, family=binomial(link = "logit"),control = list(maxit = 50))

对于ANN,我使用R的Neuronet软件包并执行以下操作:

library(neuralnet)
nn <- neuralnet(target ~ ., data=trainset, hidden=c(3,2), act.fct = "logistic", err.fct = "sse", linear.output=FALSE, threshold=0.01)

对于我的ROC曲线,我执行了以下操作:

对于ANN:

prob = compute(nn, testset[, -ncol(testset)] )
prob.result <- prob$net.result

detach(package:neuralnet,unload = T)

library(ROCR)
nn.pred = prediction(prob.result, testset$target)
pref <- performance(nn.pred, "tpr", "fpr")
plot(pref)

对于逻辑回归:

prob=predict(glm.fit,type=c("response"))    

library(ROCR)

pred <- prediction(prob, test$target)    
perf <- performance(pred, measure = "tpr", x.measure = "fpr")     
plot(perf, col=rainbow(7), main="ROC curve Admissions", xlab="Specificity", 
     ylab="Sensitivity")   

我只想得到一些指导,以理解为什么当混淆矩阵表明不是这样时,为什么这些图似乎表明逻辑回归模型更好,并理解我做错了什么。

谢谢您的任何投入。

0 个答案:

没有答案