NILM笔记:性能度量(Performance Metrics)
目录
1. 前言
2. 事件检测
3. 负荷识别
4. 负荷分解
5. 小结
1. 前言
NILM(Non-Intrusive Load Monitoring, 非侵入式负荷监测)通常分为以下几个步骤:
- 数据采集和预处理
- 事件检测(for event-based approach)
- 负荷识别
- 负荷分解
针对步骤(2)~(4)分别要进行性能评估,所采取的性能度量也各有不同,以下分别讨论。
当然也有不同于以上所述的NILM方法,比如non-event-based方法,不做事件检测,相应地就没有独立的负荷识别这一步骤,直接就是负荷分解。在这种方法就只需要考虑最后负荷分解的性能度量即可。
2. 事件检测
事件检测环节,可以理解为一个二分类问题,有事件发生时为Positive,无事件发生时为Negative(当然这个没有必然性,完全可以反过来将有事件定义为Negative,无事件定义为Positive。实践中人们通常是根据哪个更符合直观感觉以及/或更方便于处理来决定如何定义Positive/Negative)。事件种类包括turn-on时间和turn-off,以及对于多状态电器的状态之间的切换都可以看作是事件。
在机器学习领域,二分类问题的常用性能度量就是基于混淆矩阵的各项指标。
图 1 二分类混淆矩阵
- TP(True Positive):将正(Positive)类预测为正类,真实为Positive,预测也为Positive
- FN(False Negative):将正类预测为负类,真实为Positive,预测为Negative。这个就是通常所说的漏检(miss detection)
- FP(False Positive):将负(Negative)类预测为正类, 真实为Positive,预测为Negative。这个就是通常所说的虚警(False Alarm)
- TN(True Negative):将负类预测为负类,真实为Negative,预测也为Negative
在实际应用中,还有进一步对Positive/Negative进行二进制(0/1编码)。与前述的Positive/Negative一样,将P/N映射为0/1还是1/0也没有必然性。两者都可以,保持前后连贯一致即可。
基于混淆矩阵可以得到二分类模型常用各项性能指标如下所示:
- TPR: True Positive Rate.
- FPR: False Positive Rate.
- FNR: False Negative Rate.
- TNR: True Negative Rate.
显然,TPR与FNR是互补的一对(相加得到1),而FPR和TNR是互补的一对,所以实质上是两个独立的度量指标。
但是要注意的一点的是,将NILM中的事件检测当作二分类问题处理与常规的二分类问题相比有一定独特性。如上定义,我们把某个时刻(对应一个输入采样数据)有事件定义为Positive,无事件定义为Negative。但是在正常的家庭日常用电状况中,事件的发生是稀疏的,即绝大多数时刻是没有事件发生的,只有极少数时刻有事件发生的。换言之,数据是非常不平衡的[ref1]。
打个比方说,假定事件检测算法以1Hz的采样数据作为输入,一天共有24*3600=87600个输入数据样本对应87600个时刻,一般家庭一天之中能有多少次电器设备开关或者状态切换时间呢(撑死了往1000次算?).也就是说在所有数据样本中对应Positive的可能不到1%,如果采样率提高的话,这个比率还会进一步变小。
在对事件检测算法的性能评估中需要把这个数据不平衡性考虑进去。事实上,在NILM实际应用场合,通常来说虚警性能比漏检性能更加重要[Ref2],即在虚警和漏检(通常这两者都成了相互矛盾的需求)之间应该优先确保低虚警率。
因此在事件检测算法的性能评估中,通常重视的就是以上TPR和FPR,而不会考虑进一步的比如说accuracy、precision、recall以及F-score等正常分类模型中常用的指标。
3. 负荷识别
在event-based NILM方法中,当检测到事件后,接下来要判断当前这个事件是哪个电器的事件,以及是哪一类事件(turn-on, turn-off or state-switching,事实上turn-on/off可以看作状态切换的特殊情况).
很显然,这也可以看作是一个分类问题,每一类别包含两个维度的信息:电器种类,工作状态。有两种可能的处理方式,一种是针对每一种事件构建一个二分类模型[Ref1],另一种是用一个多分类模型来处理。
多分类问题的混淆矩阵如下所示:
图 2 多分类情况下的混淆矩阵
混淆矩阵可以用于以可视化的、直观的方式汇总地表达多分类问题的检测结果。但是进行定量的性能指标评估还是要针对每一类单独评估,(除了上述的TPR和FPR外,分类模型常用的指标还有accuracy, precision, recall, F-score等指标。
对于每一类别有:
式(1)
准确率(Accuracy)是指全部预测正确的数量占总数的比例,这个指标既关注正样本,也关注负样本,从整体上刻画模型预测的正确比例。
精确率(Precision)有时也被称为查准率,预测为正类并且真实也是正类的数量占全部预测为正类的数量的比例。比如说,艾滋病检测中,所关注的类别为检测阳性,这个被定义为正类,精确率就表示在检测阳性的人中实际感染艾滋病的比例。精确率与虚警(误报)概率相关联。精确率高表示虚警概率低。
召回率(Recall)有时也被称为查全率,预测为正类并且真实也是正类的数量占全部真实标签为正类的数量的比例。反映的是有多少正类被真正找到了。召回率与漏检概率互补,召回率高就表示漏检概率低。召回率这个词有点怪,我猜测是不是可以按如下方式理解:比如说,汽车从产线出来后,需要进行检测,检测的目的是发现有问题的车辆,所以有问题被定义为正类,没有问题被定义为负类。检测OK(负类)的可以送往销售,检测有问题(正类)的则召回。如果一辆车有问题(阳性)而没有被检测出来,这个就是漏检。检测的目标是发现所有有问题的车辆,将所有有问题的车辆都召回(因为有问题的车辆流向市场问题很严重),即达到100%的召回率。
精确率和召回率通常是一对相互矛盾的数据,分类模型一般需要在两者之间做一个权衡取舍(trade-off)。而F1则是一个综合考虑两者折衷的指标。当然以上F1的定义是假定二者权重相等时的定义,进一步还可以考虑给两者赋予不同权重的F1指标。
进一步还有如ROC-AUC等。
4. 负荷分解
在负荷分解环节,NILM算法基于上一步骤负荷识别的结果,计算每一种负荷在每个时刻的功耗值,其性能评估方式就是看估计出的各种负荷的功率值之和与实测的总功率值之间的误差。可以用MAE和RMSE来衡量功耗估计性能[3][4],定义如下:
式(2)
其中, 分别表示总功率测量值以及NILM算法估计值。
5. 小结
以上扼要介绍了基于事件的NILM算法中各个环节的常用性能评估指标。但是实际上在文献中出现过的评估指标远不止这些,在[5]中对ED(Event detection)类和EE(Energy Estimation)类的各种(花式的)性能评估指标做了一个比较详尽的梳理,并在[1]中对各种指标的有效性等进行了基于实验的对照评估。
2022-02-06 订正Accuracy, F1的定义,以及追加关于召回率的直观解释
[1] Lucas Pereira, et al., An Experimental Comparison of Performance Metrics for Event Detection Algorithms in NILM, NILM workshop 2018
[2] Christos Athanasiadis, et al., A Scalable Real-Time NILM for the estimation of household appliance power consumption
[3] Ji, T.Y. et al. NILM Using Additive Factorial Approximate MAP Based on Iterative Fuzzy c-Means. IEEE Trans. Smart Grid 2019, 10, 6667–6677.
[4] Makonin, S. et al. Exploiting HMM Sparsity to Perform Online Real-Time NILM. IEEE Trans. Smart Grid 2016, 7, 2575–2585.
[5] Lucas Pereira, et al., Performance evaluation in non-intrusive load monitoring:Datasets, metrics, and tools—A review
NILM笔记:性能度量(Performance Metrics)相关推荐
- linux i查看o性能度量,11.9.18 学习笔记:性能管理
性能监视 ※DBA必须定期监视性能以查找瓶颈所在,然后更正问题 监控内容包括: 内存分配问题 I/O设备争用 资源争用 应用程序代码问题 网络瓶颈 ※从网络性能和I/O速度到运行单个程序操作所花费的时 ...
- 机器学习之性能度量指标
机器学习的模型性能度量指标 在机器学习中,衡量,评估和选择一个模型好坏是通过一些常见指标实现的,称之为性能指标(Metrics). 对于一个二分类问题,我们首先给出如下基本指标基于这些指标可以推导出其 ...
- 聚类 | 超详细的性能度量和相似度方法总结
非监督学习与监督学习最重要的区别在于训练数据是否包含标记数据,在机器学习开发的工作中,往往包含了大量的无标记数据和少量的标记数据,非监督方法通过对无标记训练样本的学习来发掘数据的内在规律,为进一步的数 ...
- 《响应式Web设计性能优化》一2.1 性能度量基础
本节书摘来异步社区<响应式Web设计性能优化>一书中的第2章,第2.1节,作者: [美]Tom Barker 译者: 余绍亮 , 丁一 , 叶磊 责编: 赵轩,更多章节内容可以访问云栖社区 ...
- 机器学习性能度量(2):错误接受率 (FAR), 错误拒绝率(FRR),EER计算方法,python实现
上一篇博文中讨论了两种常用的性能度量查准率(precision)查全率(recall,也叫召回率)对应的P-R图与真正例率(TPR),假正例率(FPR)对应的ROC图.详情请看https://blog ...
- 机器学习性能度量(1):P-R曲线与ROC曲线,python sklearn实现
最近做实验要用到性能度量的东西,之前学习过现在重新学习并且实现一下. 衡量模型泛化能力的评价标准,这就是性能度量.性能度量反应了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判 ...
- Performance Metrics(性能指标1)
Performance Metrics(性能指标) 在我们开始旅行本书之前,我必须先了解本书的性能指标和希望优化后的结果,在第二章中,我们探索更多的性能检测工具和性能指标,可是,您得会使用这些工具和明 ...
- high-speed A/D performance metrics and Amplifie...
2019独角兽企业重金招聘Python工程师标准>>> High-Speed A/D performance metrics 在高速情况下,主要考虑信号参数的频率范围.失真和噪声.D ...
- 【AI面试题】分类问题常用的性能度量指标(评价指标)
分类问题常用的性能度量指标有精确率.召回率.F1.TPR.FPR. 分类问题度量指标的基础是混淆矩阵: 上表中: TP表示正样本被预测为正样本(真正例,True Positive) FN表示正样本被预 ...
最新文章
- 元素的子元素_从暂元里取出子元素 | Stata编程
- 百度地图软件测试,使用 app-inspector 解析 i 调用百度地图定位的页面时 (iOS),会导致测试 app 崩溃...
- iOS实现“下雨下雪”动画效果和“烟花”动画效果
- android span的用法,Android Span的使用
- php version 5.5.17-1~dotdeb.1,Ubuntu 12.04使用Dotdeb安装PHP5.4 / Nginx1.4/Redis2.6等新版本
- [转载]在instagram上面如何利用电脑来上传图片
- oracle中游标详细用法
- UVA 10602 - Editor Nottoobad
- 火星坐标系、WGS84坐标系、百度坐标系和Web墨卡托坐标系相互转换(基于Python实现)
- java边缘检测_Sobel边缘检测实现
- [转]我在上海的五年奋斗岁月
- SRE问题排查四步法——以建立HTTPS连接失败问题排查为例
- 在chrome的网址上搜索总是跳转到百度首页
- 有没有发现不会写简历,感觉什么都不会?其实写简历也是一种艺术。
- XCTF-PWN pwn-200(使用DynELF利用write泄露system地址)
- 如何在Mac版达芬奇中安装使用LUT调色预设?达芬奇lut调色预设安装使用教程
- YYKit系列之——YYModel使用(摘自GitHub)
- 电销机器人百度百科_从做百度百科看站长百态
- 51nod1355:斐波那契的最小公倍数(数论)
- 杨强教授:《可信联邦学习与开源生态》主题演讲视频
热门文章
- 迈克尔·杰克逊 you are not alone
- 1.程序员自我修养 - 绪论1
- minecraftjava下载地址_请问谁有我的世界1.14Java版的下载地址啊?
- ARM架构版本及处理器系列详细介绍
- 【算法学习笔记】高级数据结构 B树
- Vue项目在ie浏览器报语法错误
- 玩转Zynq连载35——基于Vivado的Virtual IO在线板级调试
- TP6 重定向redirec使用场景
- 介绍给大家400种生活小窍门(很有用的)
- 如何在iPhone和Mac上关闭“查找我的设备”该项功能