在使用Isolation Forest进行数据异常检测时,我们是否应该仅使用正常数据或同时使用正常数据和异常数据进行训练?另外,用于多变量数据异常检测的最佳算法是什么?我想要最少的误报。
我的污染水平低于5%。
另外,对于多变量数据进行异常检测的最佳ML算法是什么,以使其产生最小的误报率。
注意:我知道减少误报只是调整模型的问题,但是我想知道最有效的算法。从博客中我了解到,IsolationForest是最新,最有效的无监督异常检测算法之一。
最佳答案
当前,scikit-learn v0.20.3
已实现isolation forests。 IForests在处理高维,多元数据方面相当出色:
“在随机选择的属性中的随机选择的分割点上,使用轴平行切割对数据进行递归分割,以便将实例隔离到具有越来越少实例的节点中,直到这些点被隔离成包含一个实例的单例节点。”
-Charu C. Aggarwal (in Chapter 5 of Outlier Analysis)
我不能说这样的事实,它给出的误报率最低,因为它实际上取决于许多因素,包括您的训练数据。据我所知,它可以很好地识别异常和/或离群值(即使是离散时间序列)。
您可以将contamination
参数设置为您的心脏想要的任何百分比,只要它是(0.,0.5)中的float
。
“数据集的污染量,即数据集中异常值的比例。在拟合时定义决策函数的阈值时使用。”
默认值为0.1(或10%),因此您可以设置contamination=0.04
(4%)。
from sklearn.ensemble import IsolationForest
clf = IsolationForest(contamination=0.04)
关于machine-learning - 如何训练isolatedForest模型,以便给出最少的误报?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49956715/