机器学习整理(异常检测和高斯分布)
异常检测
异常检测是一种无监督学习算法,选定一些特征作为输入,输出为概率 $p(x)$ ,当 $p(x_{test}) < \epsilon$ 时,概率 $p$ 小于异常的阈值 $\epsilon$ , 那么判断样本为异常样本。使用场景有飞机引擎的异常检测,用户行为异常检测,数据中心的机器是否异常等。
高斯分布有两个参数,均值 $\mu$ 和方差 $\sigma$,在几何上分别控制分布的中心点和曲线陡峭程度。
计算过程
高斯分布参数的计算过程:
- 选择可能会导致异常的特征作为输入,并且要满足高斯分布,如果不满足高斯分布,通常对数据取一次 $log$。
- 计算参数 $\mu_j = \dfrac{1}{m}\sum_{j=1}^{m} x_j$ 和参数 $\sigma^2=\dfrac{1}{m} \sum_{j=1}^{m}(x_j-\mu_j)^2$ 。
当计算参数均值 $\mu$ 和方差 $\sigma$ 后就得到各特征的高斯分布,当有新的样本需要进行检测的时候,计算概率: $$ p(x) = \prod_{j=1}^{n} p(x_j;\mu_j, \sigma^2_j) =\prod_{j=1}^{n} \dfrac{1}{\sqrt{2\pi}\sigma_j} exp(-\dfrac{(x_j-\mu_j)^2}{2\sigma^2}) $$ 其中,$\prod$ 符号代表乘积,如果多个特征纬度的高斯概率相乘小于$\epsilon$ ,那么就能判断该样本为异常样本。
异常检测算法的评估方法是通常是用 F1_score、召回率和精度,还有TP/FP/FN/TN来判断。
异常检测和逻辑回归的区别
- 监督学习:通常有大量的正负样本,基本不会出现严重的样本倾斜。
- 异常检测:只有极少量的异常样本,并且未来的异常情况和曾经的异常情况不相同。
异常检测的错误修正,如果异常检测预测失败了,需要找出原因,提取出新的特征加入到概率计算中去。
多变量高斯分布
多变量高斯分布不再仅仅对单变量建模(输入$x_j$),不同变量之间变化会受到影响,计算过程中的参数也变成了均值矩阵 $\mu$ 和协方差矩阵 $\Sigma$。
均值矩阵 $\mu$ : $$\mu = \dfrac{1}{m}\sum_{j=1}^{m} x_j$$ 协方差矩阵 $\Sigma$ : $$ \Sigma = \dfrac{1}{m}\sum_{j=1}^{m} (x_i - \mu)(x_i - \mu)^T $$ 多变量高斯分布为: $$ p(x_i; u_i, \Sigma) = \dfrac{1}{(2\pi)^\dfrac{n}{2}|\Sigma|^{\dfrac{1}{2}}} exp(-\dfrac{1}{2}(x - \mu)^T\Sigma^{-1}(x-\mu)) $$
和普通的高斯分布的区别在于,多变量高斯分布的特征之间是会相互影响的,而普通高斯分布的概率计算是 $p(x1_,x_2,\dots,x_n) = p(x_1) * p(x_2) * \dots * p(x_n)$ ,不同特征之间是相互割裂的。
普通的高斯分布通常是以 $x_1=k1,x_2=k_2\dots,x_n=k_n$ 轴对称的,其中 $k$ 为常量:
而多变量高斯分布的则不同,因为多特征之间会产生关联:
看上去多变量高斯分布会很好,但在实际中,多变量高斯分布的计算会更加复杂,并且有数学上的要求样本数量 $m$ 必须大于特征数量 $n$ ,实际使用过程中更是要求 $m » n$ 。原始高斯分布可以手动添加多个原始特征的组合作为一个新的特征输入,使得不同特质之间存在关联关系。