我是使用ROC曲线进行分析的新手,我还在学习如何在R中进行数据分析。我正在使用UCI存储库中的葡萄酒质量数据进行二元分类。
我在R中使用pROC
包来计算AUC并绘制ROC曲线。
我得到的SVM ROC曲线只有3个三点。当我查看摘要时,它说只使用了3个阈值。 对于SVM分析,我使用以下代码:
svm_fit = svm(wine2.lowHigh ~ fixed.acidity+ volatile.acidity+ citric.acid + residual.sugar +
chlorides + free.sulfur.dioxide +total.sulfur.dioxide+density + pH +
sulphates + alcohol,data=training,kernel="linear", scale=FALSE,probability = TRUE)
probs_svm = predict(svm_fit,testing)
my_svm <-roc(testing$wine2.lowHigh~as.numeric(probs_svm))
plot(my_svm)
根据摘要具有51个阈值的Logistic回归曲线。 我用于逻辑回归的代码如下:
lr_fit = glm(wine2.lowHigh ~ fixed.acidity+ volatile.acidity+ citric.acid + residual.sugar +
chlorides + free.sulfur.dioxide +total.sulfur.dioxide+density + pH +
sulphates + alcohol,data=training,family = binomial)
probs_lr = predict(lr_fit,testing[1:11],type = "response")
my_lr <-roc(testing$wine2.lowHigh~probs_lr)
plot(my_lr)
当我将SVM ROC曲线与Logistic回归曲线进行比较时,曲线看起来不同。
我的问题是为什么曲线看起来不同。 SVM曲线平滑,Logistic回归曲线呈锯齿状。我还使用了unique()
,发现SVM分析返回了一些相同的概率,而Logistic回归有不同的概率,这可能是什么原因?
数据集来自https://archive.ics.uci.edu/ml/datasets/Wine+Quality。这是白葡萄酒质量数据集。根据测量的尺度,将响应分为高和低二进制分类。