模式识别分类器评价指标之DET曲线

时间:2022-12-08 09:57:57

DET(Detection Error Tradeoff )曲线是对二元分类系统误码率的曲线图,绘制出错误拒绝率FRR(False Reject Rate)与错误接受率(False Accept Rate)之间随着判断阈值的变化而变化的曲线图。现在DET曲线扩展到用于模式识别分类器性能的评价的一个指标之一。

模式识别分类器评价指标之DET曲线

在上式中,模式识别分类器评价指标之DET曲线 表示正样本总数,模式识别分类器评价指标之DET曲线 表示正样本被拒绝即判定为负样本的数目,模式识别分类器评价指标之DET曲线 表示负样本总数,模式识别分类器评价指标之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.