使用隔离森林时如何确定异常的首要“原因”

数据挖掘 机器学习 异常检测 离群值 隔离森林 异常
2022-02-15 23:55:32

我正在使用隔离森林进行异常检测。比如说,我的集合有 10 个变量,var1, var2, ..., var10,我发现了一个异常。我能否以这样的方式对 10 个变量 var1、var2、...、var10 进行排名,我可以说我有异常,主要原因是 var6。

例如,如果我只有 var1、var2、var3,并且我的集合是:

5   25   109
7   26   111
6   23   108
6   26   109
6   978  108
5   25   110
7   24   107

我会说 6, 978, 108 是一个异常,特别是原因是 var2。

有没有办法确定特定条目异常的主要原因?

2个回答

一种天真的方法是使用监督模型来预测您的 IsolationForest 模型输出的目标异常与无异常,然后当且仅当此监督二元分类模型表现良好(也许您可以使用 cv 分数),您可以使用您最喜欢的特征重要性工具,用于检查每个特征的影响/贡献

  1. 如果您的模型是基于树的模型,则意味着减少杂质(对于绘制模型的树/树以了解使观察成为异常值的规则也很有用。
  2. 模型不可知的排列重要性(预定义度量)
  3. 用于更准确地了解每个特征对目标的影响的SHAP 值(异常/无异常)

编辑:

我只是做了一些研究,发现 SHAP 库支持隔离林(检查

不久前,人们可以使用 SHAP 来解释 scikit-learn Isolation Forest 模型。此答案中的示例代码和输出