多元高斯分布(multivariate gaussian distribution)有一些优势也有一些劣势,它能捕获一些之前算法检测不出来的异常
一个例子:为什么要引入多元高斯分布
使用数据中心监控机器的例子,有两个features,x1:CUP Load, x2:Memory Use.将这两个features当做高斯分布来进行建模,如上图所示。
假如在测试集中有一个如图上方的绿色的样本,它的x1的值约为0.4,x2的值约为1.5。看起来它应该被当成一个异常的数据,因为它远离蓝色线框里面的大部分的数据,这个数据的memory use很大,但是CPU load却小,这在训练集中是没有出现的情况,一般来说memory use与CPU Load是呈线性增长的,所以这个数据应该是异常的。但是我们的异常检测算法会将它判断为异常吗?在x1与x2的高斯分布图上,p(x1)与p(x2)并不是很小,值都还一般大,比它们值小的点存在一些,所以异常检测算法不会将这个点判断为异常点,这与我们的期望不符合。
实际上我们的异常检测算法并不能检测我们那个蓝色的样本范围,检测的是粉色的样本范围(在粉色圈圈上的p(x)的值相同),图中两个绿色的点在同一个粉色圈圈上,我们的异常检测算法判定它们的概率相同,实际上上面一个绿色点的p(x)要比下面一个绿色点的p(x)要大,所以我们需要对我们的异常检测算法进行改进,所以会使用多元高斯分布。
多元高斯(正态)分布
多元高斯分布不是将x1,x2.....分别进行建模,而是将它们做为一个整体一起来建模求p(x),其中它的参数为u(u为一个n维向量),∑为一个n*n维的矩阵,p(x)的公式如上图所示,其中|∑|为∑的行列式(deteminant)
一些多元高斯分布的例子:分布图
第一个多元高斯分布,它在(0,0)的位置取最大值,∑为协方差矩阵,图中为一个单位矩阵,描述的是x1与x2的方差(即变化率),下面的是一个俯视图,表示在图中暗红色部分取值最大,向外面扩张取值逐渐变小。
第二个多元高斯分布较第一个∑变小了,即方差变小了,表示x1,x2的变化范围变小了,则图形更高更尖了(因为那个鼓包面下面的体积为1),映射到平面上的图形x1,x2的变化率变小了,即圆圈的面积变小了。
第三个多元高斯分布∑变大了,即方差变大了,表示x1,x2的变化范围变大了,则图形更扁平了,映射到平面上的圆圈的范围面积变大了,因为x1,x2的变化率变大了。
上面图中第一个多元高斯分布,将x1的方差减小到0.6,x2的方差仍为1,则表示在x1的范围变小了,x2比x1的范围大
第二个图中x1的方差为2,表示x1的范围变大了,即随着x1远离0,x1的下降缓慢,x2的下降快。
上图第一个图中的高斯分布,x2的方差变小了,即x2的取值范围变小了,较x1的取值范围,映射到平面上是一个椭圆。
第二个图的高斯分布,x2的方差为2,即x2的取值范围变大了,较x1的取值范围,映射到平面上也是一个椭圆。
可以利用多元高斯分布对数据的相关性进行建模,改变协方差矩阵非主对角线上的元素,
这时可以建立x1与x2相减性高的模型,上图第一幅图x1与x2同时大或者同时小
当将非主对角线上的元素由0.5增大到0.8时,图像变窄变尖,映射到平面上的图变窄(椭圆图变窄)
当非主对角线上的元素为负数时,表示x1与x2呈现负相关性,当数值由-0.5变为-0.8时,图形变窄变尖。
当改变u值时,会改变整个高斯分布的峰值点,随着u值的改变,峰值点会移动。
总结
1>多元高斯分布能够描述两个变量之间的关系,是正相关关系还是负相关关系