Andrew Ng Machine Learning 专题【Anomaly Detection】

此文是斯坦福大学,机器学习界 superstar — Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记。力求简洁,仅代表本人观点,不足之处希望大家探讨。
课程网址:https://www.coursera.org/learn/machine-learning/home/welcome

Week 9 后半部分 Recommender Systems:http://blog.csdn.net/ironyoung/article/details/49340133

Week 9:

  1. 异常检测 & 高斯分布

    1. 异常检测是一种介于监督学习与非监督学习之间的机器学习方式。一般用于检查大规模正品中的小规模次品。根据单个特征量的概率分布,从而求出某个样本正常的概率,若正常的概率小于阈值,即 p(x)<ϵ 视其为异常(次品)。正品与次品的 label 值 y 定义为:

      y={01if p(x)ϵif p(x)<ϵ

      如果某个样本由 x1,x2 两个变量决定,如下图红色叉所示:
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第1张图片
      同一个圆圈内部,表示的是成为正品的概率相同。越中心的圆圈内部正品率越高。越外层的圆圈内正品率越低。

    2. 异常检测一般将每个特征量的分布假设为正态分布(如果特征量与正态分布差距很大,之后我们会提到方法对其进行修正)。为什么是正态分布?因为在生产与科学实验中发现,很多随机变量的概率分布都可以近似地用正态分布来描述(猜测正确的概率更大)。因此,以下稍微介绍一下正态分布的基础知识,如果很熟悉的同学可以略过这部分。

    3. 正态分布(高斯分布),包含两个参数:均值 μ (分布函数取峰值时所对应横坐标轴的值),与方差 σ2 (标准差为 σ ,控制分布函数的“胖瘦”)。如果变量 x 满足于正态分布,将其记为 xN(μ,σ2) 。而取某个 x 的对应正品概率为: p(x)=12πσe(xμ)22σ2

    4. 均值 μ=1mi=1mx(i) ,方差 σ2=1mi=1m(x(i)μ)2
    5. 正态分布曲线与坐标轴之间的面积(即函数积分)恒定为 1,因此“高”曲线必然“瘦”,“矮”曲线必然“胖”:
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第2张图片
      由图可知,标准差 σ 控制着分布函数的“胖瘦”。原因是因为标准差有关的取值范围,有着固定的分布概率(积分):
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第3张图片
  2. 异常检测算法流程

    1. 我们拥有一组训练数据: x(1),x(2),...,x(m) ,每个样本有着 m 个特征量 x1,x2,...,xn
      • 将每个样本投影到不同的特征的坐标轴上,基于样本得到各个特征的概率正态分布曲线
      • 假设各个特征的概率是独立的,因此单个样本的异常概率为
        p(x)=p(x1;μ1,σ21)×p(x2;μ2,σ22)×...×p(xn;μn,σ2n))=i=1np(xj;μj,σ2j)
      • 各个特征的均值为 μj=1mi=1mx(i)j ,方差为 σ2j=1mi=1m(x(i)jμj)2
    2. 如果我们有着 10000 个正品样本,以及 20 个次品样本,我们应该这样区分训练集、交叉验证集,与测试集:
      • 训练集:6000个正品作为训练集(不包括次品样本)
      • 交叉验证集:2000 个正品样本 + 10 个次品样本。用以确定次品概率的阈值 ϵ
      • 测试集:2000 个正品样本 + 10 个次品样本。用以判断算法的检测效果
    3. 特别注意,因为使用异常检测的样本集合一般都是偏斜严重的(正品样本远远多于次品样本)。因此,需要在《专题【Machine Learning Advice】》http://blog.csdn.net/ironyoung/article/details/48491237 中提到的 precision/recall/F-score 来进行判断算法的检测效果。
  3. 异常检测 VS. 监督学习

    1. 监督学习方法与异常检测类似,处理对象都是一堆有 label 的样本,并且目标都是预测新样本的类别。那么什么时候使用监督学习的方法?什么时候使用异常检测的方法?
    2. 大体上,区别如下:
      • 样本比例:异常检测适用于正样本( y=1 ,即次品)个数远远小于负样本的个数的情况;监督学习适用于正负样本个数都非常多的情况
      • 异常规律:如果正样本( y=1 ,即次品)有着难以预测的模式,引起正样本的原因有很多很多,适用于异常检测;但是如果正样本有着固定的规律,比如感冒(病因已被研究透彻),可以尝试基于大量的样本使用监督学习的方法建立模式进行判断
  4. 特征选择

    1. 绝大多数情况下,特征量符合正态分布的分布情况。但如果特征的分布极端不符合,我们只能对其进行一些处理,以产生全新的特征来适用于异常检测算法。例如:
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第4张图片
      此时,我们有着变换后的特征变量: xnew=log(x1)
    2. 或者,一般情况下我们希望正品的 p(x) 很大,次品的 p(x) 很小。也就是说,在异常情况下某些特征应该变得极大或极小(正态分布中对于极大值或者极小值的对应概率都是极小的,所以整个样本的正品概率相乘会很容易满足 p(x)<ϵ ):例如创建新变量 xnew=x21x2 ,进一步放大了值增大或减小的程度。
  5. Multivariate Gaussion(选学)

    1. 如果一个样本有着多种特征,那么整体的正品概率可以按照以上提到的,视每个变量为互相独立然后各自概率相乘进行求解(我们称之为 original model)。但是,如果出现了下图这种正相关(负相关)极强的特征量,同心圆内部的正品概率必然不同,显然不合适了:
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第5张图片
      我们希望原本的同心圆可以更扁,可以变换方向,例如上图的蓝色椭圆。

    2. 此时,我们可以利用协方差矩阵,构造全新的多变量正态分布公式。此时我们用到的不再是方差 σ2 ,而是协方差矩阵 ΣRn×n Σ=1m(x(i)μ)(x(i)μ)T 。多变量正态分布的概率公式为:
      p(x)=1(2π)n/2|Σ|1/2e12(xμ)TΣ1(xμ) ,其中 |Σ| 表示协方差矩阵的行列式。

    3. 协方差矩阵与均值,对概率分布图的影响如下:
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第6张图片
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第7张图片
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第8张图片
      Andrew Ng Machine Learning 专题【Anomaly Detection】_第9张图片
  6. original model VS. multivariate Gaussian

    1. 如果一个样本有着多种特征,那我们究竟是应该使用 original model,还是 multivariate Gaussian?
    2. 大体上,区别如下:
      • 特征选择:original model 中的各个单个特征(或创造出的新特征),应该尽量满足在异常情况下产生概率极小的特性;而如果特征之间,发现了正相关或负相关的关系,应该用 multivariate Gaussian
      • 计算效率:original model 仅仅乘法,效率较高;multivariate Gaussian 需要计算协方差的逆矩阵,效率较低
      • 样本数目:original model 在训练集极小的情况下也可以计算;multivariate Gaussian 至少需要训练集样本数目大于特征数目,否则协方差矩阵无法求逆
    3. 协方差矩阵无法求逆(奇异矩阵)的情况极少发生,但是一旦发生,可能有以下几种原因:
      • 特征的数量大于训练集的样本个数
      • 冗余的特征变量( x1x2 或者 x3=x4+x5 这样的高度冗余情况)

编程作业答案:https://github.com/cnauroth/machine-learning-class

你可能感兴趣的:(机器学习,anomaly,Andrew-Ng,多变量正态分布)