如何开发一个异常检测系统:如何评价一个异常检测算法
利用数值来评价一个异常检测算法的重要性
使用实数评价法很重要,当你用某个算法来开发一个具体的机器学习应用时,你常常需要做出很多决定,如选择什么样的特征等等,如果你能找到如何来评价算法,直接返回一个实数来告诉你算法的好坏,那样你做决定就会更容易一些。如现在有一个特征,要不要将这个特征考虑进来?如果你带上这个特征运行你的算法,再去掉这个特征运行你的算法,得到返回的实数,这个实数直接告诉你加上这个特征算法是变好了还是变坏了,这样你就有一种更简单的算法来确定是否要加上这个特征。
为了更快地开发出一个异常检测系统,那么最好能找到某种评价异常检测系统的方法。
为了能评价一个异常检测系统,假定已有一些带标签的数据,其中有正常的样本也有异常的样本(正常的样本y=0,异常的样本y=1)
对于训练集,我们还是看成无标签的样本,将它们都看成无异常的样本(其中可能有一些有异常的样本被分到训练集中)
定义交叉验证集与测试集,通过这两个集合得到异常检测算法。我们假设交叉验证集与测试集中的样本都是异常的,即测试集里面的样本y=1(表示异常样本)。
具体的例子
有10000个正常的飞机引擎,有20个有问题的飞机引擎,从以往经验来看,无论是制造了多少年的飞机引擎工厂,都会得到大概20个有问题的引擎。对于异常检测典型的应用来说,异常样本的个数通常都是20-50个这样的个数,并且通常我们的正常样本数量要大得多。
我们将数据分成训练集,交叉验证集和测试集,典型的分法是:将10000个好的引擎样本中的6000个放入trainning set中做为无标签的数据(实际都为正常的样本),将剩下的正常的样本中的2000个样本放入交叉验证集中,另2000个样本放入测试集中(正常样本的分配比例是6:2:2);将有异常的20个样本,其中10个放入CV中,另外10个放入Test中。
另一种常见的分配方法(不推荐这样做)是将CV与Test的样本混合起来使用,将剩下的4000个好的样本即做为CV也做Test使用(不推荐这样做)
异常检测算法的推导与评估
异常检测算法的推导与评估算法如下:首先我们使用训练样本(虽然都是是无标签的样本但其实都是正常的样本)来拟合模拟p(x)(即参数估计出u,σ的值)
对于CV与Test里面的数据,我们利用算法对y进行预测,然后来评价预测的准确率。如何来度量呢?
因为数据是非常偏斜的(正常的数据多,异常的数据少),因此分类准确率不是一个好的度量方法,算出查准率、召回率以及F1值,通过这些方法来评价我的异常检测算法在CV以及Test中的表现。
怎么决定ε的值呢?在交叉验证集上来决定取什么ε的值,在交叉验证集上尝试多个不同的ε的取值,然后选出一个使得F1值最大的那个ε的值,即在交叉验证集上表现最好的那个ε的值。当我们需要做出决定时(如选哪个特征,选哪个ε的值),我们可以不断地使用交叉验证来评价这个算法的好坏,然后决定我们要选取哪个特征,选哪个ε的值。
当找到ε的值后,我们的异常检测算法就确定了,然后使用Test集来评价算法的表现
总结
1>如何评价一个异常检测算法:使用F1值,在交叉验证集上做出决定如何选择ε(确定ε的大小)以及应该包括哪些特征等
转载于:https://www.cnblogs.com/yan2015/p/7401680.html
如何开发一个异常检测系统:如何评价一个异常检测算法相关推荐
- android 入侵检测系统,面向Android智能手机异常入侵检测的在线学习算法.DOC
面向Android智能手机异常入侵检测的在线学习算法 页码 计算机应用研究 第28卷收稿日期:2014-00-00:修回日期: 基金项目:基金项目1全称(基金项目号):基金项目2全称(基金项目号):作 ...
- linux文件下生成一个文件,Linux系统下生成一个指定大小的文件要注意什么?
在装系统,因此在这里随便记点东西. 从前与经理讨论NVR项目的时候,他提到要预先将用户指定好的磁盘空间预留出来,这是比较容易实现的功能.不容易实现的是自己写一个文件系统,这种方法我是不太敢照量啊,不过 ...
- matlab路面裂缝检测系统,裂缝识别(路面裂缝检测识别系统设计)
[实例简介]:裂缝识别 [实例截图] [核心代码] function pushbuttonOpenFile_Callback(hObject, eventdata, handles) % hObjec ...
- Anomaly detection system——异常检测系统简介与设计
"异常检测系统"常常应用于制造业中,同时对于生活在互联网时代的我们而言,异常检测同样发挥着巨大的作用,例如进行异常用户检测,防止网络诈骗等行为等. 一个成熟的异常检测系统能够基于输 ...
- 基于实时计算(Flink)与高斯模型构建实时异常检测系统
案例与解决方案汇总页: 阿里云实时计算产品案例&解决方案汇总 1. 概述 异常检测(anomaly detection)指的是对不符合预期模式或数据集(英语:dataset)中其他项目的项目. ...
- 硬件***检测系统完全导购
***检测产品的发展趋势 1.***检测产品发展现状 ***检测系统(Intrusion Detect System),目前基本上分为以下两种:主机***检测系统(HIDS):网络***检测系统( ...
- 基于递归神经网络的跌倒检测系统
项目下载: https://download.csdn.net/download/babyai996/87544088https://download.csdn.net/download/babya ...
- 基于网络、系统和过程数据的工业控制系统多层数据驱动网络攻击检测系统
Multilayer Data-Driven Cyber-Attack Detection System for Industrial Control Systems Based on Network ...
- 基于深度学习的海洋动物检测系统(Python+YOLOv5+清新界面)
摘要:基于深度学习的海洋动物检测系统使用深度学习技术检测常见海洋动物,识别图片.视频和实时视频中的海洋动物,方便记录.展示和保存结果.本文详细介绍海洋动物检测系统,在介绍算法原理的同时,给出Pytho ...
- 识别产品外观的合格软件_产品外观质量视觉检测系统.PDF
产品外观质量视觉检测系统 产品外观质量视觉检测系统 北京大恒图像视觉有限公司 Beijing Daheng Image Vision Co., Ltd 公司简介 中国大恒(集团)有限公司是中国科学院于 ...
最新文章
- warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;使用 /NODEFAULTLIB:library问题解决方法
- 怎么用feign远程调用别人的接口_spring cloud-openFeign声明式远程调用
- python 怕网页_他文献查到凌晨两点,我用Python十分钟搞定!
- ResourceLoader
- IT兄弟连 JavaWeb教程 EL表达式获取对象的属性以及数组的元素
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
- 发力企业级市场,微软Hololens开辟了一条VR新道路
- hadoop conf中xml文件修改
- python数据持久存储:pickle模块的基本使用
- intel hd3000 本 在 64位 ubuntu10.04 下 液晶亮度无法调节 的解决之道(亲测)
- 数据科学工程篇_AB实验原理与实践
- Electron 仿制WeGame(二)
- 测试固态硬盘有没有坏道的软件,固态硬盘有坏道怎么办(ssd坏块检测工具)
- 荣耀10青春版支持鸿蒙吗,荣耀10青春版详细评测:又一款年轻群体收割机
- 【办公软件有哪些】万彩办公大师教程丨PDF页面编辑
- Clover引导Windows10,Mac OS High Sierra,CentOS7 经验分享
- Flutter 功能最全的JsonToDart工具
- 【Nodejs】留言板案例
- JavaScript 获取当前日期——JS 中的今天日期
- 谷歌账户暂停三个月重新启用,谷歌账户暂停三个月重新启用,转化目标是否有效?