在使用隔离森林进行数据异常检测时,我们应该只使用正常数据还是混合正常数据和异常数据来训练模型?还有什么是多变量数据异常检测的最佳算法?我想要最少的误报。
- 我正在查看小于 5% 的污染水平。
- 还有什么是用于多变量数据异常检测的最佳 ML 算法,以便它给出最小的误报。
注意:我知道减少误报是调整模型的问题,但我想知道最有效的算法。从博客中我了解到 IsolationForest 是最新和最有效的无监督异常检测算法之一。
在使用隔离森林进行数据异常检测时,我们应该只使用正常数据还是混合正常数据和异常数据来训练模型?还有什么是多变量数据异常检测的最佳算法?我想要最少的误报。
注意:我知道减少误报是调整模型的问题,但我想知道最有效的算法。从博客中我了解到 IsolationForest 是最新和最有效的无监督异常检测算法之一。
目前,scikit-learn v0.20.3
已实施隔离林。IForest 在处理高维、多变量数据方面相当出色:
“数据在随机选择的属性中在随机选择的分区点处通过轴平行切割递归地进行分区,以便将实例隔离为实例越来越少的节点,直到将这些点隔离为包含一个实例的单例节点。” -- 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)