机器学习- 吴恩达Andrew Ng Week9 知识总结 Anomaly Detection
Posted 架构师易筋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习- 吴恩达Andrew Ng Week9 知识总结 Anomaly Detection相关的知识,希望对你有一定的参考价值。
Coursera课程地址
因为Coursera的课程还有考试和论坛,后续的笔记是基于Coursera
https://www.coursera.org/learn/machine-learning/home/welcome
异常检测 Anomaly Detection
1. 问题动机 Problem motivation
就像在其他学习问题中一样,我们得到了一个数据集X(1), X(2), …, X(m).
然后我们给出了一个新的例子,x(test), 我们想知道这个新例子是否异常/异常。
我们定义了一个“模型” p(x) ,它告诉我们样本不异常的概率。我们还使用阈值ϵ(epsilon) 作为分界线,这样我们就可以判断哪些样本是异常的,哪些不是。
异常检测的一个非常常见的应用是检测欺诈:
- X(i) = 用户 i 的活动特征
- 从数据模型 p(x)。
- 通过检查
p(x)<ϵ
来识别异常用户。
如果我们的异常检测器标记了太多异常示例,那么我们需要降低阈值 ϵ.
2. 高斯分布 Gaussian distribution
高斯分布是一个熟悉的钟形曲线,可以用一个函数来描述N( μ ,σ ^2)
.
令 x∈ℝ。如果 x 的概率分布是均值为 μ 的高斯分布,方差 σ^2
, 然后:
X~N( μ ,σ^2)
小 ∼ 或“波浪号”可以读作“分布为”。
高斯分布由均值和方差参数化。
Mu 或 μ 描述曲线的中心,称为均值。曲线的宽度由 sigma 或 σ 描述,称为标准偏差。
完整的功能如下:
我们可以通过简单地取所有示例的平均值来估计给定数据集中的参数 μ:
我们可以估计另一个参数,σ^2
,用我们熟悉的平方误差公式:
3. 算法 Algorithm
给定一组训练样本,{x(1), ..., x(m)}
其中每个示例都是一个向量, x∈R^n
.
在统计学中,这被称为对训练示例 x 中特征值的“独立假设”。
更简洁地,上面的表达式可以写成如下:
算法
选择功能x(i) 您认为可能表示异常示例。
4. 开发和评估异常检测系统 Developing and evaluating an anomaly detection system
为了评估我们的学习算法,我们采用一些标记数据,分为异常和非异常示例(如果正常,y = 0,如果异常,y = 1)。
在这些数据中,为训练 p(x) 的训练集取大部分良好的、非异常的数据。
然后,为您的交叉验证和测试集采用较小比例的混合异常和非异常示例(您通常会有更多的非异常示例)。
例如,我们可能有一个集合,其中 0.2% 的数据是异常的。我们取了这些示例中的 60%,对于训练集而言,所有这些示例都很好 (y=0)。然后我们取 20% 的样本作为交叉验证集(0.1% 的异常样本)和另外 20% 的测试集(另外 0.1% 的异常样本)。
换句话说,我们将数据分成 60/20/20 训练/CV/测试,然后在 CV 和测试集之间拆分异常示例 50/50。
算法评估:
在训练集上拟合模型 p(x){x(1), …, X(m)}
在交叉验证/测试示例 x 上,预测:
如果 p(x) < ϵ (异常),则 y=1
如果 p(x) ≥ ϵ ( normal ),则 y=0
可能的评估指标(参见“机器学习系统设计”部分):
- 真阳性、假阳性、假阴性、真阴性。
- 准确率/召回率
- F1 分数
请注意,我们使用交叉验证集来选择参数 ϵ
5. 异常检测与监督学习 Anomaly detection vs. supervised learning
我们什么时候使用异常检测,什么时候使用监督学习?
在以下情况下使用异常检测…
- 我们有非常少量的正例(y=1 … 0-20 个例子很常见)和大量的负例 (y=0)。
- 我们有许多不同“类型”的异常,任何算法都很难从正例中学习异常的样子;未来的异常可能看起来与我们迄今为止看到的任何异常示例都不同。
在以下情况下使用监督学习…
- 我们有大量正面和负面的例子。换句话说,训练集被更均匀地划分为类。
- 我们有足够的正面示例让算法了解新的正面示例是什么样的。未来的正面例子可能与训练集中的例子相似。
6. 选择要使用的功能 Choosing what features to use
这些功能将极大地影响您的异常检测算法的工作情况。
我们可以通过绘制数据的直方图并检查钟形曲线来检查我们的特征是否为高斯分布。
我们可以在没有钟形曲线的示例特征 x 上尝试的一些变换是:
- log(x)
- log(x+1)
- log(x+c) 其中c为常量
- x^(1/2)
- x^(1/3)
我们可以使用其中的每一个来尝试在我们的数据中实现高斯形状。
异常检测有一个错误分析程序,与监督学习中的程序非常相似。
我们的目标是使 p(x) 对于正常示例较大,对于异常示例较小。
一个常见的问题是当 p(x) 对两种类型的示例相似时。在这种情况下,您需要详细检查给出高概率的异常示例,并尝试找出可以更好地区分数据的新特征。
通常,选择在异常情况下可能具有异常大或异常小的值的特征。
7. 多元高斯分布(可选)Multivariate Gaussian distribution
多元高斯分布是异常检测的扩展,可能(也可能不会)捕获更多异常。
而不是建模 p(x1), p(x2), … 另外,我们将一次性对 p(x) 进行建模。我们的参数将是:
重要的效果是我们可以对椭圆形高斯轮廓进行建模,使我们能够更好地拟合可能不适合正常圆形轮廓的数据。
改变 Σ 会改变等高线的形状、宽度和方向。改变 μ 将移动分布的中心。
更多请参考:
- The Multivariate Gaussian Distribution http://cs229.stanford.edu/section/gaussians.pdf Chuong B. Do, October 10, 2008.
8. 使用多元高斯分布进行异常检测(可选)Anomaly detection using the multivariate Gaussian distribution
在用多元高斯分布进行异常检测时,我们通常计算 μ 和 Σ。然后我们使用上一节中的新公式计算 p(x) 并在 p(x) < ϵ 时标记异常。
p(x) 的原始模型对应于多元高斯,其中的轮廓 p( x ;μ ,Σ )
是轴对齐的。
多元高斯模型可以自动捕捉 x 的不同特征之间的相关性。
然而,原始模型保持了一些优点:它的计算成本更低(没有矩阵要求逆,这对于大量特征来说代价高昂)并且即使训练集规模很小也表现良好(在多元高斯模型中,它应该大于Σ 可逆的特征数)
参考
https://www.coursera.org/learn/machine-learning/supplement/gXdW5/lecture-slides
https://www.coursera.org/learn/machine-learning/resources/szFCa
以上是关于机器学习- 吴恩达Andrew Ng Week9 知识总结 Anomaly Detection的主要内容,如果未能解决你的问题,请参考以下文章
机器学习- 吴恩达Andrew Ng 编程作业技巧 for Week9 Anomaly Detection
机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集
机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集