Roc曲线有多种算法,但先普及几个基本概念:
True positives (TP) = 被模型预测为正的正样本
True negatives (TN) = 被模型预测为负的负样本
False positives (FP) = 被模型预测为正的负样本
False negatives (FN) = 被模型预测为负的正样本
TPR=TP/(TP+TN) 预测为正确的正样本的概率
FPR=FR/(FR+FN) 预测为正确的负样本的概率
TNR=TN/(TN+TP) 预测为错误的正样本的概率
FNR=FN/(FN+FR) 预测为错误的负样本的概率
仔细想很容易,用起来很烧脑(可能是自己傻吧。。)
///新添加////////////////////////////////////////////////////////////////////
误识与误拒
对于一个阈值,误识是大于这个阈值的类间数。误拒是小于这个阈值的类内数。
误识率与误拒率
误识率==误识数/类间总数
误拒率==误拒数/类内总数
误识率与误拒率画出的曲线是负相关。
ROC曲线为误识率(x轴)、误拒率(y轴)。
///////////////////////////////////////////////////////////////////////////////
ROC曲线需要的数据获取方式
我们根据每个测试样本属于正样本的概率值从大到小排序。我们从高到低,依次将每个概率值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。
每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。
然后将所有的threshold的值所对应的FPR和TPR按顺序画出来==ROC曲线
(统计方法:最好对检测的正样本和负样本分别做概率直方图)
ROC画法一
TPR与FPR的组合。这个组合是正相关
Roc画法二
有些人用FNR(FAR)与FPR来描述ROC,这两个是负相关
这种ROC曲线可以采用FAR与FPR相等来确定一个阈值,根据需求可以用不同条件确定阈值
准确率计算
从确定最高点来确定阈值。
用MATLAB 来画图还是很方便的。