许多应用程序要求能够检测出一个新的观测值是否与现有观测值具有相同的分布,如果具有相同的分布,则它是一个
内联值,如果是不同的分布,则它是一个
离群值。通常,此功能用于对现实数据集进行清洗。现在我们先作出两个重要区分:
- 离群点检测训练数据包含离群值,这些离群值被定义为远离其他观测值的观测值。因此,孤立点检测估计器试图拟合训练数据最集中的区域,而忽略异常观测值。
- 奇异点检测训练数据不受异常值的污染,我们感兴趣的是检测一个新的观测值是否是异常值。在这种情况下,离群值也称为奇异值。
estimator.fit(X_train)
然后,可以使用
predict
方法将新的观测值分类为内联值或异常值:
estimator.predict(X_test)
内联项标记为1,而异常值标记为-1。该预测方法在估计器计算的原始评分函数(raw scoring function)上使用了一个阈值(threshold )。此评分函数可通过
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
方法不可用。
警告:
使用局部离群因子进行奇异点检测 当
novelty
设置为
True
时,请注意,您必须只能对新的未见过数据而不是对训练样本使用
predict
,
decision_function
和
score_samples
方法,因为这会导致错误的结果。训练样本的异常得分可以通过
negative_outlier_factor_
属性获得。 下表总结了
neighbors.LocalOutlierFactor
类用于离群点和奇异点检测的方法。 方法 离群点检测 N