2.7 新奇点和离群点检测

文章转自https://scikit-learn.org/stable/modules/outlier_detection.html#outlier-detection(英文的)

许多应用都需要决定一个新的观测值是否与现有观测值的相同分布(即确定是新观测值是 inlier 还是 outlier )。通常,这种方法被用来做数据清洗。有两种重要的区别:

离群点检测:

训练数据包括远离正常观测值的离群点,这时,离群点检测估计器忽略异常值,只对训练数据中的集中区域进行拟合。

新奇点检测:

训练数据没有被异常值污染,我们需要检测的是新的观测值是否属于异常值。这种情况下,离群点也可被称为新奇点。

离群点和新奇点检测都被应用于异常检测,检测异常或不寻常的观测值。离群点检测也被认为是无监督异常检测;新奇点检测也被认为是半监督异常检测。在离群点检测中,估计器假定离群点/异常值位于低密度区,不能形成致密的群集。相反,在新奇点检测中,只要离群点/异常值位于低密度区,就能形成致密群集,并被认为是正常的。

scikit-learn 项目提供了一组用于新奇点或离群点检测的机器学习工具。其策略是通过从数据中无监督地学习对象来实现的。

estimator.fit(X_train)

然后以预测 predict 的方法将新的观测值分为正常值或异常值:

estimator.predict(X_test)

正常值被标记为1,异常值标记为-1,预测方法是利用估计器的原始评分函数计算出一个阈值,评分函数由score_samples 生成,阈值由contamination参数控制。

decision_function方法也由评分函数定义,负值为异常点,非负值为正常点:

estimator.decision_function(X_test)

注意:当估计器用于离群点检测时,默认情况下neighbors.LocalOutlierFactor 不支持 predict,  decision_function  and score_samples ,只支持fit_predict方法。训练样本的异常值分数通过 negative_outlier_factor_ 属性计算。

如果真的想将neighbors.LocalOutlierFactor用于新奇点检测,预测新的数据的标签或计算其异常得分,可以在拟合估计器之前将参数 novelty 设置为True。在这种情况下,fit_predict不可用。

警告: 用局部离群因子Local Outlier Factor进行新奇点检测

参数 novelty 设置为True,只能在新的看不见的数据上使用 predictdecision_function and score_samples  而不是在训练样本上使用,否则会导致错误的结果。训练数据的异常得分总是通过 negative_outlier_factor_  属性设置。

neighbors.LocalOutlierFactor的表现总结如下表所示:

Method Outlier detection Novelty detection
fit_predict OK Not available
predict Not available Use only on new data
decision_function Not available Use only on new data
score_samples Use negative_outlier_factor_ Use only on new data

2.7.1 离群点检测方法综述

对scikit-learn中离群点检测方法进行比较,局部离群因子 Local Outlier Factor (LOF) 不会显示 一个黑色

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值