Anormal Detection异常检测
1.Introduction
1.1 Motivation
异常检测的使用场景:
- Fraud detection
异常交易行为检测、反欺诈 - Manufacturing
异常工业零件检测 - Monitoring computers in a data center
数据中心异常计算机检测
1.2Mathematics
假设
x
(
i
)
(
i
=
1
,
2
,
.
.
.
,
m
)
x^{(i)}(i=1,2,...,m)
x(i)(i=1,2,...,m)为总体X中的样本,总体X服从正态分布,
X
N
(
μ
,
δ
2
)
X~N(\mu,\delta^2)
X N(μ,δ2)
总体均值
μ
\mu
μ,总体方差
δ
2
\delta^2
δ2的估计量分别为:
μ
=
1
m
∑
i
=
1
m
x
(
i
)
\begin{aligned} \mu=\frac{1}{m}\sum_{i=1}^mx^{(i)} \end {aligned}
μ=m1i=1∑mx(i)
δ
2
=
1
m
∑
i
=
1
m
(
x
(
i
)
−
μ
)
2
\begin{aligned} \delta^2=\frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu)^2 \end {aligned}
δ2=m1i=1∑m(x(i)−μ)2
(正确的总体方差的无偏估计量应除以m-1,简单起见,机器学习中不做此区分)
判断
x
(
i
)
x^{(i)}
x(i)是否为异常值的方法:
1.给定阈值
ϵ
ϵ
ϵ
2.将
x
(
i
)
x^{(i)}
x(i)带入正态分布的概率密度函数
p
(
x
;
μ
,
δ
2
)
=
1
δ
2
π
e
(
−
(
x
−
μ
)
2
2
δ
2
)
p(x;\mu,\delta^2)=\frac{1}{\delta\sqrt[]{2\pi}}e^{(-\frac{(x-\mu)^2}{2\delta^2})}
p(x;μ,δ2)=δ2π1e(−2δ2(x−μ)2)
3.若
p
(
x
(
i
)
;
μ
,
δ
2
)
<
ϵ
p(x^{(i)};\mu,\delta^2)<ϵ
p(x(i);μ,δ2)<ϵ,则
x
(
i
)
x^{(i)}
x(i)为异常值
1.3 Algorithm
Training set { x ( 1 ) , x ( 2 ) , . . . , x ( m ) x ^{(1)} ,x^{(2)},...,x^{(m)} x(1),x(2),...,x(m)}
假设各特征变量互相独立且都服从正态分布,则n个变量的联合概率密度函数为
p
(
x
;
μ
,
δ
2
)
=
∏
j
=
1
n
p
(
x
j
;
μ
j
,
δ
j
2
)
=
∏
j
=
1
n
1
δ
j
2
π
e
(
−
(
x
μ
j
)
2
2
δ
j
2
)
\begin{aligned} p(x;\mu,\delta^2)=\prod_{j=1}^np(x_j;\mu_j,\delta^2_j)=\prod_{j=1}^n\frac{1}{\delta_j\sqrt[]{2\pi}}e^{(-\frac{(x\mu_j)^2}{2\delta_j^2})} \end {aligned}
p(x;μ,δ2)=j=1∏np(xj;μj,δj2)=j=1∏nδj2π1e(−2δj2(xμj)2)
setp1:选择可用于异常检测的特征
比如:在异常用户中检测,可选的特征包括登陆频率、访问次数、交易次数、发帖次数、打字速度等
step2: 参数估计
μ
j
=
1
m
∑
i
=
1
m
x
j
(
i
)
\begin{aligned} \mu_j=\frac{1}{m}\sum_{i=1}^mx_j^{(i)} \end {aligned}
μj=m1i=1∑mxj(i)
δ
j
2
=
1
m
∑
i
=
1
m
(
x
j
(
i
)
−
μ
j
)
2
\begin{aligned} \delta_j^2=\frac{1}{m}\sum_{i=1}^m(x_j^{(i)}-\mu_j)^2 \end {aligned}
δj2=m1i=1∑m(xj(i)−μj)2
step3: 给定新样本x,计算p(x),并与阈值ϵ比较
如果
p
(
x
)
<
ϵ
p(x)<ϵ
p(x)<ϵ,则x为异常样本
2.Building an Anomaly Detection System
如何评估一个异常检测系统
2.1Developing an Anormaly 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)<ϵ
p(x)<ϵ时预测
y
=
1
y=1
y=1,反之
y
=
0
y=0
y=0
Step 3:用F1 Score评估模型效果
F1的计算参见《偏斜数据集的处理》:
CV集还可用于ϵ的选择:多次尝试,取使F1 Score最大的ϵ
2.2Choosing what features to use
特征的选择会显著影响异常检测算法的效率
理想的特征:
- 有代表性
在异常情况下很大或者很小 - 正态分布
非正态分布的特征,处理后使其见变成渐进的正态分布,如log(x)
eg: 特征的构建
在数据中心异常计算机检测中,可使用 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} networktrafficCPUload
3.Multivariate Gaussian/Normal Distribution
异常检测的两种算法:
- 每个特征分开建模(假设每个特征相互独立)
∏ j = 1 n p ( x j ; μ j , δ j 2 ) = ∏ j = 1 n 1 δ j 2 π e ( − ( x μ j ) 2 2 δ j 2 ) \begin{aligned} \prod_{j=1}^np(x_j;\mu_j,\delta^2_j)=\prod_{j=1}^n\frac{1}{\delta_j\sqrt[]{2\pi}}e^{(-\frac{(x\mu_j)^2}{2\delta_j^2})} \end {aligned} j=1∏np(xj;μj,δj2)=j=1∏nδj2π1e(−2δj2(xμj)2) - 整体分布建模(考虑特征间的相关性)
p ( x ; μ , ∑ ) = 1 ∣ ∑ ∣ 1 2 ( 2 π ) n 2 e x p ( − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) ) \begin{aligned} p(x_;\mu_,\sum)=\frac{1}{|\sum|^{\frac{1}{2}}(2\pi)^{\frac{n}{2}}}exp(-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu)) \end {aligned} p(x;μ,∑)=∣∑∣21(2π)2n1exp(−21(x−μ)T∑−1(x−μ))
联合分布算法的缺点:
1、计算成本更高
2、必须满足
m
>
n
m>n
m>n ,否则协方差矩阵
∑
∑
∑不可逆
4.Anomaly Detection vs. Supervised Learning
之前我们构建的异常检测系统也使用了带标记的数据,与监督学习有些相似,下面的对比有助于选择采用监督学习还是异常检测:
两者比较:
Recommender Systems 推荐系统
1. Content-based recommendations
思考:已有用户对部分电影的评价(1-5星),且已知电影的内容构成,如何预测用户对没看过的电影的评价并作出推荐?
1.1 Problem formulation
首先给出变量申明:
n u : n_u: nu: 用户数量
n m : n_m: nm: 电影数量
r ( i , j ) r(i,j) r(i,j)=1 用户j是否评价了电影i
y ( i , j ) : y(i,j): y(i,j): 用户j 对电影i 的评分,只有当 r(i,j)=1时有定义
x ( i ) : x^{(i)}: x(i):电影i的特征向量,如x1 表示其爱情成分比重,x2 表示其动作成分比重。x0 为偏置项,值为1.
θ ( j ) : θ^{(j)}: θ(j):用户j 的参数,如 θ 1 θ_1 θ1 表示其对爱情片的喜好程度, θ 2 θ_2 θ2 表示其对动作片的喜好程度。 θ 0 θ_0 θ0 为偏置项,值为1.
对于用户j 和电影i,预测其评价为 ( θ ( j ) ) T x ( i ) (θ^{(j)})^Tx^{(i)} (θ(j))Tx(i)
如下图中,
n
u
n_u
nu=4 ,
n
m
n_m
nm=5,右侧两栏是各个电影的特征。可以看出电影1、2、3属于爱情类电影,4、5属于动作类。观众3(Carol)对电影4和5评价很高,而对电影1和3评价很低,由此可以推断
(
θ
(
3
)
)
T
=
[
0
,
0
,
5
]
(θ^{(3)})^T=[0,0,5]
(θ(3))T=[0,0,5]的可能性较高。因此,观众3对电影2的打分应该是
(
θ
(
3
)
)
T
x
(
2
)
=
[
0
,
0
,
5
]
x
[
1
,
1
,
0.01
]
T
(\theta^{(3)})^Tx^{(2)}=[0,0,5]x[1,1,0.01]^T
(θ(3))Tx(2)=[0,0,5]x[1,1,0.01]T=0.05
1.2 Optimization objective
在一个基于内容的推荐系统算法中,我们假设对于我们希望推荐的东西有一些数据,这些数据是有关这些东西的特征。
在我们的例子中,我们可以假设每部电影都有两个特征,如x1代表电影的浪漫程度,x2 代表电影的动作程度。
我们要基于这些特征来构建一个推荐系统算法。
假设我们采用线性回归模型,我们可以针对每一个用户都训练一个线性回归模型,如
θ
(
1
)
θ^{(1)}
θ(1)是第一个用户的模型的参数。
对于用户j 和电影i,预测其评价为
(
θ
(
j
)
)
T
x
(
i
)
(θ^{(j)})^Tx^{(i)}
(θ(j))Tx(i)
代价函数:该线性回归模型的代价为预测误差的平方和,加上正则化项
m
i
n
1
2
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
(
θ
k
(
j
)
)
2
\begin{aligned} min\frac{1}{2}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2 + \frac{\lambda}{2}(\theta_k^{(j)})^2 \end {aligned}
min21i:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λ(θk(j))2
其中 i : r ( i , j ) i:r(i,j) i:r(i,j)表示我们只计算那些用户 j j j评过分的电影。在一般的线性回归模型中,误差项和正则项应该都是乘以1/2m,在这里我们将m去掉。并且不对方差项 θ 0 θ_0 θ0进行正则化处理。
上面的代价函数只是针对一个用户的,为了学习所有用户,我们将所有用户的代价函数求和:
m
i
n
θ
(
1
)
,
.
.
.
,
θ
(
n
u
)
1
2
∑
j
=
1
n
u
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
θ
k
(
j
)
)
2
\begin{aligned} min_{\theta^{(1)},...,\theta^{(n_u)}}\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2 + \frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^n(\theta_k^{(j)})^2 \end {aligned}
minθ(1),...,θ(nu)21j=1∑nui:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2
如果我们要用梯度下降法来求解最优解,我们计算代价函数的偏导数后得到梯度下降的更新公式为:
2 Collaborative Filtering 协同过滤
2.1 Introduction
基于内容的推荐系统中,对于每一部电影,我们都掌握了可用的特征,使用这些特征训练出了每一个用户的参数。相反地,如果我们拥有用户的参数,我们可以学习得出电影的特征。
m
i
n
x
(
1
)
,
.
.
.
,
x
(
n
u
)
1
2
∑
i
=
1
n
m
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
i
=
1
n
m
∑
k
=
1
n
(
x
k
(
i
)
)
2
\begin{aligned} min_{x^{(1)},...,x^{(n_u)}}\frac{1}{2}\sum_{i=1}^{n_m}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2 + \frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^n(x_k^{(i)})^2 \end {aligned}
minx(1),...,x(nu)21i=1∑nmi:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2
但是如果我们既没有用户的参数,也没有电影的特征,这两种方法都不可行了。协同过滤算法可以同时学习这两者。
我们的优化目标便改为同时针对 x x x和 θ θ θ进行。
J ( x ( 1 ) , . . . , x ( n m ) , θ ( 1 ) , . . . , θ ( n u ) ) = 1 2 ∑ ( i , j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( θ k ( j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 \begin{aligned} J(x^{(1)},...,x^{(n_m),\theta^{(1)}},...,\theta^{(n_u)})=\frac{1}{2}\sum_{(i,j):r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2 + \frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^n(\theta_k^{(j)})^2+ \frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^n(x_k^{(i)})^2 \end {aligned} J(x(1),...,x(nm),θ(1),...,θ(nu))=21(i,j):r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(θk(j))2+2λi=1∑nmk=1∑n(xk(i))2
对代价函数求偏导数的结果如下:
x
k
(
i
)
:
=
x
k
(
i
)
−
α
(
∑
(
i
,
j
)
:
r
(
i
,
j
)
=
1
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
x
k
j
+
λ
x
k
(
i
)
)
\begin{aligned} x_k^{(i)}:=x_k^{(i)} -\alpha(\sum_{(i,j):r(i,j)=1}(\theta^{(j)})^Tx^{(i)}-y^{(i,j)}x_k^j+ \lambda x_k^{(i)}) \end {aligned}
xk(i):=xk(i)−α((i,j):r(i,j)=1∑(θ(j))Tx(i)−y(i,j)xkj+λxk(i))
θ k ( i ) : = θ k ( i ) − α ( ∑ ( i , j ) : r ( i , j ) = 1 ( θ ( j ) ) T x ( i ) − y ( i , j ) θ k j + λ θ k ( j ) ) \begin{aligned} \theta_k^{(i)}:=\theta_k^{(i)} -\alpha(\sum_{(i,j):r(i,j)=1}(\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\theta_k^j+ \lambda \theta_k^{(j)}) \end {aligned} θk(i):=θk(i)−α((i,j):r(i,j)=1∑(θ(j))Tx(i)−y(i,j)θkj+λθk(j))
注:在协同过滤从算法中,我们通常不使用方差项,如果需要的话,算法会自动学得。
协同过滤算法使用步骤如下:
1.初始
x
(
1
)
,
.
.
.
,
x
(
n
m
)
,
θ
(
1
)
,
.
.
.
,
θ
(
n
u
)
x^{(1)},...,x^{(n_m)}, θ^{(1)},...,θ^{(n_u)}
x(1),...,x(nm),θ(1),...,θ(nu)为一些随机小值
2.使用梯度下降算法最小化代价函数
3.在训练完算法后,预测用户j 给电影i的评分,
(
θ
(
j
)
)
T
x
(
i
)
(θ^{(j)})^Tx^{(i)}
(θ(j))Tx(i)
通过这个学习过程获得的特征矩阵包含了有关电影的重要数据,这些数据不总是人能读懂的,但是我们可以用这些数据作为给用户推荐电影的依据。
例如,如果一位用户正在观看电影 x ( i ) x^{(i)} x(i)我们可以寻找另一部电影 x ( j ) x^{(j)} x(j),依据两部电影的特征向量之间的距离 ∣ ∣ x ( i ) − x ( j ) ∣ ∣ ||x^{(i)}-x^{(j)}|| ∣∣x(i)−x(j)∣∣的大小
2.2 Collaborative Filtering Algorithm 协同过滤算法
协同过滤优化目标:
给定
x
(
1
)
,
.
.
.
,
x
(
n
m
)
x^{(1)},...,x^{(n_m)}
x(1),...,x(nm)估计
θ
(
1
)
,
.
.
.
,
θ
n
u
\theta^(1),...,\theta^{n_u}
θ(1),...,θnu
m
i
n
θ
(
1
)
,
.
.
.
,
θ
(
n
u
)
1
2
∑
j
=
1
n
u
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
θ
k
(
j
)
)
2
\begin{aligned} min_{\theta^{(1)},...,\theta^{(n_u)}}\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2 + \frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^n(\theta_k^{(j)})^2 \end {aligned}
minθ(1),...,θ(nu)21j=1∑nui:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2
给定
θ
(
1
)
,
.
.
.
,
θ
n
u
\theta^(1),...,\theta^{n_u}
θ(1),...,θnu 估计
x
(
1
)
,
.
.
.
,
x
(
n
m
)
x^{(1)},...,x^{(n_m)}
x(1),...,x(nm)
同时最小化
θ
(
1
)
,
.
.
.
,
θ
n
u
\theta^(1),...,\theta^{n_u}
θ(1),...,θnu 和
x
(
1
)
,
.
.
.
,
x
(
n
m
)
x^{(1)},...,x^{(n_m)}
x(1),...,x(nm)
J ( x ( 1 ) , . . . , x ( n m ) , θ ( 1 ) , . . . , θ ( n u ) ) = 1 2 ∑ ( i , j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( θ k ( j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 \begin{aligned} J(x^{(1)},...,x^{(n_m),\theta^{(1)}},...,\theta^{(n_u)})=\frac{1}{2}\sum_{(i,j):r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2 + \frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^n(\theta_k^{(j)})^2+ \frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^n(x_k^{(i)})^2 \end {aligned} J(x(1),...,x(nm),θ(1),...,θ(nu))=21(i,j):r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(θk(j))2+2λi=1∑nmk=1∑n(xk(i))2
3 Vectorization_ Low Rank Matrix Factorization低秩矩阵分解
在上几节视频中,谈到了协同过滤算法,本节视频中将会讲到有关该算法的向量化实现,以及说说有关该算法可以做的其他事情。
举例子:
1.当给出一件产品时,你能否找到与之相关的其它产品。
2.一位用户最近看上一件产品,有没有其它相关的产品,你可以推荐给他。
实现一种选择的方法,写出协同过滤算法的预测情况。
我们有关于五部电影的数据集,我将要做的是,将这些用户的电影评分,进行分组并存到一个矩阵中。
我们有五部电影,以及四位用户,那么 这个矩阵 Y YY 就是一个5行4列的矩阵,它将这些电影的用户评分数据都存在矩阵里
然后推出评分,找到相关影片。
在既然已经对特征参数向量进行了学习,那么就会有一个很方便的方法来度量两部电影之间的相似性。例如说:电影 i有一个特征向量x(i) 你是否能找到一部不同的电影 j ,保证两部电影的特征向量之间的距离
x
(
i
)
x^{(i)}
x(i) 和
x
(
j
)
x^{(j)}
x(j)很小,那就能很有力地表明电影i和电影 j 在某种程度上有相似,至少在某种意义上,某些人喜欢电影 i,或许更有可能也对电影 j感兴趣。
通过这个方法,知道如何进行一个向量化的计算来对所有的用户和所有的电影进行评分计算。
推行工作上的细节:均值归一化
如果我们新增一个用户 Eve,并且 Eve 没有为任何电影评分,那么我们以什么为依据为Eve推荐电影呢?
我们首先需要对结果 Y Y Y矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值:然后我们利用这个新的 Y 矩阵来训练算法。
如果我们要用新训练出的算法来预测评分,则需要将平均值重新加回去 ( θ ( j ) ) T x ( i ) + μ i (θ^{(j)})^Tx^{(i)}+\mu_i (θ(j))Tx(i)+μi,预测对于Eve,我们的新模型会认为她给每部电影的评分都是该电影的平均分。