当我们的训练集的分布不符合高斯分布时,我们可以通过转换将其变成服从高斯分布:
误差分析算法:
我们先用训练集来拟合参数(均值和方差),然后通过验证集来找出分析错误的数据,从而从中发现新的异常特征,然后加入新的异常特征,最后用测试集来检测是否提高了性能。所以这里也是告诉我们为什么要将验证集和测试集分开,因为如果加入新的异常特征后,还是用验证集的数据来验证性能是否提升,这是不合理的,因为一定会有所提升,我们并没有加入新的数据。
我们以计算机中心数据来举例说明手动增加有关联的特征。
如下,我们有x1、x2、x3、x4这些特征,但是我们发现x3cpu负载和x4网络流量有正相关的关系,这时我们可以增加一个特征x5来表示它们的比值,从而可以根据x5的大小来判断是否发生异常。
但是有时候,我们发现一个异常的样本但是算法却给出非异常的结果。如下图所示:
这是要由于两个特征的p(xi)都比较大,所以两者相乘也没有小于门阀值。
所以由于以上的情况,我们引入了多元高斯分布的概念:
多元高斯分布的参数:
前者表示均值,后者为协方差矩阵
p(x)的公式发生了变化,但是原理相同。
参数的变化引起的高斯分布图像的变化:
改变协方差主对角线数据
改变协方差副对角线数据
改变均值的大小:
参数(均值和协方差矩阵)的计算公式:
多元高斯算法的思想:
1、根据训练集来拟合参数
2、对给出的新的数据计算出P(x)
3、与门阀值进行比较从而判断是否异常
初始模型和多元高斯分布的比较:
多元的协方差矩阵除了主对角线是方差外,其他的都是0。
当存在相关的特征是,我们可以通过手动添加特征,从而使用原始模型。当我们也可以直接使用多元高斯模型,这样不用手动增加特征。
原始模型适用的n可以很大,但是多元模型,由于协方差矩阵,对于较大的n,计算上花费的时间代价太多。
当我们的训练集个数比较少时,使用原始模型,可以很好的拟合参数;
但是对于多元模型,只有当m远大于n,才能很好的拟合参数特别是协方差矩阵。