从预先训练的模型中可视化样本的优缺点


岁爵
2025-03-18 09:53:54 (21天前)

社会经济状况
平方英尺
等等

我训练了一个

模型
</跨度>
,让我们说XGBOOST。现在,我想预测新公寓的价格。是否有一种很好的方式来展示这套公寓的“好”,社会经济地位是一个薄弱的特征(即社会经济地位低,因此对公寓的价格产生负面影响)。

我想要的是或多或少地说明为什么我的

模型
</跨度>
锟斤拷

2 条回复
  1. 0# Charizard | 2019-08-31 10-32



    对你来说是个好消息。



    一个名为的包

    “SHAP”
    </强>


    SHapley添加剂exPlanation

    )最近刚刚为此目的发布。

    1. <a href="https://github.com/slundberg/shap" rel="nofollow noreferrer">
    2. 这是一个链接
    3. </A>
    4. 到github。



    它支持复杂模型的可视化(难以直观地解释),如增强树(特别是XGBOOST!)



    它可以向你展示“真正的”特征重要性,它比它更好

    “gain”



    “weight”

    ,和

    “cover”


    xgboost

    供应因为它们不一致。



    您可以阅读有关为什么SHAP更适合功能评估的所有内容

    这里




    很难给你一些适合你的代码,但是有一个很好的文档,你应该写一个适合你的代码。



    以下是构建第一张图表的指南:




    1. import shap
      import xgboost as xgb

    2. Assume X_train and y_train are both features and labels of data samples

      dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=feature_names, weight=weights_trn)

    3. Train your xgboost model

      bst = xgb.train(params0, dtrain, num_boost_round=2500, evals=watchlist, early_stopping_rounds=200)

    4. explainer object of shap

      explainer = shap.TreeExplainer(bst)

    5. Values you explain, I took them from my training set but you can explain here what ever you want

      shap_values = explainer.shap_values(X_test)

    6. shap.summary_plot(shap_values, X_test)
      shap.summary_plot(shap_values, X_test, plot_type=”bar”)

    7. </code>


    绘制“

    为什么某个样本得分

    “你可以使用内置的SHAP功能(仅适用于Jupyter笔记本)。

    完美的例子



    我个人写了一个函数,将使用它绘制它

    matplotlib

    ,这需要一些努力。



    这是我使用shap值绘制的一个示例(功能是保密的,因此全部被删除)

    1. <a href="https://i.stack.imgur.com/b8E7z.png" rel="nofollow noreferrer">
    2. <img src =“https://i.stack.imgur.com/b8E7z.png”alt =“在此处输入图片说明”/>
    3. </A>



    你可以看到97%的预测

    label=1

    对于该特定样本,每个特征以及它在对数损失中添加或消除了多少。


登录 后才能参与评论