经过深思熟虑,我得出以下几点:
你问的第一个问题的顶部情节,第二个问题是shap.summary_plot(shap_values, X)。它概述了每个样本的模型最重要的特征,并使用 SHAP 值度量显示了每个特征对模型输出(房价)的影响。当此摘要图中排在最前面的特征是 LSTAT(人口的低状态百分比)形状统计数据= 0仅仅意味着它对这些样本的模型输出没有贡献(对房价几乎没有影响)。
例如,该图揭示了高 LSTAT(例如形状统计数据= - 7 ,等)降低了预测的房价。颜色代表特征值(红色高,蓝色低)。
请注意,即使 LSTAT 也包含所有功能。专门计算和绘制所有实例的 SHAP 值。
如果要绘制第一个\单个实例 x 的 SHAP 值,则需要:
shap.force_plot(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0,:])
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])根据此文档对第一个预测的解释进行可视化
显示:
- 每个特征都有助于将模型输出从基值(已传递训练数据集上的平均模型输出)推到模型输出。
- 将预测推高的特征以红色显示(例如形状统计数据= 4.98, 形状比例= 15.3),那些将预测推低的人是蓝色的(例如形状R M= 6.575 , 形状辐射度= 1等)当 模型输出= 24.41美元的房价。
Lundberg 等人的论文的图 4 也强调了这一贡献量(幅度) 。[Nature BME]在名为“总体积”的特征上稍好,注释如下:
