离群点检测LOF算法 c语言实现,2.7. 新奇点和离群点检测

本文介绍了离群点和新奇点检测的概念,强调了它们在异常检测中的应用。scikit-learn库提供了包括LocalOutlierFactor(LOF)在内的多种算法。LOF算法在离群点检测中用于识别低密度区域的观测值,而在新奇点检测中,需设置novelty为True以支持对新数据的预测。注意,LOF在新奇点检测模式下,不能对训练数据使用predict、decision_function和score_samples方法。
摘要由CSDN通过智能技术生成

2.7. 新奇点和离群点检测

许多应用程序需要能够对新观测值(observation 译注:观测到的样本的值 )进行判断,判断其是否与现有观测值服从同一分布(即新观测值为内围点(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 和 score_samples 方法,而只支持 fit_predict 方法, 因为这个估计器从一开始就是被用到 离群点检测中去的。训练样本的异常性得分可以通过访问 negative_outlier_factor_属性来获取。

如果你真的想用 neighbors.LocalOutlierFactor 类进行新奇点检测, 即:对新的未见过的样本 预测其标签或计算其异常性得分, 你可以在实例化这个估计器的时候将其novelty参数设为 True ,这一步必须要在拟合之前做。这样的话,fit_predict方法就不可用了。

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

当novelty参数被设为 True 时,在新的未见过的数据上,你只能使用 predict, decision_function 和 score_samples ,而不能把这几个函数用在训练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值