我使用“局部异常值因子”进行异常检测。该算法有一个名为"contamination".的参数此参数表示异常值的比例。在我的例子中,"0.0058"是污染参数的最佳值。
#parameters
n_neighbors = 750
p = 7
contamination = 0.0058 # the proportion of outliers
lof = LocalOutlierFactor(n_neighbors=n_neighbors, p=p, contamination=contamination)
y_pred_train = lof.fit_predict(data_scaled)
在尝试了许多不同的值之后,我找到了这个值。但是,我需要在不尝试不同值的情况下找到污染参数的最佳值。
以下是数据的形状:
我有两个问题:
在执行异常检测算法之前,是否可以预测污染参数的最佳值?
在现实应用中,异常检测模型有可能完美地检测所有异常吗?
提前谢谢。
发布于 2019-03-01 09:01:03
局部异常因子值是一种常用的异常检测工具。它需要局部方法来更好地检测其邻居的异常值,而全局策略可能不是对密度波动的数据集的最佳检测。
这完全取决于您的数据集:
你有一个紧密的,干净的,统一的数据集吗?那么LOF值为1.05可能是一个异常值。
你是否有一个稀疏的数据集,密度不同,有许多特定于本地集群的局部波动?那么LOF值2可能仍然是一个内生的。
https://stackoverflow.com/questions/50208639
复制相似问题