在机器学习和数据挖掘过程中,经常会遇到异常点。
如何处理这些点,关系到后期模型的正确度和精确度,也关系到模型和算法的效率。
对于明显的、人能分辨的异常点,比如人的年龄大于150岁,电脑价格20万人民币,这种显而易见的异常点,可以直接忽略,剔除掉。
对于人无法直观判断的异常点,需要借助模型和数学工具进行分析,然后决定采取何种方式处理。
异常检测的基本步骤:
1、选定容易出错的n个特征作为变量(x1,x2,x3,xx4,x5...xn).
2、根据已知样本集m,计算每个特征的均值和方差。
3、给定一个检测点,计算其密度函数p(x).
4、若p(x)<e,则为异常点;反之,不是。
注意:这里e是需要计算得到,或者认为给定的;并且假定每个特征向量满足高斯分布。
如果特征向量不满足高斯分布,也可以通过对数指数等操作对其进行变换,使其分布符合或者近似符合高斯分布。
需要三种数据集:训练集(training set)、交叉验证集(CV)、测试集(testing set)。
分别用于构建p(x);
尝试不同e,比较F-score准确率召回率找出最合适的e取值;
针对选择出来的e,对检测点进行预测,计算F-score值、准确率召回率,改善参数e的选择。
此外,我们还可以通过误差分析,判断选定的参数是否合适,进行相应改进。
如果异常点的概率p(x)很大,则这种参数构建的异常检测系统不能很好地识别出异常点。
可以增加参数或者改变参数类型,使异常检测系统能更加方便地识别异常点。
参考文章
1、http://www.cnblogs.com/connorzx/p/4729353.html