Почему мое базовое значение в изолированном лесу слишком велико и сильно отличается от прогнозируемого значения?
Я использовал модель изолированного леса для обнаружения выбросов, а также попытался построить график 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
.