- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 auc-roc 曲线,假设我有一个无排名分类器,例如一类 SVM,其中预测为 0 和 1,并且预测不会轻易转换为概率或分数,如果我不想绘制 AUC-ROC,而是只想计算 AUC 以使用它来查看我的模型表现如何,我还能这样做吗?它仍然会被称为或作为 AUC 尤其是有两个可以使用的阈值 (0 , 1 ) 吗?如果是的话,那就和用排名分数计算 AUC 一样好
现在假设我决定使用 SVM (0,1) 创建的标签来绘制 AUC-ROC,它看起来像下面的图片 I
它仍会被视为 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/
我有一个包含 100 个样本的数据集,每个样本都有 195 个突变,具有相应的已知临床意义(“RealClass”)和根据某些预测工具的预测值(“PredictionValues”) 为了演示,这是一
从下面的代码中,看起来使用 keras 和 scikit 评估 roc 实际上有所不同。有人知道解释吗? import tensorflow as tf from keras.layers impor
我很难理解 multiclass.roc 参数应该是什么样子。这是我的数据快照: > head(testing.logist$cut.rank) [1] 3 3 3 3 1 3 Levels: 1 2
我已经使用 ROCR 包绘制了 2 类问题的 ROC 曲线。根据我的理解,至少对于较小的数据集,曲线应该看起来像阶跃变化图。我的输入实际上很小,但我得到的曲线基本上看起来是直线。是因为 PROC 适合
我正在尝试使用 rpart 在插入符号中最大限度地提高模型选择的灵敏度。为此,我尝试复制此处给出的方法(向下滚动到使用用户定义函数 FourStat 的示例)caret's github page #
我正在尝试使用插入符包生成随机森林模型,使用 ROC 曲线下的面积作为训练指标,但我收到以下警告: Warning message: In train.default(x = TrainData, y
我在 R 平台中使用 randomForest 包进行分类任务。 rf_object<-randomForest(data_matrix, label_factor, cutoff=c(k,1-k))
我正在构建两个不同的分类器来预测二进制结果。然后我想通过使用 ROC 曲线及其下面积 (AUC) 来比较两个模型的结果。 我将数据集分为训练集和测试集。在训练集上,我执行一种形式的交叉验证。从交叉验证
我最近在为我的项目使用 sklearn 时遇到困难。我想构建一个分类器并将我的数据分为六组。总样本量为 88 然后我将数据分成 train(66) 和 test(22)我完全按照 sklearn 文档
我正在进行不同的文本分类实验。现在我需要计算每个任务的 AUC-ROC。对于二进制分类,我已经使用以下代码使其工作: scaler = StandardScaler(with_mean=False)
我正在尝试应用 sklearn 的想法 ROC extension to multiclass到我的数据集。我的每类 ROC 曲线看起来都找到了一条直线,取消显示曲线波动的 sklearn 示例。 我
这是一个代表 library(caret) library(dplyr) set.seed(88, sample.kind = "Rounding") mtcars % mutate(am = a
我有以下概念问题,我无法理解。 以下是调查数据示例,其中我有一个时间列,指示某人需要多长时间才能回答某个问题。 现在,我感兴趣的是清洁量将如何根据此阈值发生变化,即如果我增加阈值会发生什么,如果我降低
如何为使用视频的对象检测应用绘制每个窗口的误报率与未命中率(或误报概率)和 ROC(接收器操作曲线)的图表?如何确定误报和命中的数量?一个例子是很有用。 最佳答案 它很简单。将所有真正 (H0) 值存
我正在尝试绘制随机森林分类的 ROC 曲线。绘图有效,但我认为我绘制了错误的数据,因为生成的绘图只有一个点(准确性)。 这是我使用的代码: set.seed(55) data.controls <
我有如下两个模型: library(mlbench) data(Sonar) library(caret) set.seed(998) my_data <- Sonar fitControl <-
我很难将 ROC 的示例命令转换为我的数据集。这是用于 pROC 包 这是使用数据(aSAH)的例子 roc(aSAH$outcome, aSAH$s100b) roc(outcome ~ s100b
我试图在多类 knn 模型和数据集上运行一些 ROC 分析 到目前为止,我有 kNN 模型的这段代码。它运作良好。X_train_new是一个包含 131 个数值变量(列)和 7210 个观测值的数据
是否可以仅通过查看其 ROC 曲线来了解分类器是否过度拟合?我看到如果它的 AUC 太高(例如 98%)可能会过度拟合,但这也可能意味着分类器非常好。有没有办法区分这两种情况? 最佳答案 简短的回答:
在运行逻辑回归后,我使用以下代码绘制 ROC 曲线。 fit1 <- glm(formula=GB160M3~Behvscore, data=eflscr,family="binomial", na.
我是一名优秀的程序员,十分优秀!