离群点(outlier detection)和新颖点(novelty detection)检测与OneClassSVM应用实例(基于python)

目录

引言

异常值检测(Outlier Detection)

新颖性检测(Novelty Detection)

sklearn.svm.OneClassSVM


引言

在异常检测领域中,我们常常需要决定新观察的点是否属于与现有观察点相同的分布(则它称为inlier),或者被认为是不同的(称为outlier)。 在这里,必须做出两个重要的区别:

异常值检测,outlier detection:

训练数据包含异常值,这些异常值被定义为远离其他异常值的观察值。 因此,异常检测估计器试图适应训练数据最集中的区域,忽略不正常的观察。

新颖点检测,novelty detection:

训练数据不受异常值的污染,我们有兴趣检测新观察是否是异常值。 在这种情况下,异常值也被称为新颖点(a novelty

异常值检测和新颖性检测都属于异常检测,都是用来检测异常的、不常见的一些观察值。

异常值检测是一种无监督的方法,新颖点检测是一种半监督的异常检测方法。 在异常值检测的情况下,异常值不能形成密集的簇,因为异常检测的估计器假设异常值总是位于低密度区域。 相反,在新颖性检测的背景下,新颖点可以形成密集的簇,只要它们处于训练数据的低密度区域中。

scikit-learn框架提供了一套机器学习工具,可用于新颖性或异常值检测。 这个策略是通过从数据中以无人监督的方式学习对象来实现的:

estimator.fit(X_train)

新的观测值,可以用如下方法来做个“预测”,即判断: 

estimator.predict(X_test)

这里,正常的点(内部点,inliers)的标签是1,异常点是-1。预测方法利用估计器计算的原始评分函数的阈值。 可以通过score_samples方法访问该评分函数,而阈值可以通过contamination参数来控制。

decision_function方法也可以从评分函数中定义,负值是异常值,非负值是内部点:

estimator.decision_function(X_test)

需要注意的是, 

  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值