本文重点
在异常检测算法中,我们要做的事情之一就是使用正态(高斯)分布来对特征向量进行建模p(xi;μi,σi²),所以输入到算法中的特征变量很重要。
特征变量不符合高斯分布怎么办
首先我们需要知道一点,有些特征变量的数据并不符合高斯分布,但是我们假设它们符合高斯分布,这样我们可以快速求出该变量的μ和σ。虽然不是高斯分布,但是它也可以良好的运行异常检测算法。
如图所示,该特征就是不符合高斯分布,但是我们照样可以将其假设为高斯分布,但是最好我们对其进行转换,使得数据符合高斯分布这样会更好一些,通常使用对数logx的方式就可以将数据进行转化,使之更像高斯分布:
常常使用对数函数: = ( + ),其中 为非负常数,在 python 中,通常用 np.log1p()函数,1就是 ( + 1),可以避免出现负数结果
误差分析
我们现在解决了数据转换的问题,能够让特征变得更符合高斯分布,但是现在的问题是选择什么样的特征输入到算法中这个问题我们还没有解决。我们通常的办法就是通过一误差分析。
也就是说我们先完成训练出一个学习算法,然后在一组交叉验证集