Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph ROC图构造_Graph_Svm - Fatal编程技术网

Graph ROC图构造

Graph ROC图构造,graph,svm,Graph,Svm,我有两个严重不平衡的数据集,分别标记为阳性和阴性,并且我能够生成一个混淆矩阵,该矩阵产生约95%的真阳性率(以及遗传上的5%假阴性率)和约99.5%的真阴性率(0.5%假阳性率) 我试图构建ROC图的问题是,x轴的范围不在0到1之间,间隔为0.1。相反,鉴于我的假阳性率非常低,它的范围从0到0.04左右 关于为什么会发生这种情况,有什么见解吗 感谢在ROC图中,两个轴是假阳性率(F)和真阳性率(T)。T是给定正数据项,算法将其分类为正的概率。F是给定负数据项时,算法错误地将其分类为正的概率。轴始

我有两个严重不平衡的数据集,分别标记为阳性和阴性,并且我能够生成一个混淆矩阵,该矩阵产生约95%的真阳性率(以及遗传上的5%假阴性率)和约99.5%的真阴性率(0.5%假阳性率)

我试图构建ROC图的问题是,x轴的范围不在0到1之间,间隔为0.1。相反,鉴于我的假阳性率非常低,它的范围从0到0.04左右

关于为什么会发生这种情况,有什么见解吗


感谢

在ROC图中,两个轴是假阳性率(F)和真阳性率(T)。T是给定正数据项,算法将其分类为正的概率。F是给定负数据项时,算法错误地将其分类为正的概率。轴始终在0到1之间,如果您的算法不是参数化的,则应在ROC图上以一个点(或两个数据集的两个点)而不是曲线结束。如果算法是参数化的,则会得到一条曲线,然后该曲线由不同的参数值生成


我已经弄明白了。我使用Platt算法提取正分类的概率,并对数据集进行排序,首先是最高概率。我遍历了数据集,任何正示例(实正,未分类为正)都会增加真正计数,而任何负示例(实负,未分类为负)都会增加假正计数

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

希望这有帮助。我花了好几天的时间才弄明白一件如此琐碎的事情,因为网络上缺少信息(或者只是我对支持向量机缺乏了解)。这尤其针对那些在OpenCV包中使用CvSVM的人。您可能知道,CvSVM不返回概率值。相反,它返回一个基于距离函数的值。您不需要使用Platt的算法来基于概率提取ROC曲线,相反,您可以使用距离值本身。例如,从10开始计算距离,然后慢慢减小距离,直到覆盖了所有数据集。我发现用概率来形象化更好,所以每个人都有自己的想法


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

我的问题是我使用的是支持向量机,它不是概率模型。它只是在正负值之间进行分类,这就是为什么我只得到一个点的原因。此外,OpenCV中的SVM不返回分类概率,只返回距离函数值。我试图用这个值来确定一个概率,到目前为止没有运气。