美文网首页参数估计
机器学习实践项目之高斯分布

机器学习实践项目之高斯分布

作者: 十曰立 | 来源:发表于2017-10-19 14:59 被阅读1622次

    多元高斯分布与一元高斯分布的关系

    首先一维标准正态分布:

    高斯分布热力图

    由于一个参数则是二维的,两个参数就当然是三维的了,我们把这个三维图堪称热力图嘛(本来直观理解也是一样的嘛,概率越高的地方就越热,比如东京就是最热的地方,逃~),二维图你一根直线就可以卡范围了,三维下就是一个平面了(当然高纬度空间就是超平面咯!)就是下图中描红的位置,以下的区域都是异常样本!



    我们从顶上往下看,即投影下来,可以看到这个红色圈就是上面的切割平面与三维体的相交部分,圈内就是正常样本,圈外就是异常样本。

    高斯分布热力图投影

    数据集划分

    划分为训练集、交叉验证集跟测试集。

    算法评估

    由于实际场景中异常样本是极少的,所以整个数据集是非常偏斜的,我们不能单纯的用预测准确率来评估算法优劣,而是:(参考链接在这)

    • 真阳性、假阳性、真阴性、假阴性
    • 查准率(Precision)与 召回率(Recall)

    这里乍一看其实有点类似于逻辑回归,因为不就是二分类问题嘛!但是实际上不是的啊!
    监督学习其实就是拟合啊!它要求正负样本数量大小一致。

    有监督学习 异常检测
    数据分布均匀 数据非常偏斜,异常样本数目远小于正常样本数目
    可以根据对正样本的拟合来知道正样本的形态,从而预测新来的样本是否是正样本 异常的类型不一,很难根据对现有的异常样本(即正样本)的拟合来判断出异常样本的形态

    下面的表格则展示了二者的一些应用场景:

    有监督学习 异常检测
    垃圾邮件检测 故障检测
    天气预测(预测雨天、晴天、或是多云天气) 某数据中心对于机器设备的监控
    癌症的分类 制造业判断一个零部件是否异常
    ··· ···

    特征选择

    因为我们建立模型的基础是假设特诊满足高斯分布,那么要是特征不符合高斯分布呢?
    答案当然是整成高斯分布啊!
    我们一开始拿到的特征的分布可能是这样的:

    转换之前的特征 转换之后的特征

    其中对于这两个维度的数据,都服从正态分布:

    x1 x2

    如果现在在我们的测试集中,有一个异常数据点出现在下图的位置中:


    那么在这种情况下我们会发现,这一点对应的两个维度下的概率其实都不低,从p(x)的结果上,我们无法准确预测这个样本是否属于异常。产生这个问题的实际原因其实是这样的,从x1和x2这两个维度(注:这里是从两个纬度来看的,单单就某一维来看都是正常的,但是两维就是异常的,因为其实这两个变量之间是有一定的相关性的,你直接相乘处理进行判断的话相当于不去管相关性了,也就是业务的一些内在特征就把它给丢了)来看,我们的正常数据及时大多数集中分布在这样一个范围内:

    但我们使用之前的异常检测算法,其实是以中心区域向外以正圆的形式扩散的。也就是说距离中心区域距离相等的点,对应的p(x)都是一样的,所以我们可能无法检测到这一个异常样本,因为它也处在一个p(x)比较大的范围内:

    这里要这么理解:假如不认为两个特征之间有相关性的话,那么就是以(µ1,µ2)为中心,然后以σ1,σ2为半径画椭圆,因此画出来的极有可能就是粉红色的这些线,而我们真实的确实蓝色那个圈,因此直观上就可知道我们丢失了一些特征,从而拟合出现问题了;

    那么丢失的是什么呢? 显然就是特征相关性了。


    所以,为了解决异常检测算法的这一问题,接下来我解释改良版的异常检测算法,要用到叫做多元高斯分布(多元正态分布)的东西。

    定义

    多元高斯分布模型被定义为:

    其中, µ表示样本均值, ∑表示样本协方差矩阵
    多元高斯分布模型的热力图如下:

    然后新的测试样本到来时,你直接输入公式:

    最后,如果p(x)<ε时,就把它标记为是一个异常样本,反之,如果p(x)>=ε则不标记为异常样本。

    所以,如果使用多元高斯分布来解决异常检测问题,你可能会得到这样一个高斯分布的概率模型:


    所以,他可以正常的识别出之前用普通的异常检测算法无法正确检测的那个异常样本。

    多元高斯分布模型与一般高斯分布模型的差异

    原先的模型是这样的:p(x)=p(x1;µ1,σ21)×p(x2;µ2,σ22)×…×p(xn;µn,σ2n),事实上,可以证明我们原先的这种模型,是多元高斯模型的一种。

    实际上,一般的高斯分布模型只是多元高斯分布模型的一个约束,它将多元高斯分布的等高线约束到了如下所示同轴分布(概率密度的等高线是沿着轴向的):

    Screenshot-2017-10-19 斯坦福机器学习课程 第九周 (3)多元高斯分布

    何时使用多元高斯模型?何时使用原始模型?

    既然我们知道了原始的模型是多元高斯模型的一个特例,那么应该在什么时候用哪个模型呢?

    事实情况是,原始模型比较常用,而多元高斯模型比较少用。

    假设在你的样本中,x1和x2是线性相关的特征组合,下面是这两种算法在处理不正常的特征组合时的具体方式对比:

    一元高斯模型 多元高斯模型
    捕捉到这两个特征,建立一个新的特征x3(比如x3=x1/x2),去尝试手工组合并改变这个新的特征变量,从而使得算法能很好的工作。 自动捕捉不同特征变量之间的相关性。
    运算量小(更适用于特征变量个数n很大的情况) 计算更复杂(Σ是n×n的矩阵,这里会涉及两个n×n的矩阵相乘的逻辑,计算量很大)
    即使训练样本数m很小的情况下,也能工作的很好 必须满足m>n,或者Σ不可逆(奇异矩阵)。这种情况下,还可以帮助你省去为了捕捉特征值组合而手动建立额外特征变量所花费的时间。

    由此可以看出,基于多元高斯分布模型的异常检测应用十分有限。

    异常情况的应对
    当你在拟合多元高斯模型时,如果你发现协方差矩阵Σ是奇异的(不可逆的),一般只有两种情况:

    • 第一种是它没有满足m>n的条件
    • 第二种情况是,你有冗余特征变量 冗余特征变量的意思是出现了以下两种情况的任意一种:
      - 出现了两个完全一样的特征变量(你可能不小心把同一个特征变量复制了两份)
      - 如果你有x3=x4+x5,这里x3其实并没有包含额外的信息,相对于x4和x5来说,它就是冗余特征变量。

    这是你调试算法时的一个小知识,可能很少会遇到,但是一旦你发现Σ不可逆,那么首先需要从这两个方面来考虑解决方案。

    小结:多元高斯分布(Multivariate Gaussian Distribution)的形式很简单,就是一元高斯分布的在向量形式的推广。
    也就是说:引入协方差是为了自动地去发掘特征之间的关系的,假如特征之间独立那么就是似然估计模型了嘛,把各特征概率乘起来就好了。
    从上面这些图以及背景中可知,没引入协方差前,切割三维热力图就是平着切的,但是引入协方差后即可以对切割的超平面做一些拉伸旋转的操作,获得更好的切割边界,从而更好地进行分类,也就是找到了特怔之间的相关性嘛!

    相关文章

      网友评论

        本文标题:机器学习实践项目之高斯分布

        本文链接:https://www.haomeiwen.com/subject/wspduxtx.html