【Machine Learning, Coursera】机器学习Week9 异常检测笔记

ML:Anomaly Detection

1. Introduction

1.1 Motivation

异常检测的应用场景:

  • Fraud detection
    异常交易行为检测,反欺诈
  • Manufacturing
    异常工业零件检测
  • Monitoring computers in a data center
    数据中心异常计算机检测
    \quad

1.2 Mathematics

假设 x ( i )   ( i = 1 , 2 , . . . , m ) x^{(i)} \ (i=1,2,...,m) x(i) (i=1,2,...,m)为总体X中的样本,总体X服从正态分布, X X X~ N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2)
总体均值 μ \mu μ、总体方差 σ 2 \sigma^2 σ2的估计量分别为:
μ = 1 m ∑ i = 1 m x ( i ) \mu=\frac{1}{m}\sum_{i=1}^m x^{(i)} μ=m1i=1mx(i)
σ 2 = 1 m ∑ i = 1 m ( x ( i ) − μ ) 2 \sigma^2=\frac{1}{m}\sum_{i=1}^m (x^{(i)}-\mu)^2 σ2=m1i=1m(x(i)μ)2(正确的总体方差的无偏估计量应除以m-1,简单起见,机器学习中不做此区分)

判断 x ( i ) x^{(i)} x(i)是否为异常值的方法如下:
1、给定阈值 ϵ \epsilon ϵ
2、将 x ( i ) x^{(i)} x(i)代入正态分布的概率密度函数 p ( x ; μ , σ 2 ) = 1 σ 2 π e ( − ( x − μ ) 2 2 σ 2 ) p(x;\mu,\sigma^2)=\frac{1}{\sigma\sqrt{2\pi}}e^{(-\frac{(x-\mu)^2}{2\sigma^2})} p(x;μ,σ2)=σ2π 1e(2σ2(xμ)2)
3、若 p ( x ( i ) ; μ , σ 2 ) < ϵ p(x^{(i)};\mu,\sigma^2)<\epsilon p(x(i);μ,σ2)<ϵ,则 x ( i ) x^{(i)} x(i)为异常值
\quad

1.3 Algorithm

Training set{ x ( 1 ) x^{(1)} x(1), x ( 2 ) x^{(2)} x(2),…, x ( m ) x^{(m)} x(m)} (where x ( i ) ∈ R n x^{(i)}∈\R^n x(i)Rn)

假设各特征变量互相独立且都服从正态分布,则n个变量的联合概率密度函数为
p ( x ; μ , σ 2 ) = ∏ j = 1 n p ( x j ; μ j , σ j 2 ) = ∏ j = 1 n 1 σ j 2 π e x p − ( ( x − μ j ) 2 2 σ j 2 ) p(x;\mu,\sigma^2)= \prod_{j=1}^n p(x_j;\mu_j,\sigma_j^2)=\prod_{j=1}^n \frac{1}{\sigma_j\sqrt{2\pi}}exp^{- (\frac{(x-\mu_j)^2}{2\sigma_j^2})} p(x;μ,σ2)=j=1np(xj;μj,σj2)=j=1nσj2π 1exp(2σj2(xμj)2)

Step 1. 选择可用于检测异常的特征
e.g. 在异常用户检测中,可选用的特征包括登录频率、访问次数、交易次数、发帖次数、打字速度等

Step 2. 参数估计
μ j = 1 m ∑ i = 1 m x j ( i ) \mu_j=\frac{1}{m}\sum_{i=1}^m x_j^{(i)} μj=m1i=1mxj(i)
σ j 2 = 1 m ∑ i = 1 m ( x j ( i ) − μ j ) 2 \sigma_j^2=\frac{1}{m}\sum_{i=1}^m (x_j^{(i)}-\mu_j)^2 σj2=m1i=1m(xj(i)μj)2

Step 3. 给定新样本x,计算p(x),并与阈值 ϵ \epsilon ϵ比较
如果 p ( x ) < ϵ p(x)<\epsilon p(x)<ϵ,则x为异常样本

\quad

2. Building an Anomaly Detection System

如何评估一个异常检测系统?

2.1 Developing and evaluating an anomaly detection system

-real number evaluation有助于做出决策
用一个具体的数字评估算法

例:
10000 个正常引擎
20 个异常引擎

按照6:2:2的比例划分
Training set:6000个正常引擎
CV set:2000个正常引擎和10个异常引擎
Test set:2000个正常引擎和10个异常引擎

评估步骤:
Step 1:用训练集训练模型
Step 2:对CV和Test set, p ( x ) < ϵ p(x)<\epsilon p(x)<ϵ时预测 y = 1 y=1 y=1,反之 y = 0 y=0 y=0
Step 3:用F1 Score评估模型效果
F1的计算参见《偏斜数据集的处理》:https://blog.csdn.net/weixin_42395916/article/details/82665569

CV集还可用于 ϵ \epsilon ϵ的选择:多次尝试,取使F1 Score最大的 ϵ \epsilon ϵ
\quad

2.2 Choosing what features to use

特征的选择会显著影响异常检测算法的效率

理想的特征:

  • 有代表性
    在异常情况下值会很大或很小
  • 正态分布
    非正态分布的特征,处理后使其变成渐进的正态分布,如log(x)

例:特征的构建
在数据中心异常计算机检测中,可使用 C P U   l o a d n e t w o r k   t r a f f i c \frac{CPU\ load}{network\ traffic} network trafficCPU load作为一个特征
\quad

3. Multivariate Gaussian/Normal Distribution

异常检测的两种算法:

  • 每个特征分开建模(即假设每个特征相互独立)
    ∏ j = 1 n p ( x j ; μ j , σ j 2 ) = ∏ j = 1 n 1 σ j 2 π e x p − ( ( x − μ j ) 2 2 σ j 2 ) \prod_{j=1}^n p(x_j;\mu_j,\sigma_j^2)=\prod_{j=1}^n \frac{1}{\sigma_j\sqrt{2\pi}}exp^{- (\frac{(x-\mu_j)^2}{2\sigma_j^2})} j=1np(xj;μj,σj2)=j=1nσj2π 1exp(2σj2(xμj)2)

  • 整体分布建模(考虑了特征间的相关性)
    p ( x ; μ , ∑ ) = 1 ( 2 π ) n 2 ∣ ∑ ∣ 1 2 e x p ( − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) ) p(x;\mu,\sum)=\frac{1}{(2\pi)^\frac{n}{2}|\sum|^{\frac{1}{2}}}exp{(-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu))} p(x;μ,)=(2π)2n211exp(21(xμ)T1(xμ))

联合分布算法的缺点:
1、计算成本更高
2、必须满足 m > n m>n m>n,否则协方差矩阵 ∑ \sum 不可逆

你可能感兴趣的:(机器学习)