gpt4 book ai didi

python - 用于无排名分类器(例如 OSVM)的 AUC-ROC

转载 作者:行者123 更新时间:2023-11-30 09:47:53 25 4
gpt4 key购买 nike

我目前正在使用 auc-roc 曲线,假设我有一个无排名分类器,例如一类 SVM,其中预测为 0 和 1,并且预测不会轻易转换为概率或分数,如果我不想绘制 AUC-ROC,而是只想计算 AUC 以使用它来查看我的模型表现如何,我还能这样做吗?它仍然会被称为或作为 AUC 尤其是有两个可以使用的阈值 (0 , 1 ) 吗?如果是的话,那就和用排名分数计算 AUC 一样好

现在假设我决定使用 SVM (0,1) 创建的标签来绘制 AUC-ROC,它看起来像下面的图片 I enter image description here

它仍会被视为 AUC 曲线吗?

非常感谢您的帮助和支持

注意:我已阅读以下问题,但没有找到答案: https://www.researchgate.net/post/How_can_I_plot_determine_ROC_AUC_for_SVM https://stats.stackexchange.com/questions/37795/roc-curve-for-discrete-classifiers-like-svm-why-do-we-still-call-it-a-curve

最佳答案

标准 ROC 曲线需要改变分类器的概率或分数阈值,并为每个不同的阈值获取有序对(真阳性率、假阳性率)的相应图表。

由于 One-Class SVM 的定义方式是它不会生成概率结果或分数作为其输出的一部分(这与标准 SVM 分类器特别不同),这意味着 ROC 曲线不适用,除非您如下所述创建您自己的乐谱版本。

此外,单类 SVM 的训练特别严重不平衡,因为训练数据只是一组“正”示例,例如来自相关分布的观察结果。无论如何,ROC 曲线都会因大的类别不平衡而受到严重影响,因此 ROC 曲线可能会产生误导,因为少数异常值的分类分数将比核心的一堆非异常值的分数重要得多。观察到的分布的最高密度区域。因此,即使您创建自己的分数,也建议避免此类模型的 ROC。

您选择精确率与召回率作为更好的指标是正确的,但在问题中显示的图中,您仍然将图叠加在沿轴的真阳性率和假阳性率之上,而 AUC -pr(精确召回率 AUC 分数)看起来只是用 0 填充误报率的单个点(例如,它纯粹是绘图代码中的错误)。

为了获得实际的精确召回曲线,您需要某种方法将分数与异常值决策相关联。 One suggestion就是在训练后使用拟合的 OneClassSVM 对象的 decision_function 属性。

如果您计算所有输入值 x 上的 decision_function(x) 的最大值,请将此称为 MAX,然后是一种关联Score是将某些数据y的预测得分视为score = MAX - Decision_function(y)

这假设您的标签设置方式使得 decision_function(x) 的较大值意味着 x 不是异常值,所以它确实具有用于训练的正类的标签。如果您使用反向标签设置问题(也就是说,无论您将 OneClassSVM 设置为预测异常值的“1”还是内部值的“1”,即使训练数据仅包含以下内容,您也可以取倒数或使用其他转换:一个类)。

然后,在 documentation of average_precision_score您可以看到输入y_score可以是非阈值度量,例如来自decision_function。您也可以对此进行修改,也许可以获取该分数的log等,如果您有任何相关领域知识让您有理由考虑尝试它。

获得这些手动创建的分数后,您可以将它们传递给任何需要改变阈值的精度/召回函数。它并不完美,但至少让您了解决策边界用于分类的效果如何。

关于python - 用于无排名分类器(例如 OSVM)的 AUC-ROC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com