Nir*_*_AI 6 machine-learning random-forest anomaly-detection
在使用隔离森林进行数据异常检测时,我们应该仅使用正常数据还是混合使用正常数据和异常数据来训练模型?另外,多变量数据异常检测的最佳算法是什么?我想要最少的误报。
注意:我知道减少误报是调整模型的问题,但我想知道最有效的算法。从博客中我了解到 IsolationForest 是最新、最有效的无监督异常检测算法之一。
目前,scikit-learn v0.20.3已实施隔离林。IForests 非常擅长处理高维、多变量数据:
“在随机选择的属性中,在随机选择的划分点处使用轴平行切割对数据进行递归划分,从而将实例隔离为实例越来越少的节点,直到将点隔离为包含一个实例的单例节点。” ——Charu C. Aggarwal( 《异常值分析》第 5 章)
我不能说它给出了最低的误报,因为它实际上取决于许多因素,包括您的训练数据。据我所知,它可以很好地识别异常和/或异常值(即使是离散时间序列)。
您可以将contamination参数设置为您想要的任何百分比,只要它是float(0., 0.5) 即可。
“数据集的污染量,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。”
默认值为 0.1(或 10%),因此您可以设置contamination=0.04(4%)。
from sklearn.ensemble import IsolationForest
clf = IsolationForest(contamination=0.04)
Run Code Online (Sandbox Code Playgroud)