DET(Detection Error Tradeoff )曲线是对二元分类系统误码率的曲线图,绘制出错误拒绝率FRR(False Reject Rate)与错误接受率(False Accept Rate)之间随着判断阈值的变化而变化的曲线图。现在DET曲线扩展到用于模式识别分类器性能的评价的一个指标之一。
在上式中, 表示正样本总数, 表示正样本被拒绝即判定为负样本的数目, 表示负样本总数,表示被错误接受的样本数,也就是本身是负样本被判定为正样本的样本数目。由此可以看出,FRR与FAR均受到判定阈值的影响,并且当FAR逐渐增大的时候,也就是当错误接受率逐渐靠近1时,FRR错误拒绝率逐渐减小;当FRR逐渐增大时,FAR必然是逐渐减小的。
当在不同的判定阈值时,画出FRR与FAR的关系,也就是DET曲线。
具体Matlab代码如下:
function plot_det(true_scores,false_scores)
%实际上,这里的true_scores=-true_scores
% false_scores=-false_scores
score_max = 9E99;
%计算FRR与FAR
num_true = max(size(true_scores));
true_sorted = sort(true_scores); %label未按照ind排列
true_sorted(num_true+1) = score_max;
num_false = max(size(false_scores));
false_sorted = sort(false_scores); %label未按照ind排列
false_sorted(num_false+1) = score_max;
frr = zeros(num_true+num_false+1, 1);
far = zeros(num_true+num_false+1, 1);
npts = 1;
frr(npts) = 0.0;
far(npts) = 1.0;
ntrue = 1;
nfalse = 1;
num_true
num_false
while ntrue <= num_true | nfalse <= num_false
if true_sorted(ntrue) <= false_sorted(nfalse)
%----------------------------------------------------------------
%----排序后按照对应序号元素比较,并不改变针对某个判定阈值下错误拒
%绝FR样本数目和错误接受FA样本数目,并且前面已经提到true_scores
%和false_scores实际上已经取反,所以这里的'<='的结果ntrue实际上
%变成被拒绝的样本数目。注意:这里是按照距离相似度,距离越小越相似
%----------------------------------------------------------------
ntrue = ntrue+1;
else
nfalse = nfalse+1;
end
npts = npts+1;
frr(npts) = (ntrue-1) / num_true;
far(npts) = (num_false - (nfalse-1)) / num_false;
end
det.frr = frr(1:npts);
det.far = far(1:npts);
plot(det.frr,det.far)
title('DET曲线')
end
参考:
1. 模式识别 评价方法 ROC曲线, DET曲线, FPPW, FPPI etc.