You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否获取CatBoost模型针对单条预测结果的特征重要性?

CatBoost单条预测的特征重要性支持情况

CatBoost完全支持针对单条预测结果计算特征重要性(也常被称为特征贡献度),和你熟悉的数据集层面全局特征重要性不同,这类信息能帮你拆解单个样本里每个特征对最终预测的具体影响。

两种常用实现方式:

  • 使用模型自带的get_feature_importance方法
    通过指定type='PredictionValuesChange'参数,可直接计算单样本的特征贡献值。需要传入包含目标样本的Pool对象,同时根据任务类型设置prediction_type:

    import catboost as cb
    
    # 假设model是训练完成的CatBoost模型,sample是单条样本的DataFrame
    # cat_feature_indices是分类特征的索引列表(如果有的话)
    contribs = model.get_feature_importance(
        cb.Pool(sample, cat_features=cat_feature_indices),
        type='PredictionValuesChange',
        prediction_type='Probability'  # 分类任务用,回归任务改为'Regression'
    )
    
    # 把贡献值和特征名对应起来
    feature_contrib_map = dict(zip(model.feature_names_, contribs))
    

    返回的数值表示该特征对当前样本预测值的具体影响,正值推高预测结果,负值拉低预测结果。

  • 借助SHAP值分析
    CatBoost原生兼容SHAP框架,通过get_shap_values方法能获取单样本的SHAP值,更直观展示特征的正负贡献:

    shap_vals = model.get_shap_values(cb.Pool(sample, cat_features=cat_feature_indices))
    # 分类任务会返回每个类别的SHAP值数组,回归任务返回单个数组
    

    SHAP值的优势在于可以结合可视化工具更直观呈现特征影响,但如果只需要数值结果,直接用上述方法即可。

需要注意的是,单样本的特征贡献是个性化的——同一个特征在不同样本里的影响可能差异很大,这和全局特征重要性(统计所有样本的平均影响)本质不同。

内容的提问来源于stack exchange,提问作者Clock Slave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:52:40