【问题标题】:Plotting Multiple ROC curves, or an average one from multi class labels (multinomial regression)绘制多条 ROC 曲线,或多类标签的平均曲线(多项回归)
【发布时间】:2014-02-17 21:45:16
【问题描述】:

我有一个包含多个离散标签的数据集,比如 4、5、6。在此我运行 ExtraTreesClassifier(我还将在相同的数据上运行 Multinomial logit afterword,这只是一个简短的示例),如下所示。 :

from sklearn.ensemble import ExtraTreesClassifier
from sklearn.metrics import roc_curve, auc

clf = ExtraTreesClassifier(n_estimators=200,random_state=0,criterion='gini',bootstrap=True,oob_score=1,compute_importances=True)
# Also tried entropy for the information gain
clf.fit(x_train, y_train)
#y_test is test data and y_predict is trained using ExtraTreesClassifier
y_predicted=clf.predict(x_test)

fpr, tpr, thresholds = roc_curve(y_test, y_predicted,pos_label=4) # recall my labels are 4,5 and 6
roc_auc = auc(fpr, tpr)
print("Area under the ROC curve : %f" % roc_auc)

问题是 - 是否有类似平均 ROC 曲线的东西 - 基本上我可以为每个标签值分别添加所有 tpr 和 fpr,然后采取手段(顺便说一下,这是否有意义?) - 然后调用

# Would this be statistically correct, and would mean something worth interpreting?
roc_auc_avearge = auc(fpr_average, tpr_average)
print("Area under the ROC curve : %f" % roc_auc)

我假设,我会得到类似于这个后记的东西 - 但在这种情况下我如何解释阈值? How to plot a ROC curve for a knn model

因此,还请提及在这种情况下我是否可以/应该获得单独的阈值,以及为什么一种方法(统计上)优于另一种方法?

到目前为止我尝试过的(除了平均):

在更改 pos_label = 4 ,然后是 5 & 6 并绘制 roc 曲线时,我发现性能非常差,甚至低于 y=x(完全随机且 tpr=fpr 情况)我应该如何解决这个问题?

【问题讨论】:

标签: python-2.7 scikit-learn roc auc


【解决方案1】:

Hand & Till in 2001 提出了 ROC 曲线平均。他们基本上计算所有比较对(4 vs. 5、4 vs. 6 和 5 vs. 6)的 ROC 曲线并平均结果。

当您使用pos_label=4 计算 ROC 曲线时,您隐含地说其他标签是负数(5 和 6)。请注意,这与 Hand & Till 的建议略有不同。

一些注意事项:

  • 您应该确保您的分类器的训练方式对您的 ROC 分析有意义。如果您在 roc_curve 中说 pos_label=5,并且您的分类器经过训练可以将 5 识别为介于 4 和 6 之间的中间值,那么您肯定不会在这里得到任何有用的信息
  • 如果您的 AUC
  • 一般而言,ROC 分析对于二元分类很有用。对于多类问题是否有意义取决于具体情况,对您来说可能并非如此。

【讨论】:

  • 感谢您的解释和资源 - 将调查它。尽管存在“平均”,但令人欣慰的是。 +1。我发现令人费解的另一件事是我的 clf.oob_score_ (袋外得分和预测得分 clf.score(x_test,y_test)[基本上计算每个“标签”的正确预测分数] 都在 74% 的范围内,但 AUC平均约为 53% - 尽管 AUC 和这些指标不相关,但希望 AUC 更好 - 有什么迹象可以做得更好?
猜你喜欢
  • 2019-02-27
  • 2021-03-03
  • 2018-12-24
  • 2016-06-10
  • 2022-01-13
  • 1970-01-01
  • 2015-02-19
  • 2018-11-29
  • 2022-01-22
相关资源
最近更新 更多