一区IF6.2期刊复现②:最优模型LightGBM组图SHAP揭示关键特征影响力机制

机器学习大数据数据库

picture.image

✨ 欢迎关注 ✨

本节介绍: LightGBM特征重要性及部分依赖分析进行模型解读 ,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。 完整 数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。需要的朋友可关注公众文末提供的获取方式。 获取 前请咨询,避免不必要的问题。

✨ 文献信息 ✨

picture.image

在前文中——一区IF6.2期刊复现①:LightGBM特征重要性及部分依赖分析进行模型解读,已经详细解读了通过多模型比较后,LightGBM被选定为最优模型,并对其进行了 LightGBM模型 特征重要性分析和部分依赖分析。接下来的部分将进一步深入分析LightGBM模型的SHAP结果,以全面理解各特征对糖尿病(DM)风险预测的贡献

SHAP 分析说明特征对DM风险预测的贡献。(A)SHAP瀑布图:显示每个特征对单个参与者预测的贡献。(B)SHAP决策图,单个参与者:可视化同一个体特征的累积效应,显示了每个变量如何影响预测的模型输出。(C)所有参与者的SHAP决策图:总结了所有参与者的 SHAP 值,展示了整体特征贡献。(D)SHAP汇总图:特征按其平均SHAP值进行排序,突出其整体重要性

picture.image

具有LOWESS曲线的SHAP散点图。每个点代表LightGBM模型中的单个SHAP值。红色曲线反映平滑的LOWESS拟合,蓝色垂直虚线表示SHAP风险拐点。(A)PFOA:临界值为-0.27,对应于2.48ng/ML 的实际值。(B)PFDE:临界值为-0.50,对应于0.17ng/ML的实际值。(C)PFOS:临界值为0.13,对应于13.26ng/ML的实际值。 (D)PFNA:临界值为0.39,对应于 1.31 ng/ML 的实际值

✨ 基础代码 ✨

  
import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
plt.rcParams['font.family'] = 'Times New Roman'  
plt.rcParams['axes.unicode_minus'] = False  
import warnings  
# 忽略所有警告  
warnings.filterwarnings("ignore")  
df = pd.read_excel('2025-7-2-公众号Python机器学习AI.xlsx')  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['Outcome'], axis=1)    
y = df['Outcome']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42,   
    stratify=df['Outcome']   
)  
from lightgbm import LGBMClassifier  
from sklearn.model_selection import GridSearchCV  
# 初始化 LightGBM 分类模型  
model_lgbm = LGBMClassifier(random_state=42, verbose= -1)  
  
# 定义参数网格  
param_grid_lgbm = {  
    'n_estimators': [50, 100, 200],       # 树的数量  
    'learning_rate': [0.01, 0.1, 0.2],   # 学习率  
    'max_depth': [-1, 10, 20],           # 最大深度  
    'num_leaves': [31, 50, 100],         # 叶节点数  
    'min_child_samples': [10, 20, 30]    # 最小叶节点样本数  
}  
  
# 使用 GridSearchCV 进行网格搜索和 k 折交叉验证  
grid_search_lgbm = GridSearchCV(  
    estimator=model_lgbm,  
    param_grid=param_grid_lgbm,  
    scoring='neg_log_loss',  # 评价指标为负对数损失  
    cv=5,                    # 5 折交叉验证  
    n_jobs=-1,               # 并行计算  
    verbose=1                # 输出详细进度信息  
)  
  
# 训练模型  
grid_search_lgbm.fit(X_train, y_train)  
  
# 使用最优参数训练模型  
best_model_lgbm = grid_search_lgbm.best_estimator_

使用LightGBM模型,通过网格搜索和5折交叉验证来优化超参数,在模拟数据集上训练出一个最优的分类模型,以预测目标变量(Outcome),详细的模型解读还有模型性能评价指标输出等参考上一期文章——一区IF6.2期刊复现①:LightGBM特征重要性及部分依赖分析进行模型解读,因为是针对同一个项目数据模型参数随机种子一致,这里主要是为了SHAP实现训练模型

  
import shap  
explainer = shap.TreeExplainer(best_model_lgbm)  
shap_values = explainer.shap_values(X_test)  
# 计算shap值为Explanation格式  
shap_values_Explanation = explainer(X_test)  
plt.figure(figsize=(10, 5), dpi=1200)  
shap.plots.waterfall(shap_values_Explanation[0], show=False, max_display=8)  
plt.tight_layout()  
plt.savefig("waterfall.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.show()

picture.image

使用SHAP库计算模型在测试集上的shap值,这里提供了两种格式,并可视化LightGBM模型在测试集第一个样本上的特征贡献,也就是文献中的图(A)SHAP瀑布图:显示每个特征对单个参与者预测的贡献

  
# 绘制 SHAP 决策图  
plt.figure(figsize=(10, 5), dpi=1200)    
shap.decision_plot(explainer.expected_value, shap_values[0], X_test.iloc[0], show=False, link='logit')  
plt.savefig("decision_plot.pdf", format='pdf', bbox_inches='tight')  
plt.tight_layout()  
plt.show()

picture.image

接下来绘制试集第一个样本上的SHAP决策图,也就是文献中的图(B) SHAP决策图,单个参与者:可视化同一个体特征的累积效应,显示了每个变量如何影响预测的模型输出

  
# 绘制 SHAP 决策图  
plt.figure(figsize=(10, 5), dpi=1200)    
shap.decision_plot(explainer.expected_value, shap_values, X_test.columns, show=False)  
plt.tight_layout()  
plt.savefig("decision_plot_all.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.show()

picture.image

这里绘制测试集所有样本上的SHAP决策图,也就是文献中的图(C) 所有参与者的SHAP决策图:总结了所有参与者的 SHAP 值,展示了整体特征贡献

picture.image

最后绘制文献中的图(D)SHAP汇总图:特征按其平均SHAP值进行排序,突出其整体重要性

picture.image

最终通过LOWESS曲线分析揭示SHAP特征贡献排名前四的特征(当然这里最好根据实际的研究方向确定那些特征)与结局是否患病风险之间的非线性关系,以及它们的实际临界值

当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息

picture.image

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,获取作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 获取 前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!

往期推荐

期刊复现:连续数据与分类数据共存的SHAP可视化散点图与箱形图组合形式

期刊复现:多分类任务如何拆分为二分类任务并进行堆叠预测提高模型预测性能

期刊配图:SHAP模型解释多种特征重要性柱状图可视化解析

期刊配图:SHAP值分析模型可解释性在柱状图与蜂窝图中的进阶组合展示

期刊配图:通过堆叠Mean|SHAP|展示不同区间对模型贡献度的可视化分析

期刊复现:利用UMAP降维算法可视化深度学习随着训练次数的增加模型区分能力的变化

期刊配图:PCA、t-SNE与UMAP三种降维方法简化高维数据的展示应用对比

Science期刊复现:分类、回归与Shap分析多角度揭示同一数据集变量对目标的影响

多模型SHAP+PDP解读Stacking集成模型:从基学习器到元学习器的可解释性与模型调参实现

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论