0

我有两个严重不平衡的数据集,分别标记为正面和负面,我能够生成一个混淆矩阵,该矩阵产生约 95% 的真阳性率(并且继承 5% 的假阴性率)和约 99.5% 的真阴性率( 0.5% 的误报率)。

我尝试构建 ROC 图的问题是 x 轴的范围不是从 0 到 1,间隔为 0.1。相反,考虑到我的误报率非常低,它的范围从 0 到 0.04 左右。

关于为什么会发生这种情况的任何见解?

谢谢

4

2 回答 2

0

在 ROC 图中,两个轴是假阳性率 (F) 和真阳性率 (T)。T 是给定正数据项的概率,您的算法将其分类为正数据项。F 是给定负数数据项,您的算法错误地将其分类为正数的概率。轴总是从 0 到 1,如果你的算法不是参数化的,你应该在 ROC 图上得到一个点(或者两个数据集的两个点)而不是曲线。如果你的算法是参数化的,你会得到一条曲线,然后曲线是由不同的参数值引起的。

http://www2.cs.uregina.ca/~dbd/cs831/notes/ROC/ROC.html

于 2012-05-12T06:33:05.900 回答
0

我已经想通了。我使用 Platt 算法提取正分类的概率并对数据集进行排序,概率最高的优先。我遍历数据集,任何正例(真正的正例,未分类为正例)都会增加真例计数,而任何负例(真正的负例,未分类为负例)都会增加误报计数。

将其视为 SVM 上的支持向量,它将两个类(+ve 和 -ve)从 svm 的一侧逐渐移动到另一侧。在这里,我想象二维平面上的点。随着支持向量的移动,它会发现示例。任何被标记为阳性的例子都是真阳性,任何阴性都是假阳性。

希望这可以帮助。由于网络上缺乏信息(或者只是我对 SVM 缺乏了解),我花了几天的时间才弄清楚这么琐碎的事情。这特别针对那些在 OpenCV 包中使用 CvSVM 的人。您可能知道,CvSVM 不返回概率值。相反,它会根据距离函数返回一个值。您无需使用 Platt 算法根据概率提取 ROC 曲线,而是可以使用距离值本身。例如,您从 10 开始距离,然后慢慢递减,直到覆盖了所有数据集。我发现使用概率更好地可视化,所以对每个人来说都是如此。

请注意我的英语,因为它不是我的第一语言

于 2012-05-12T21:52:47.683 回答