简要声明
- 课程学习相关网址
- 由于课程学习内容为英文,文本会采用英文进行内容记录,采用中文进行简要解释。
- 本学习笔记单纯是为了能对学到的内容有更深入的理解,如果有错误的地方,恳请包容和指正。
- 非常感谢Andrew Ng吴恩达教授的无私奉献!!!
文章目录
专有名词
Anomaly detection | 异常检测 | Gaussian distribution | 高斯分布 |
---|---|---|---|
Multivariate Gaussian distribution | 多元高斯分布 |
Anomaly detection
Density estimation
- 假定m个样本都是正常的,判断一个新的样本数据x_test是否是异常的
- 给定无标签的训练集,对数据建模为概率p(x) ,设定阈值ε,如果概率p低于阈值ε则将其标记为异常 →在中心区域的p(x)值会非常大
Anomaly detection example
- Fraud detection 欺诈检测
- Manufacturing 工业检测
- Monitoring computers in a data center 数据中心的计算机监控
Gaussian distribution
Gaussian distribution
x ∼ N ( μ , σ 2 ) x\sim N(\mu,\sigma^2) x∼N(μ,σ2)
p ( x ; μ , σ 2 ) = 1 2 π ⋅ σ e x p ( − ( x − μ ) 2 2 σ 2 ) p(x;\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\cdot \sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2}) p(x;μ,σ2)=2π⋅σ1exp(−2σ2(x−μ)2)
- 假设x是一个实数的随机变量,如果x的概率分布服从高斯分布,其均值为μ,方差为σ的平方
Parameter estimation
- Dataet: {x(1), x(2), … x(m)}
- μ和σ2的极大似然估计
μ = 1 m ∑ i = 1 m x ( i ) \mu=\frac{1}{m}\sum_{i=1}^mx^{(i)} μ=m1i=1∑mx(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=1∑m(x(i)−μ)2
Anomaly detection Algorithm
Density estimation
-
Training set: {x(1), x(2), … x(m)}
x 1 ∼ N ( μ 1 , σ 1 2 ) x 2 ∼ N ( μ 2 , σ 2 2 ) x 3 ∼ N ( μ 3 , σ 3 2 ) ⋯ x n ∼ N ( μ n , σ n 2 ) x_1\sim N(\mu_1,\sigma_1^2) \\ x_2\sim N(\mu_2,\sigma_2^2) \\ x_3\sim N(\mu_3,\sigma_3^2) \\ \cdots \\ x_n\sim N(\mu_n,\sigma_n^2) \\ x1∼N(μ1,σ12)x2∼N(μ2,σ22)x3∼N(μ3,σ32)⋯xn∼N(μn,σn2)
p ( x ) = p ( x 1 ; μ 1 , σ 1 2 ) ⋅ p ( x 2 ; μ 2 , σ 2 2 ) ⋅ p ( x 3 ; μ 3 , σ 3 2 ) ⋯ p ( x n ; μ n , σ n 2 ) = ∏ j = 1 n p ( x j ; μ j , σ j 2 ) p(x)=p(x_1;\mu_1,\sigma_1^2)\cdot p(x_2;\mu_2,\sigma_2^2)\cdot p(x_3;\mu_3,\sigma_3^2)\cdots p(x_n;\mu_n,\sigma_n^2) \\ =\prod_{j=1}^np(x_j;\mu_j,\sigma_j^2) p(x)=p(x1;μ1,σ12)⋅p(x2;μ2,σ22)⋅p(x3;μ3,σ32)⋯p(xn;μn,σn2)=j=1∏np(xj;μj,σj2)
Anomaly detection Algorithm
-
Choose features x_i that you think might be indicative of anomalous examples →选择特征值x指出那些反常的样本 →提出一些特征,当出现异常样本时,特征值会异常地特别大或者特别小
-
Fit parameters μ_1, … , μ_n, σ_12, … , σ_n2 →计算均值和方差
μ j = 1 m ∑ i = 1 m x j ( i ) \mu_j=\frac{1}{m}\sum_{i=1}^mx_j^{(i)} μj=m1i=1∑mxj(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=1∑m(xj(i)−μj)2
-
Given new example x, compute p(x) →给出一个新样本,计算概率
p ( x ) = ∏ j = 1 n p ( x j ; μ j , σ j 2 ) = ∏ j = 1 n 1 2 π ⋅ σ j e x p ( − ( x j − μ j ) 2 2 σ j 2 ) p(x)=\prod_{j=1}^np(x_j;\mu_j,\sigma_j^2) = \prod_{j=1}^n\frac{1}{\sqrt{2\pi}\cdot \sigma_j}exp(-\frac{(x_j-\mu_j)^2}{2\sigma_j^2}) p(x)=j=1∏np(xj;μj,σj2)=j=1∏n2π⋅σj1exp(−2σj2(xj−μj)2)
-
如果概率p(x)小于阈值,则说明异常
Evaluating an anomaly detection system
The importance of real‐number evaluation
- 当为某个应用开发一个学习算法时,需要进行一系列的选择,如果有某种方法通过返回一个实数来评估算法,对这些选择做出决定往往会容易很多
- 假设有一些带标签的数据,指明哪些是异常样本和正常样本 ( y=0 if normal 正常, y=1 if anomalous 异常).
- 把训练集看作无标签的包含大量正常样本的集合 →无差异样本 →x^(1), x^(2), … , x^(m),
- 交叉验证集和测试集用来评估异常检测算法 →包含异常数据 →(x_cv^(m_cv), y_cv^(m_cv))
- normal (y=0): Training set : CV : Test = 6:2:2
- anomalous (y=1): CV : Test = 1:1
Algorithm evaluation
-
Fit model p(x) on training set {x(1), x(2), … x(m)} →使用训练集拟合模型p(x) →把m个无标签样本用高斯函数来拟合
-
On a cross validation/test example , predict y →在交叉验证集和测试集中预测 y
y = { 1 i f p ( x ) < ε ( a n o m a l y ) 0 i f p ( x ) ≥ ε ( n o r m a l ) y=\begin{cases} 1 \qquad if\ p(x)<\varepsilon\ (anomaly) \\ 0 \qquad if\ p(x)\ge \varepsilon\ (normal) \end{cases} y={1if p(x)<ε (anomaly)0if p(x)≥ε (normal)
-
Possible evaluation metrics 评价指标 → 第九章 | 机器学习系统设计
- True positive 真阳性, false positive 假阳性, false negative 假阴性, true negative 真阴性
- Precision 查准率 /Recall 召回率
- F_1‐score
-
use cross validation set to choose parameter ε →尝试去使用交叉验证集选择阈值ε
Anomaly detection vs. supervised learning
- 正样本数量很少,负样本数量多 →异常检测算法;在合理范围内有大量的正样本和负样本 →监督学习
- 异常检查:经常有许多不同类型的异常,有很少数量的正样本,很难从小数量的正样本中学习异常是什么,新异常可能跟正样本完全不一样
- 监督学习:有足够数量的正样本或是一个已经能识别正样本的算法,未来可能出行的正样本与当前训练集中的正样本类似
Choosing what features to use
Non‐gaussian features
- 即使数据不是高斯分布,算法往往也能正常运行
- 如果数据不是高斯分布,会对数据进行一些不同的转换,使得它看上去更接近高斯分布
- 对数据进行一次对数转换 log(x) →将x替换成log(x)
- 用log(x+c) 取代 x
- 用x的平方根来取代 x,也就是x1/2
- 用x的三分之一次幂取代x,也就是x1/3
Error analysis for anomaly detection
- Want p(x) large for normal examples x. p(x) small for anomalous examples x →希望在正常样本p(x)大,在异常样本p(x)小
- Most common problem 最普遍的问题
- p(x) is comparable (say, both large) for normal and anomalous examples →p(x)是可比较的(当样本正常和异常时p(x)的值都比较大
- 错误检测:通过观察出错样本,判断是否需要增加新的特征,来帮助算法找到异常样本和正常样本的区别 →看看哪里出错了,看看这个算法没有标记出来的异常样本,看看它是否能启发你创造一些新特征
- 选择既不会特别大也不会特别小的特征,如果特征互为线性关系,可创造一个新特征对两个线性关系的特征相除
Multivariate Gaussian distribution
- 异常检查不能识别椭圆形这种互为线性关系的特征
Multivariate Gaussian (Normal) distribution
p ( x ; μ , Σ ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x;\mu,\Sigma)=\frac{1}{(2\pi)^{\frac{n}{2}} |\Sigma|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)) p(x;μ,Σ)=(2π)2n∣Σ∣211exp(−21(x−μ)TΣ−1(x−μ))
- 建立一个整体的p(x)模型,参数是向量μ和协方差矩阵Σ
- 协方差矩阵Σ可以改变多元高斯分布的形状,向量μ改变位置
Anomaly detection with the multivariate Gaussian
p ( x ; μ , Σ ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x;\mu,\Sigma)=\frac{1}{(2\pi)^{\frac{n}{2}} |\Sigma|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)) p(x;μ,Σ)=(2π)2n∣Σ∣211exp(−21(x−μ)TΣ−1(x−μ))
μ = 1 m ∑ i = 1 m x ( i ) \mu=\frac{1}{m}\sum_{i=1}^mx^{(i)} μ=m1i=1∑mx(i)
Σ = 1 m ∑ i = 1 n ( x ( i ) − μ ) ( x ( i ) − μ ) T \Sigma = \frac{1}{m}\sum_{i=1}^n(x^{(i)}-\mu)(x^{(i)}-\mu)^T Σ=m1i=1∑n(x(i)−μ)(x(i)−μ)T
- Fit model p(x) by setting →用数据集设定μ和Σ来拟合模型
- Given a new example x, compute p(x) →给一个新样本x,用多元高斯分布公式来计算p(x)
- 如果p(x)小于阈值 ε 就标记该样本为异常
Original model vs. multivariate Gaussian
- 原始模型是特殊情况下的多元高斯分布 →通过限制 p(x)的分布是轴对称的 →当协方差矩阵Σ在非对角线上都是0
- 通过异常的组合值来捕捉异常样本 →对于原始模型需要创建额外的特征,对于多元高斯模型能自动捕捉不同特征之间的关系
- 原始模型的一个巨大优势是计算成本较低 →能适应数量巨大的特征;对于多元高斯模型需要计算协方差矩阵Σ的逆,计算成本十分昂贵
- 对于原始模型,即使有一个较小的有一定相关性的训练集也能顺利运行;对于多元高斯模型,必须保证m大于n(样本数量大于特征数量)否则协方差矩阵Σ是一个奇异矩阵,不可逆
- 如果在拟合多元高斯模型的时候发现协方差矩阵Σ是奇异或者不可逆的,通常有两种情况没有满足,一是没有满足m大于n的条件,二是存在冗余的特征(线性相关)