如何构建与选择异常检测算法中的features

如果我的feature像图1所示的那样的正态分布图的话,我们可以很高兴地将它送入异常检测系统中去构建算法。

如果我的feature像图2那样不是正态分布的话,虽然我们也可以很好的运行算法,但是我们通常会使用一些转换方法,使数据看下来更像高斯分布,这样算法会工作得更好。

给出上图中下面的这个数据集,可以对其进行一个求对数的转换,这样可以得到一个更像高斯分布的图,这样我们就可以评估出u和σ2了.

在octave里面使用hist来画柱状图,默认是10个柱状,hist(x,50),50个柱条。hist(x.^0.5,50) =>使用x1/2来进行转换,如上图所示。

也可以使用log(x+c),通过调整c来使其更像高斯分布,也可使用x1/2来进行转换等等

所有的这些转换目的是让数据看起来更像高斯分布。

如果画出数据的直方图,发现图形看起来非常不像高斯分布,那么应该进行一些不同的转换,通过这些转换让你的数据看起来更像高斯分布,然后再把数据输入到我们的学习算法中去。

如何得到异常检测算法的特征变量及创建新的feature(误差分析)

通过误差分析,先完整地训练出学习算法,然后在交叉验证集上运行算法,找出那些预测出错的样本,然后看看能否找出一些其它的特征来帮助学习算法,让其在交叉验证时表现更好。

在异常检测系统中,我们希望p(x)的值对于正常样本来说较大,对于异常样本来说是很小的

误差分析的过程:如现在有一个特征x1服从如图所示的正态分布,现在有一个异常样本(绿色所示),它在这个正态分布里面的概率值较大,即我们没有将其分离出来。那么我们看看到底是哪个具体的样本出了问题,通过这个样本来启发我能不能找到一个新的feature来帮助算法来区分出这个不好的样本。即创建一个新的特征x2,有了这个新的特征变量x2我们就能更好地区分出这个异常的样本了。

异常检测算法一些选择features的方法

选择那些可能会取非常非常大的值,或者非常非常小的值的那些features

如在数据中心中我们想监控某台计算机是否出问题了?这时我们可以创建一个新的特征x5=CPU load/network traffic。当机器运行正常时,CPU load与network traffic呈线性的关系。这样当数据中心中的某台机器出了问题时,如被卡住了,这时这台机器的CPU load就会很大,但是network traffic很小,即x5将会非常大,这样我们就可以使用x5来监测机器是否出了问题是否被卡住了。同样也可以创建x6来使用在异常检测算法中。

总结

1>通过对特征进行一些转换来让数据更像正态分布,再将这些特征输入异常检测算法中去

2>误差分析方法来建立新的特征,即找到新的特征将异常样本分开

3>选择那些当出现异常时,值非常非常大或者非常非常小的特征

如何开发一个异常检测系统:使用什么特征变量(features)来构建异常检测算法的更多相关文章

  1. Django完整的开发一个博客系统

    今天花了一些时间搭了一个博客系统,虽然并没有相关于界面的美化,但是发布是没问题的. 开发环境 操作系统:windows 7 64位 Django: 1.96 Python:2.7.11 IDE: Py ...

  2. 开发一个基于 Android系统车载智能APP

    很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...

  3. HBase概念学习(八)开发一个类twitter系统之表设计

    这边文章先将可能的需求分析一下,设计出HBase表,下一步再開始编写client代码. TwiBase系统 1.背景 为了加深HBase基本概念的学习,參考HBase实战这本书实际动手做了这个样例. ...

  4. LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测异常参数

    结合CNN的可以参考:http://fcst.ceaj.org/CN/article/downloadArticleFile.do?attachType=PDF&id=1497 除了行为,其他 ...

  5. C#开发PACS医学影像处理系统(二):界面布局之菜单栏

    在菜单栏布局上,为了使用自定义窗体样式和按钮,我们需要先将窗体设置为无边框,然后添加一个Grid作为菜单栏并置顶,VerticalAlignment="Top" logo图片和标题 ...

  6. C#开发PACS医学影像处理系统(十二):绘图处理之图形标记

    在医生实际使用过程中,对于有病灶的影像需要一些2D绘图操作,例如对于病灶的标记和测量, 这就牵涉到在WPF中的2D绘图操作技术,一般的思路是监听鼠标的按下和抬起以及运动轨迹,目前整理出的常用绘图和测量 ...

  7. C#开发PACS医学影像处理系统(十三):绘图处理之病灶测量

    接上一篇文章,当我们可以绘制图形标记后,就可以在此操作类上面进行扩展, 比如测量类工具,目前整理出的常用绘图和测量功能如下: 测量工具类:(图形标记类请参考本系列文章:绘图处理之图形标记) 功能 说明 ...

  8. C#开发PACS医学影像处理系统(三):界面布局之工具栏

    工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator分割线: XAML设计器代码: 其中  Style="{StaticResource ButtonS ...

  9. C#开发PACS医学影像处理系统(六):加载Dicom影像

    对于一款软件的扩展性和维护性来说,上层业务逻辑和UI表现一定要自己开发才有控制权,否则项目上线之后容易被掣肘, 而底层图像处理,我们不需要重复造轮子,这里推荐使用fo-dicom,同样基于Dicom3 ...

随机推荐

  1. 一文带你了解 Flink 的基本组件栈

    作为实时计算领域的佼佼者,Flink 的基本组件同样值得我们仔细研究. Flink 同样遵循着分层的架构设计理念,在降低系统耦合的同时,也为上层用户构建 Flink 应用提供了丰富且友好的接口. Fl ...

  2. Python学习教程(十)精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  3. SQL Server -----创建sqlserver 数据库 、表

    新建数据库 1.右击  选择新建数据库 2.起一个名字   选择保存位置 3.放在之前建好的的文件夹中 点击确定 4.都要选择好 点击确定 5.确定之后如图 6.新建表 7.见一个表,常说的要满足三大 ...

  4. [转帖]Linux日志文件utmp、wtmp、lastlog、messages

    Linux日志文件utmp.wtmp.lastlog.messages https://www.cnblogs.com/zhuiluoyu/p/6874255.html 1.有关当前登录用户的信息记录 ...

  5. 【Go】go的日志框架-logrus初探

    summary logrus是针对go语言开发的一款日志系统,在本片文章中,将会对上手logrus的过程中遇到的一些问题做一个记录.这个记录参考了这篇文章.下面我们开始吧! 上手 package ma ...

  6. Scala Collection Method

    接收一元函数 map 转换元素,主要应用于不可变集合 (1 to 10).map(i => i * i) (1 to 10).flatMap(i => (1 to i).map(j =&g ...

  7. C#RSA对接JAVA中RSA方式

    C#中通过FromXmlString属性加载的是XML形式,而JAVA中用到的是解析后的PEM格式的字符串,总之读取证书中信息无非是转换方式问题 /// <summary> /// c# ...

  8. 【题解】PERIOD - Period [POJ1961] [SP263]

    [题解]PERIOD - Period [POJ1961] [SP263] 在进入这道题之前,我们需要了解 kmp 算法 不知道的童鞋可以去看一下Silent_EAG(一个可爱的女孩纸)的讲解. 关于 ...

  9. Java学习:抽象方法和抽象类的使用

    抽象 抽象方法:就是加上abstract关键字,然后去掉大括,直接分号结束.抽象类:抽象方法所在的类,必须是抽象类才行.在class之前写上abstract即可. 如何使用抽象类和抽象方法: 1.不能 ...

  10. [转] service worker初探:超级拦截器与预缓存

    在2014年,W3C公布了service worker的草案,service worker提供了很多新的能力,使得web app拥有与native app相同的离线体验.消息推送体验. service ...