【机器学习】入门笔记系列(12) | 异常检测

一、高斯分布

高斯分布又称为正态分布。高斯分布用函数描述 N(\mu,\sigma^2)。其中 \mu 是平均值,\sigma^2 是方差。正态分布的 \mu 决定了曲线的中心位置,\sigma^2 决定了分布的幅度。

1.1 一维高斯分布

x \in \mathbb{R},称为一维高斯分布。

一维高斯分布公式
一维高斯分布

\mu 决定了曲线的中心位置,\sigma^2 决定了分布的幅度。

参数 μ,σ 对分布的影响

1.2 多维高斯分布

x \in \mathbb{R}^n时,即 x 是一个向量时,\mu \in \mathbb{R}^n,\Sigma \in \mathbb{R}^{n*n}

计算公式如下:

多维高斯分布计算公式

以二维为例,讲解一下参数对多维高斯分布的影响:\mu 依旧决定了中心位置,而 \Sigma 是一个协方差矩阵,决定了方向、形状以及幅度。

参数Sigma对多元高斯分布的影响

二、异常检测算法

2.1 问题动机 / 算法思路

跟其他的学习算法一样,给定数据集 x^{(1)},x^{(2)},...,x^{(m)} 训练异常检测模型。然后给出新样本,我们通过异常检测模型判断该样本是异常 / 正常。

我们定义异常检测模型为 p(x)p(x) 表示样本不是异常的概率。我们选择一个临界值 \epsilon

if~p(x^{(i)}) < \epsilon,then~x^{(i)}~就是异常样本\\if~p(x^{(i)}) \geq \epsilon,then~x^{(i)}~就是正常样本

2.2 基于一维高斯分布的算法实现

给一组训练集 \{x^{(1)},x^{(2)},...,x^{(m)}\},其中 x \in \mathbb{R}^n,每个特征 x_i 都属于高斯分布。模型的函数如下:

p(x) = p(x_1;\mu_1,\sigma^2_1)p(x_2;\mu_2,\sigma^2_2)...p(x_n;\mu_n,\sigma^2_n) = \prod^m_{i=1}p(x_i;\mu_i,\sigma^2_i)

上面的式子就对应于一个从 x_1x_n 上的独立的假设相乘。实际中,无论这些特征是否独立,即使这个独立的假设不成立,这个算法的效果也很不错。

算法实现过程如下:

基于一维高斯分布的异常检测算法实现

2.3 异常检测系统开发与评估

为了开发与评估异常检测系统,我们需要带标签的数据集。y=0 代表正常样本,y=1 代表异常样本。

异常检测算法多适用于异常样本数很少,正常样本数非常多的场景,即数据集正负样本数量相差悬殊的场景。

由于数据集正负样本数量相差悬殊,将大部分正常样本用于训练模型,而全部异常样本和剩余正常样本用于验证与测试模型,具体如何划分数据集进行训练、验证和测试模型:

  1. 我们将大部分的 y=0 的样本作为训练集,用于训练模型 p(x)
  2. 将剩余的 y=0 的数据与 y=1 的样本作为验证集与测试集(当然,验证集与测试集交集为空)。

举个例子,我们有 10,000 个正常样本(y=0) 和 20 个异常样本(y=1)。数据集划分如下:

  1. 训练集 = 6,000 个正常样本
  2. 验证集 = 2,000 个正常样本 + 10 个异常样本
  3. 测试集 = 2,000 个正常样本 + 10 个异常样本
异常检测系统开发-数据集划分实例

如何评估系统?

异常检测算法评估

首先,用由正常样本组成的训练集来训练模型p(x)(就是求 训练集的平均值\mu,方差\sigma^2);

然后,使用由正常样本和异常样本组成的验证集运行模型并计算 F_1-score 来调整决策边界值 \epsilon(一般,当出现不少正常样本被错误分类为异常样本时,减小 \epsilon;反之,增加 \epsilon

最后,计算测试集中 F_1-score 评价模型(因为这是不对称分类问题:异常数据非常少,正常数据非常多)

2.4 如何选取特征

特征对异常检测算法影响很大。我们需要特征符合高斯分布,通过对特征变量 x_i 绘制直方图(横坐标:x_i 取值,纵坐标:次数)来判断特征变量 x_i 是否符合高斯分布。

对特征变量绘制直方图来判断特征变量是否符合高斯分布

当特征 x_i 不符合高斯分布时,需要对特征变量进行转换,常用的转换函数有

  1. x_i = log(x_i + c)
  2. x_i = x_i^{k},~0< k<1
特征转换成高斯分布

总结:如果你画出数据的直方图并且发现图形看起来非常不像高斯分布,那么就要进行转换,来让你的数据看起来更具有高斯分布的特点,然后你再把数据输入到异常检测算法 。

第二个问题:你如何得到异常检测算法的特征变量

常用的办法是「误差分析」

这跟我们之前学习监督学习算法时的误差分析步骤是类似的。也就是说

  1. 首先,我们先完整地训练出一个学习算法;
  2. 然后,在一组交叉验证集上运行算法,然后找出那些预测出错的样本;
  3. 然后,再看看你能不能得到启发来创造新的特征变量来帮助学习算法,让它在那些交叉验证时 判断出错的样本中表现更好

举个例子,现在假如我有一个异常样本,这个异常样本中 x_1 的取值如下图中左图绿叉所示,我画出我的异常样本你不难发现,它看起来就像被淹没在一堆正常样本中似。这样就没法把这个异常样本区别出来。

现在如果说这代表飞机引擎的制造或者别的什么,那么我会做的是我会看看到底是哪一个具体的飞机引擎出错了,看看通过这个样本能不能启发我想出一个新的特征 x_2 来帮助算法区别出异常样本和我剩下的正确的样本,也就是那些红色的叉叉 。

通过对误差分析,创建一个新的特征 x_2 我会发现我的异常检测算法会在中间区域给出一个较高的概率,然后越到外层越小,到了那个绿色的样本,我的异常检测算法会给出非常小的概率值(如下图右图所示)

2.5 多维元高斯异常检测算法

上图显示是基于一元高斯分布与基于多元高斯分布的异常检测算法,两者在参数 \mu 的计算是一样的,但在计算方差\sigma^2, \Sigmap(x) 不同了。

实际上,基于一元高斯分布的异常检测算法等价于当协方差矩阵 \Sigma 除正对角线之外其余元素都为 0 时的基于多高斯分布的异常检测算法。也就是说,基于一元高斯分布的异常检测算法绘制的图形是轴对称,不能改变方向,举个例子如下图所示。

基于一元高斯分布与基于多元高斯分布的异常检测算法的区别在于

基于一元高斯分布与基于多元高斯分布的异常检测算法的区别

总结:基于一元高斯分布的算法最大的优势:它的运算量更小,它更适用于 n 的值非常大,就是说特征变量很多的情况;基于多元高斯分布的算法最大优势:可以自动捕捉不同特征变量之间的相关性,而基于一元高斯分布的算法必须手动建立这样的新特征变量。

2.6 异常检测算法与监督学习

异常样本设为 y=1

引出了这样一个问题: 我们有了这些带标签的数据,我们有了一些样本其中一些我们知道是异常的,另外一些是正常的,那我们为什么我们不直接用监督学习的方法呢来直接学习这些带标签的数据 从而给出预测 y=1 或 y=0 呢?

解释:异常检测算法的使用场景是在异常样本(y=1)数量远小于正常样本数。如果你只有很少的 y=1 样本, 那么一个监督学习算法从这么少的 y=1 样本中不可能学出太多异常种类,具体来说极小的异常样本导致你的监督学习算法掌握的异常类型很少,未来遇到的异常可能跟你已经见过的完全不同。那么这更加说明你应该对 y=0 的样本进行建模,建立这个高斯模型 p(x) 而不是很费力地对数量极少的 y=1 样本进行建模 因为你知道 (即便你建了模型) 明天你也许就会遇到你完全没有见过的异常类型。相对而言,如果你拥有足够多的 y=1 样本,你的算法能够感觉到 y=1 样本是什么样的。具体来说,如果你认为未来的 y=1 样本跟训练集中的很相似的话,那么在这样的条件下用监督学习算法似乎更加合理,既使用大量的 y=1 样本 也使用大量的 y=0 样本并且尝试对正负样本进行分类。

使用场景对比

举个例子:垃圾邮件处理为什么不用异常检测算法?虽然垃圾邮件种类非常多,但对于垃圾邮件的问题 我们通常有足够多的 垃圾邮件的样本 我们能得到绝大多数不同类型的 垃圾邮件 因为我们有大量的 垃圾邮件样本的集合

总结:当异常样本(y=1)数量很少时,采用异常检测算法对 y=0 的样本进行建模;当异常样本(y=1)数量足够多时,可以转换成使用监督学习进行预测。

总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容