异常检测
异常检测的特点,异常检测的训练样本没有或者少量的正样本(异常样本),正负样本比例非常不均衡的情况。
异常检测可以采用三种处理方式:
- 当做分类问题处理
- 当做聚类问题处理
- 采用概率分布问题处理
分类算法
由于异常检测的特殊性,在将异常检测当做分类算法处理时,由于样本分布不均的情况,很难得到一个行之有效的算法,因此在使用时应该尽量扩充样本的数量,尤其正向样本的数量,同时,获取尽可能多的特征。在测试集或交叉验证集中需要尽可能包含较多的正向样本,来检验算法的优劣性。
算法的评价函数选择f1 Score来代替单纯的精度或召回率。
聚类问题
当作为聚类问题考虑时,例如在使用k-means算法将K设定为2,可能造成算法适应性较差的情况,由于聚类是无监督学习算法,已知的样本类别并不能很好的指导算法的优化,可能造成严重的高偏差,这就要求我们对每一个特征进行分析,同时不能忽视特征间的相关性,因此不推荐采用聚类算法用于异常检测。
概率密度估计
吴恩达老师的ML课程在讲到异常检测时,推荐的是一种基于概率密度估计的算法,主要采用的是高斯分布(正态分布),即用现有的训练集(可以只包含负样本)来模拟高斯分布,在做分类预测时,将特征带入高斯分布公式求取概率,并设定阈值ε来预测分类。常用方法包括高斯分布和多元高斯分布,不同之处在于多元高斯分布考虑了样本特征之间的相关性,能更有效的区分构建分布函数,缺点是计算代价有所提高,同时需要协方差矩阵可逆。
概率密度估计进行异常检测在样本分布严重不均或是样本数量较小的时候也能很好地工作,同时能适应大规模的特征,缺点是ε的选择比较困难,特征数量较少时,性能可能较差。
优化方式同时主要有修正特征分布(将其转化为高斯分布,或者标准化归一),结合其他算法等