news 2026/6/23 13:31:17

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/6/23 8:46:39

Langchain-Chatchat Kubernetes集群部署策略

Langchain-Chatchat Kubernetes集群部署策略 在企业对数据隐私和AI合规性要求日益严格的今天,如何构建一个既安全又高效的本地知识库问答系统,成为许多组织面临的核心挑战。公有云上的通用大模型虽然功能强大,但难以满足敏感信息不出内网的需…

作者头像 李华
网站建设 2026/6/23 0:43:35

Langchain-Chatchat日志监控与性能分析最佳实践

Langchain-Chatchat日志监控与性能分析最佳实践 在企业级 AI 应用日益普及的今天,将大型语言模型(LLM)部署于本地环境已成主流趋势。数据安全、低延迟响应和系统可控性成为决策的关键因素。开源项目 Langchain-Chatchat 凭借其对私有知识库的…

作者头像 李华
网站建设 2026/6/22 23:11:27

Langchain-Chatchat模型微调指南:适配垂直领域任务

Langchain-Chatchat模型微调指南:适配垂直领域任务 在企业智能化转型的浪潮中,一个现实而棘手的问题日益凸显:员工每天花大量时间翻找内部文档——HR制度藏在共享盘深处,IT操作手册分散在多个PDF里,财务流程更新了却没…

作者头像 李华
网站建设 2026/6/23 16:35:57

如何配置IPv6静态路由?解决企业网络难题

说到网络配置,尤其是涉及到IPv6的时候,很多人可能会感到头疼。毕竟,这不仅仅是技术问题,更是关乎到整个企业的数据传输效率和安全性。在这样的背景下,如何正确地配置IPv6静态路由成为了一个值得探讨的话题。先来聊聊为…

作者头像 李华
网站建设 2026/6/23 11:09:22

【Linux网络基础】详解 TCP 面向连接 vs UDP 无连接

详解 TCP 面向连接 vs UDP 无连接 本文详细解析计算机网络传输层两个最重要的协议:TCP (Transmission Control Protocol) 和 UDP (User Datagram Protocol),重点阐述“面向连接”与“无连接”的核心区别、工作原理及应用场景。1. 核心概念:什…

作者头像 李华
网站建设 2026/6/23 5:07:30

Langchain-Chatchat如何评估问答质量?指标体系构建

Langchain-Chatchat如何评估问答质量?指标体系构建 在企业知识管理日益智能化的今天,一个常见的困境是:员工每天要花数小时查找文档、邮件或内部系统中的信息,而客服面对客户提问时却常常无法快速调取准确答案。尽管大语言模型&am…

作者头像 李华