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

2024-06-10 05:58

本文主要是介绍模式识别分类器评价指标之CMC曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CMC曲线全称是Cumulative Match Characteristic (CMC) curve,也就是累积匹配曲线,同ROC曲线Receiver Operating Characteristic (ROC) curve一样,是模式识别系统,如人脸,指纹,虹膜等的重要评价指标,尤其是在生物特征识别系统中,一般同ROC曲线一起给出,能够综合评价出算法的好坏。如下图所示:


那么,CMC曲线的原理是什么?怎样编程实现?下面将进行详解。

CMC曲线原理

CMC曲线综合反映了分类器的性能,它的评价指标与现在deep learning中常用的top1 err或top5 err评价指标一样的意思,不同的是这里Rank1 recognition rate表示的是正确率而不是错误率,两者的关系是

Rank1识别率=1-top1 err

Rank5识别率=1-top5 err

它们表示的是什么意思呢?就比如给你一个选择题,有10个选项,但是只有一个选项是正确的,现在让你从中选出正确答案。如果让你猜一次,正确的概率为1/10,你感觉自己状态不好,想从猜一次,现在给你机会,让你再猜一次,现在你总共猜两次,选两个答案,正确率一下子提高到1/5,你又说了,猜两次反映不出你的水平,你要猜五次,也就是从10个选项中选5个选项,这5个选项中包括正确选项的概率大大增加,变为1/2,如果让你猜10次,那蒙对的概率肯定为1了,也有人蒙的能力比较强,可能猜3次就能猜到正确答案,也就是提前收敛到1。CMC曲线Rank1识别率就是表示按照某种相似度匹配规则匹配后,第一次就能判断出正确的标签的数目与总的测试样本数目之比,Rank5识别率就是指前五项(按照匹配程度从大到小排列后)有正确匹配。如果一个样本按照匹配程度从大到小排列后,到最后一项,才匹配到正确标签,这就说明分类器不太好,把最应匹配的判别成最不应匹配的。语言表述有点苍白,还是看具体实现吧。

Matlab编程实现

现设match_dist=NxM的矩阵,其中N为测试样本(test set)数,M为训练样本(training set)数,根据某种相似度匹配规则,如距离或概率或score等,得到的一个匹配矩阵match_dist。示例如下:


具体代码如下:

 %处理测试样本与注册的训练样本匹配的相似度矩阵match_scores = zeros(length(num_test),length(num_class));true_labels = zeros(length(num_test),length(num_class));for i=1:length(num_test)for j=1:length(num_class)[x,y]=find(num_class(j)==num_train);%选取匹配程度的中值label_distances(i,j) = median(match_dist(i,y));if num_test(i)==num_class(j)true_labels(i,j)=1;endendend%生成CMCmax_rank = length(num_class);%Rank取值范围ranks = 1:max_rank;%排序label_distances_sort = zeros(length(num_test),length(num_class));true_labels_sort = zeros(length(num_test),length(num_class));for i=1:length(num_test)[label_distances_sort(i,:), ind] = sort(label_distances(i,:));true_labels_sort(i,:) =  true_labels(i,ind);end%迭代rec_rates = zeros(1,max_rank);tmp = 0;for i=1:max_ranktmp = tmp + sum(true_labels_sort(:,i));rec_rates(1,i)=tmp/length(num_test);end  
在代码中,num_test为测试样本标签labels向量,num_class为总的类别标签向量,num_train为注册在gallery或训练集中的标签向量,如下所示:

num_test


num_class


num_train


然后,根据已得数据可以直接plot即可得CMC曲线:

plot(1:max_rank,rec_rates)
如下图所示:


看上去不太美观,可以根据set调整一下如下:

hold on
set(gca,'XLim',[1 40]);%X轴的数据显示范围
set(gca,'YLim',[0.6 1]);%X轴的数据显示范围
%set(gca,'XTickLabel',[1:5:40]);%给坐标加标签
title('CMC曲线')
xlabel('Rank')
ylabel('Recognition Rate')
图示如下:











参考:

1. Relating ROC and CMC Curves via the Biometric Menagerie

这篇关于模式识别分类器评价指标之CMC曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047374

相关文章

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

风控系统之指标回溯,历史数据重跑

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 回顾 默认你已经看过之前那篇风控系统指标计算/特征提取分析与实现01,Redis、Zset、模版方法。 其中已经介绍了如何利用redis的zset结构完成指标计算,为了方便这篇文章的介绍,还是在正式开始本篇之前回顾一下。 时间窗口 zset

Matlab中BaseZoom()函数实现曲线和图片的局部放大

BaseZoom工具下载链接: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取码:9dyl 下载完之后将工具包放置合适的路径下,并在matlab中“设置路径”中添加相应的路径; 注:可以先运行如下图片中的语句,看看是否报错;如果报如下错误,说明matlab未安装“Image Processing Toolbox”工

通达信指标公式解析(2)多彩MACD指标

通达信指标公式解析(2)多彩MACD指标 公式效果展示(结合主力操盘线与生命线)公式代码截图公式代码解析1. **DIF 和 DEA 的定义:**2. **MACD 值的计算与颜色条形:**3. **DIF 和 DEA 之间的带状显示:**4. **柱状线的颜色区分:**5. **价格线的绘制:**6. **金叉与死叉的标注:**7. **不同强度柱状图的绘制:**8. **总结**关于建群

基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的包装盒纸板破损缺陷检测系统是一种高效、智能的解决方案,旨在提高生产线上包装盒纸板的质量检测效率与准确性。该系统利用YOLOv8这一前沿的深度学习模型,通过其强大的目标检测能力,能够实时识别并标记出包装盒纸板上的各种破损缺陷,如划痕、撕裂、孔洞等。 在系统中,首先需对包含破损缺陷的包装盒纸板图像进行数据采集和标注,形成训练数据集。随后,利用这些数据进行模型训练,使

第一篇 第一章资金时间价值计算及应用 第二章经济效果评价

第1章 资金时间价值计算及应用 资金具有时间价值 1.1 利息的计算 1.1.1 利息和利率 I=F-P 债务人为资金需求方 债权人为资金供给方利息对经济活动的影响(1.影响企业行为 2.影响居民资产选择行为 3.影响政府行为) 利率 1.影响因素(1.社会平均利润率的高低 2.市场资金供求对比状况 3.资金要承担的风险 4.债务资金使用期限长短 5.政府宏观调控政策 6.经济周期所处

Flink实时计算指标对数方案

来源:大数据技术与架构读者投稿 作者:诸葛子房 点击右侧关注,大数据开发领域最强公众号! 点击右侧关注,暴走大数据! By  大数据技术与架构 作者简介: 诸葛子房 ,目前就职于一线互联网公司,从事大数据相关工作,了解互联网、大数据相关内容,一直在学习的路上 。

基于AI+多技术融合在流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的实践应用

流域生态系统服务在环境保护与资源管理中具有不可替代的重要性。随着全球气候变化和人类活动对自然环境的压力日益增大,流域生态系统的稳定性和健康状况面临严峻挑战。水资源短缺、洪水频发、水质污染、生物多样性减少等问题,正在威胁流域内及其下游区域的人类社会福祉。因此,对流域生态系统服务的科学评估和有效管理不仅能够提升生态系统的抗逆性和恢复力,还能为区域可持续发展提供坚实的环境保障。通过GIS+技术进行的流域

Flink实战(七十二):监控(四)自定义metrics相关指标(二)

项目实现代码举例: 添加自定义监控指标,以flink1.5的Kafka读取以及写入为例,添加rps、dirtyData等相关指标信息。�kafka读取和写入重点是先拿到RuntimeContex初始化指标,并传递给要使用的序列类,通过重写序列化和反序列化方法,来更新指标信息。 不加指标的kafka数据读取、写入Demo。 public class FlinkEtlTest {priv