异常检测主要用于非监督学习问题,但它又类似于一些监督学习问题,但又无法根据结果变量y 的值来确定数据是否真的是异常的。
3.3.1 异常检测与高斯分布
异常检测基本概念:
描述:给定假设数据都为正常的数据集\(\{x^{(1)}, x^{(2)} ,…, x^{(m)}\} x∈R^n\),判断测试数据\(x{test}\)属于正常数据的可能性\(p(x)\),即判断\(x{test}\)是不是异常的:
异常检测与监督学习:对于正样本的数量很少甚至为零的问题,通常使用的是异常检测算法。
高斯分布(正态分布):
基本概念:变量\(x\)符合高斯分布\(x~Ν(μ,σ^2)\)则其概率密度函数为:
- \(μ\)为变量\(x\)的均值:
- \(σ\)为变量\(x\)的方差:
- 统计学中对于方差通常只除以\(m-1\)。在实际使用中,到底是选择使用\(m\)还是\(m-1\)其实区别很小,只要有一个还算大的训练集,在机器学习领域更习惯使用\(m\) 。
高斯分布异常检测算法:
- 给定数据训练集:\(\{x^{(1)}, x^{(2)} ,…, x^{(m)}\} x∈R^n\)
- 计算每个特征的均值和方差:
- 给定新的实例x,根据独立估计,计算:
\(当p(x)<ℇ时,实例x为异常\)
3.3.2 异常检测系统评价
当在开发一个异常检测系统时,从带标记(异常或正常)的数据着手,从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。
评价方法:
- 将正常的数据随机分成训练集(60%)、交叉验证集(20%)和测试集(20%),将异常的数据随机分成交叉验证集(50%)和测试集(50%)
- 根据训练集,估计特征的平均值和方差并构建\(p(x)\)函数。
- 对交叉检验集,尝试使用不同的 \(ε \)值作为阀值,并预测数据是否异常,根据F\(F_1 Score\)查准率与查全率的比例来选择ε。
- 选出 \(ε \)后,针对测试集进行预测,计算异常检验系统的\(F_1 Score\)或查准率与查全率之比。
注意点:
特征处理:对于异常检测算法,所选择的特征要符合高斯分布,如果某个特征的分布不是高斯分布,异常检测算法也能够工作,但是最好还是将数据转换成高斯分布,如使用对数函数:\(x = log(x+c) ,其中c 为非负常数\)其中c 为非负常数;或者\(x=x^c , c 为0-1 之间的一个分数\) 等方法。
误差分析:一个常见的问题是一些异常的数据可能也会有较高的 \(p(x)\)值,因而被算法认为是正常的。这种情况下通过误差分析那些被算法错误预测为正常的数据,观察能否找出一些问题。如:需要增加一些新的特征,增加这些新特征后获得的新算法能够帮助更好地进行异常检测。
3.3.3 多元高斯分布与异常检测
多元高斯分布:
变量\(x\)符合多元高斯分布,则其概率密度函数为:
\(μ\)为变量\(x\)的均值:
\(Σ\)为变量\(x\)的协方差矩阵:
多元高斯分布异常检测算法:
- 给定数据集:\(\{x^{(1)}, x^{(2)} ,…, x^{(m)}\} x∈R^n\)
- 计算所有特征的平均值及协方差矩阵Σ:
- 给定新的实例x计算:当\(p(x)<ℇ\)时,实例\(x\)为异常.
多元高斯分布模型与原高斯分布模型的关系:
原高斯分布模型被广泛使用着,若特征之间在某种程度上存在相互关联的情况,可以通过构造新新特征的方法来捕捉这些相关性;若训练集不是太大,并且没有太多的特征,可以使用多元高斯分布模型。
当\(Σ\)为以下对角矩阵时,多元高斯分布,退化成原高斯分布。