查看单个预测的模型系数

Posted

技术标签:

【中文标题】查看单个预测的模型系数【英文标题】:Viewing model coefficients for a single prediction 【发布时间】:2021-06-03 07:15:54 【问题描述】:

我在 scikit-learn 管道中使用以下逻辑回归模型:

pipeline = make_pipeline(
    StandardScaler(),
    LogisticRegressionCV(
        solver='lbfgs',
        cv=10,
        scoring='roc_auc',
        class_weight='balanced'
    )
)

pipeline.fit(X_train, y_train)

y_pred = pipeline.predict(X_test)

我可以使用此代码整体查看模型的预测系数...

# Look at model's coefficients to see what features are most important
plt.rcParams['figure.dpi'] = 50
model = pipeline.named_steps['logisticregressioncv']
coefficients = pd.Series(model.coef_[0], X_train.columns)
plt.figure(figsize=(10,12))
coefficients.sort_values().plot.barh(color='grey');

返回特征及其系数的条形图。

我正在尝试做的是能够看到单个观察的不同输入值如何影响其预测。这个想法是能够对样本总体进行预测并检查具有“低”预测的组......例如,如果我对 10 个观察值进行预测,我想看看不同的输入值如何影响这 10 个中的每一个单独预测。

【问题讨论】:

@desertnaut 因此,“我不完全确定这是否可能,这可能暴露了对这些系数的生成方式/它们所代表的含义的误解”......感谢您的澄清!跨度> 恭敬地拒绝,因为我认为其他人肯定可能会对这个话题产生混淆,并从看到提供的解释/澄清中受益 【参考方案1】:

回想一下,我可以通过Shap Values 使用以下方法实现此目的(但使用LinearExplainer 而不是TreeExplainer):

# Instantiate model and encoder outside of pipeline for 
# use with shap
model = RandomForestClassifier( random_state=25)
# Fit on train, score on val
model.fit(X_train_encoded, y_train2)
y_pred_shap = model.predict(X_val_encoded)
# Get an individual observation to explain.
row = X_test_encoded.iloc[[-3]]
# Why did the model predict this?
# Look at a Shapley Values Force Plot
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(row)
shap.initjs()
shap.force_plot(
    base_value=explainer.expected_value[1],
    shap_values=shap_values[1],
    features=row
)```


【讨论】:

SHAP 值与模型系数无关。这并没有提供问题的答案。 "SHAP 衡量变量的影响,同时考虑与其他变量的交互作用。Shapley 值通过比较模型在有和没有特征时的预测来计算特征的重要性。但是,由于模型看到的特征可能会影响其预测,这是按照所有可能的顺序完成的,以便对特征进行公平比较。”这确实得到了我正在寻找的东西 - 我使用 coefficients 作为一个术语,因为这是我以前使用的,但最终我想了解各种输入对预测的影响 我知道什么是 SHAP 值,我再说一遍:这不是所要求的。 我还要重复一遍:我对原始问题的措辞表达了困惑。我试图要求的是深入了解个人观察的不同输入值如何影响他们的个人预测。我很想听听有关如何完成此任务的说明,而不是简单地被告知我尝试实现它的方式是不正确的,因为这无助于我解决问题。你是说夏普值不会告诉我个人观察的不同输入值如何影响他们的个人预测?

以上是关于查看单个预测的模型系数的主要内容,如果未能解决你的问题,请参考以下文章