Почему мое базовое значение в изолированном лесу слишком велико и сильно отличается от прогнозируемого значения?

Я использовал модель изолированного леса для обнаружения выбросов, а также попытался построить график shap_force, чтобы увидеть особенности.

Модель изолированного леса, которую я строю, выглядит так:

      model = IsolationForest(n_estimators=50, max_samples='auto', contamination=float(0.2), max_features=1.0,random_state= 0)
model.fit(df)
pred = model.predict(df)
df['anomaly_label']=pred

И я попытался получить значения формы:

      def shap_plot(j):
    explainerModel = shap.TreeExplainer(model)
    shap_values_Model = explainerModel.shap_values(df,check_additivity=False)
    p = shap.force_plot(explainerModel.expected_value, shap_values_Model[j], S.iloc[[j]])
    return(p)

И вот некоторые примеры, которые у меня есть:

значение формы

значение формы

Базовое значение очень высокое, а прогнозируемое значение далеко от базового значения. Интересно, почему это происходит? Есть ли способы решить эту проблему?

1 ответ

shap объясняет оценку аномалий выборок, а не жесткие прогнозы. (Это довольно распространено; например, в вероятностных классификаторах часто объяснения по умолчанию имеют место в пространстве логарифмических шансов, а не в пространстве вероятностей или жестких классификациях.)score_samplesиdecision_functionметодыIsolationForestздесь более актуальны, чемpredict. Тем не менее, похоже, что объяснение заключается в другом преобразовании этих оценок; см. этот комментарий в PR , который добавил изолированные леса вTreeExplainer.

Другие вопросы по тегам