news 2026/9/2 6:58:47

NGBoost-shap方法回归任务,由斯坦福吴恩达团队提出,属于集成模型的一种2019年提出的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NGBoost-shap方法回归任务,由斯坦福吴恩达团队提出,属于集成模型的一种2019年提出的

NGBoost-shap方法回归任务,由斯坦福吴恩达团队提出,属于集成模型的一种2019年提出的,算是比较新的方法了 自带数据集,可以直接运行,对模型采用shap进行分析,所有图所见即所得 python 代码

NGBoost这玩意儿最近在回归任务里挺火,作为吴恩达团队整出来的新活,它最骚的地方在于既能预测数值还能估计不确定性。咱们今天直接上手实操,用自带数据集快速搞个可复现的demo,顺带用SHAP把模型掰开了揉碎了看看。

先装个环境(别问,问就是pip大法好):

pip install ngboost shap

上代码直接开整!先加载内置的糖尿病数据集:

from ngboost import NGBRegressor from sklearn.datasets import load_diabetes from sklearn.model_selection import train_test_split X, y = load_diabetes(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ngb = NGBRegressor(Dist=ngboost.distns.Normal, n_estimators=100) ngb.fit(X_train, y_train) # 预测时同时拿到预测值和置信区间 preds = ngb.pred_dist(X_test) print(f"均值预测示例:{preds.params['loc'][:3]}") print(f"标准差示例:{preds.params['scale'][:3]}")

这里用了正态分布作为基分布,n_estimators设到100能保证基础学习器足够多。预测结果直接返回分布参数,比普通回归只能输出个数值有意思多了。

接下来用SHAP扒开模型看细节:

import shap # 用TreeExplainer适配树模型结构 explainer = shap.TreeExplainer(ngb) shap_values = explainer.shap_values(X_test) # 特征重要性可视化 shap.summary_plot(shap_values, X_test, feature_names=load_diabetes().feature_names)

运行后会跳出两张神图:第一张是特征总体重要性,明显能看到s5(血清检测指标)和age对预测结果影响最大;第二张是特征作用方向图,每个点颜色代表特征值大小,能直观看到高年龄对应的预测值偏移方向。

想具体看单个预测案例?上force_plot:

# 选个有意思的样本观察 sample_idx = 15 shap.force_plot(explainer.expected_value, shap_values[sample_idx], X_test[sample_idx], feature_names=load_diabetes().feature_names)

这图看着就很有说服力——基线值在150左右,s5特征硬生生把预测结果拉低了20个点,bmi又给顶上去10个点。这种可视化比看表格里的系数值直观十个Level!

实测中发现NGBoost对参数挺敏感,把Dist换成LogNormal分布,预测区间立马变得右偏。SHAP分析时也会发现特征影响方向发生微妙变化,这说明模型结构的选择会直接影响可解释性结果。建议跑多个分布配置对比着看,特别是当业务场景对不确定性方向有要求时。

最后来个骚操作:把预测分布画出来看不确定性

import matplotlib.pyplot as plt plt.figure(figsize=(10,6)) plt.scatter(y_test, preds.params['loc'], alpha=0.5) plt.errorbar(y_test, preds.params['loc'], yerr=2*preds.params['scale'], fmt='o', alpha=0.3) plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--')

这个误差带可视化直接暴露了模型在极端值区域的预测乏力——当真实值超过250时,预测点明显偏离红色对角线,同时误差带急剧变宽。这种双重可视化把模型优缺点直接拍脸上,比单纯看R²得分带劲多了。

总结下来,NGBoost+SHAP的组合拳特别适合需要量化不确定性的场景(比如金融风控、医疗预测)。代码层面几乎零魔改就能出效果,但要注意分布假设对可解释性的影响。下次遇到产品经理说"我要个能解释的AI",直接甩这个方案过去就完事了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 5:15:39

从被动响应到主动支撑:“四可”技术的演进路径与发展趋势

在光伏产业从“补充能源”向“主力能源”跨越的进程中,“可观、可测、可控、可调”的“四可”技术始终扮演着关键角色。其发展轨迹并非一蹴而就,而是伴随电网需求升级与光伏技术迭代,完成了从“被动适配并网要求”到“主动支撑能源系统”的深…

作者头像 李华
网站建设 2026/9/2 20:53:45

【Python办公自动化】自定义选择多列为一项合并单元格-其余不合并

目录 Python实战:打造高效Excel数据合并工具 (PyQt5 + Pandas) 1. 项目背景与需求 2. 核心功能 3. 技术栈 4. 实现细节 4.1 数据读取与预处理 4.2 智能日期格式化 4.3 分组与合并逻辑 4.4 JSON 输出 完整代码 5. 界面预览 6. 总结 专栏导读 🌸 欢迎来到Python办公自动化专栏…

作者头像 李华
网站建设 2026/8/31 17:55:56

Langchain-Chatchat打通CRM系统提升客户服务效率

Langchain-Chatchat打通CRM系统提升客户服务效率 在企业服务一线,客服人员常常面临这样的窘境:客户打来电话询问“上次维修的配件是否在保修范围内”,他不得不在CRM系统、邮件记录、产品手册和工单平台之间来回切换,耗时七八分钟才…

作者头像 李华
网站建设 2026/9/1 11:31:36

华为云国际站代理商DSS主要有什么作用呢?

华为云国际站 DSS(专属分布式存储服务)为用户提供独享物理存储资源池,以低时延、高 IO / 超高 IO、物理隔离与三副本冗余为核心能力,可灵活对接 ECS/BMS/DCC 等计算服务,适配 HPC、OLAP 与混合负载等企业级场景&#x…

作者头像 李华
网站建设 2026/9/1 23:10:46

Langchain-Chatchat处理长文本的挑战与应对策略

Langchain-Chatchat处理长文本的挑战与应对策略 在企业知识管理日益智能化的今天,一个常见的场景是:HR需要快速回答“试用期员工是否可以请婚假”,法务人员要查找合同模板中的某项条款,研发工程师则想从上百页的技术文档中定位某个…

作者头像 李华