我正在使用隔离森林对多维数据进行异常检测。该算法以良好的准确性检测异常记录。除了检测异常记录之外,我还需要找出哪些特征对数据点的异常贡献最大。我们有什么办法可以得到这个吗?
如何获得导致隔离林异常的主要特征
机器算法验证
机器学习
异常检测
隔离森林
2022-04-08 14:12:37
2个回答
SHAP 值和shap Python 库可用于此目的。自 2019 年 10 月以来,Shap 内置了对 scikit-learn IsolationForest 的支持。
import shap
from sklearn.ensemble import IsolationForest
# Load data and train Anomaly Detector as usual
X_train, X_test, ...
est = IsolationForest()
est.fit(...)
# Create shap values and plot them
X_explain = X_test
shap_values = shap.TreeExplainer(est).shap_values(X_explain)
shap.summary_plot(shap_values, X_explain)
这是我为我拥有的一个 IsolationForest 模型绘制的一个示例,它是时间序列的。

您还可以获得特定特征的部分依赖图,或显示单个 X 实例的特征贡献的图。shap 项目 README 中给出了这方面的示例。