我编写了一个分类器(高斯混合模型)来对五个人类行为进行分类。对于每个观察,分类器计算出属于一个聚类的后验概率。

我想评估使用阈值参数化的系统的性能,该阈值的范围是0到100。对于每个阈值,对于每个观察,如果属于一个集群的概率大于阈值,我将接受分类器的结果否则我将其丢弃。

对于每个阈值,我都会计算出真阳性,真阴性,假阳性,假阴性的数量。

比我计算两个函数:敏感性和特异性

sensitivity = TP/(TP+FN);

specificity=TN/(TN+FP);

在Matlab中:
plot(1-specificity,sensitivity);

具有ROC曲线。但是结果却不是我所期望的。

这是丢弃,错误,纠正,敏感性和特异性的功能图,它改变了一个 Action 的阈值。

这是一个 Action 的ROC曲线图

这是相同 Action 的ROC曲线的茎

我错了,但我不知道在哪里。也许我做错了FP,FN,TP,TN的计算,尤其是当分类器的结果小于阈值时,因此我将其丢弃。丢弃时我必须增加什么?

最佳答案

背景

我之所以这样回答,是因为我需要遍历所有内容,而这样的问题是一个很好的借口。谢谢您的好机会。

我使用内置的费舍尔虹膜数据中的数据:
http://archive.ics.uci.edu/ml/datasets/Iris

我还使用了有关分类的Mathworks教程中的代码段,并使用了plotroc

  • http://www.mathworks.com/products/demos/statistics/classdemo.html
  • http://www.mathworks.com/help/nnet/ref/plotroc.html?searchHighlight=plotroc

  • 问题描述

    在域内对“setosa”进行分类的边界比较清晰,但是“versicoloir”与“virginica”存在重叠。这是一个二维图,其他一些信息已被丢弃以生成它。在这种情况下,分类边界中的歧义是有用的。
    %load data
    load fisheriris
    
    %show raw data
    figure(1); clf
    gscatter(meas(:,1), meas(:,2), species,'rgb','osd');
    xlabel('Sepal length');
    ylabel('Sepal width');
    axis equal
    axis tight
    title('Raw Data')
    

    分析

    假设我们要确定定义“virginica”与“non-virginica”的线性分类器的界限。我们可以在其他类(class)中查看“自我与非自我”,但是他们会有自己的

    因此,现在我们进行一些线性判别并为它们绘制ROC:
    %load data
    load fisheriris
    load iris_dataset
    
    irisInputs=meas(:,1:2)';
    irisTargets=irisTargets(3,:);
    
    ldaClass1 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'linear')';
    ldaClass2 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'diaglinear')';
    ldaClass3 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'quadratic')';
    ldaClass4 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'diagquadratic')';
    ldaClass5 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'mahalanobis')';
    
    myinput=repmat(irisTargets,5,1);
    myoutput=[ldaClass1;ldaClass2;ldaClass3;ldaClass4;ldaClass5];
    whos
    plotroc(myinput,myoutput)
    

    尽管删除了对角线的重复副本,但结果显示如下:

    您可以在代码中注意到,我堆叠了“myinput”和“myoutput”,并将它们作为输入输入到“plotroc”函数中。您应该将分类器的结果作为目标和实际值,并且可以获得类似的结果。这会将分类器的实际输出与目标值的理想输出进行比较。这些是对plotroc的输入。

    因此,这将为您提供“内置” ROC,这对于快速工作很有用,但并不能使您详细了解每一步。

    此时您可以提出的问题包括:
  • 哪个分类器是最好的?在这种情况下,我如何确定最好的是什么?
  • 什么是分类器的凸包?是否有一些分类器的混合物比任何纯净方法都提供更多信息?装袋也许?
  • 10-05 21:15