期刊复现:基于Ridge、Lasso、极端随机树和梯度提升的堆叠模型的应用与模型解释

机器学习大数据数据库

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍: 基于Ridge、Lasso、极端随机树和梯度提升的堆叠模型的应用与模型解释 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。

✨ 文献信息 ✨

picture.image

picture.image

文献使用了堆叠模型(stacking model)来构建PFAS吸附预测模型(PSSM)。在进行数据输入之前,文献中对数据进行了归一化处理,使用了最小-最大归一化方法(min-max scaling),然后将数据随机分割为训练集和测试集,其中80%的数据用于模型训练,20%的数据用于测试,该模型采用了两层框架,利用了多种机器学习算法的强度。具体来说,基模型使用了Ridge、Lasso、极端随机树(Extreme Random Trees, ERT)和梯度提升机(Gradient Boosting),通过对输入特征的训练,生成了Kd(PFAS)预测值。然后,这些基模型的输出被合并到一个新的数据集Z中,作为下一层(元模型)的输入。该元模型是一个多层感知器(MLP)网络,优化了基模型的组合方式,以生成最终的预测值

在模型解释方面,文献采用了SHAP值和部分依赖图来评估特征对模型预测结果的影响。SHAP值用来量化每个特征对模型输出的贡献,特别是通过计算不同特征组合下的影响来确保模型的可解释性。部分依赖图则展示了每个输入特征对预测结果的边际影响,帮助理解每个特征如何单独影响Kd(PFAS)的预测值

接下来,将在我们的模拟数据集上应用这种框架进行实验,并最终使用部分依赖图(PDP)、个体条件期望(ICE)对模型的预测结果进行解释

✨ 代码实现 ✨

  
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")  
  
path = r"2025-4-22公众号Python机器学习AI.xlsx"  
df = pd.read_excel(path)  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['y'], axis=1)    
y = df['y']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42  
)  
from sklearn.preprocessing import MinMaxScaler  
# 创建 MinMaxScaler 实例  
scaler = MinMaxScaler()  
# 用训练集的统计信息对训练集进行归一化  
X_train_scaled = scaler.fit_transform(X_train)  
# 使用训练集的统计信息对测试集进行归一化  
X_test_scaled = scaler.transform(X_test)  
X_train_scaled_df = pd.DataFrame(X_train_scaled, columns=X_train.columns)  
X_test_scaled_df = pd.DataFrame(X_test_scaled, columns=X_test.columns)

数据集的处理过程:首先对特征数据进行分割为训练集和测试集,然后使用训练集的统计信息对训练集和测试集进行归一化处理。与文献中建议的先进行数据归一化后再分割数据集不同,这里是先分割数据集再进行归一化,且在测试集标准化时使用的是训练集的统计指标。相较于对整体数据集进行标准化再分割数据集,这种方法避免了测试集受到训练集信息的影响,因此通常建议先分割数据集后进行归一化处理

  
from sklearn.ensemble import RandomForestRegressor, ExtraTreesRegressor, GradientBoostingRegressor, StackingRegressor  
from sklearn.linear_model import Ridge  
from sklearn.neural_network import MLPRegressor  
  
# 定义一级学习器(基模型)  
base_learners = [  
    ("Ridge", Ridge(alpha=1.0)),  # Ridge回归,alpha是正则化强度,较大的值会导致模型更简单  
    ("RF", RandomForestRegressor(n_estimators=100, random_state=42)),  # 随机森林,n_estimators是树的数量,random_state用于确保结果可复现  
    ("ExtraTrees", ExtraTreesRegressor(n_estimators=100, random_state=42)),  # 极端随机树,n_estimators是树的数量,random_state用于结果复现  
    ("GBM", GradientBoostingRegressor(n_estimators=100, random_state=42))  # 梯度提升树,n_estimators是迭代次数(树的数量)  
]  
  
# 定义二级学习器(元模型),使用多层感知机(MLP)  
meta_model = MLPRegressor(  
    hidden_layer_sizes=(100,),  # 隐藏层的结构,这里有100个神经元,可以根据需求调整,增加层数或神经元可以提高模型复杂度  
    max_iter=1000,  # 最大迭代次数,表示训练时最大允许的迭代次数,较大的迭代次数可以增加收敛的机会  
    random_state=42  # 随机种子,确保结果复现  
)  
  
# 创建 StackingRegressor 集成模型  
stacking_model = StackingRegressor(  
    estimators=base_learners,  # 基学习器的集合  
    final_estimator=meta_model  # 元学习器,使用MLP作为最终的模型  
)  
  
# 训练模型  
stacking_model.fit(X_train_scaled, y_train)

picture.image

定义了一个堆叠回归模型(StackingRegressor),使用了四个基学习器(Ridge回归、随机森林、极端随机树和梯度提升回归),并通过多层感知机(MLP)作为元学习器对基学习器的预测结果进行融合。接着,使用训练集对堆叠模型进行了训练,当然可以对模型进行相关的优化,建议优化方向包括:

  • 基学习器的参数优化:例如,可以通过网格搜索(GridSearchCV)或随机搜索(RandomizedSearchCV)来调整基学习器(如随机森林、极端随机树和梯度提升回归)的超参数,如树的数量(n_estimators)、最大深度(max_depth)等
  • 元模型的优化:多层感知机(MLP)的隐藏层结构和迭代次数可以进一步调整,尝试不同的层数、神经元数量、学习率等,优化模型的表现
  • 增加特征选择:通过特征选择或降维方法来减少冗余特征,提高模型的训练效率和预测准确度

picture.image

为堆叠模型的训练集和测试集进行可视化,展示了模型在这两个数据集上的表现,包括散点图、模型评估指标(RMSE和MAE)、残差图等,帮助直观地反馈模型的预测效果及其误差分布,可视化解读参考往期文章——期刊配图:回归预测模型性能与残差分布可视化分析

  
# 调用函数,绘制所有特征,指定配色  
plot_partial_dependence_subplot(stacking_model, X_train, X_test_scaled_df,   
                                features=X_test_scaled_df.columns.tolist(),   
                                cols=3, line_color='blue', rug_color='gray', individual_color='green')

picture.image

这段代码调用自定义plot_partial_dependence_subplot,绘制堆叠模型(stacking_model)在测试集(X_test_scaled_df)上的部分依赖图(PDP)和个体条件期望图(ICE),通过设置参数来调整特征展示方式、配色等。其中,features 参数指定了绘制的特征,cols=3 控制每行显示的特征数,line_color='blue' 设置依赖线的颜色为蓝色,rug_color='gray' 设置条形图的颜色为灰色,individual_color='green' 设置每个样本的单独显示颜色为绿色,详情参考往期文章——期刊配图:模型解释PDP可视化进阶置信区间+拟合曲线

✨ 该文章案例 ✨

picture.image

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

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

✨ 购买介绍 ✨

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

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

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

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

往期推荐

Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现

期刊配图:相关系数+统计显著性的饼图可视化 美无需多言

期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响

机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学

期刊配图:一区SCI常用数据缺失率展示图可视化

Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析

因果推断:注册行为对后续消费影响的因果推断分析案例

nature communications:基于Light GBM与随机森林结合的多模型特征选择方法

因果推断与机器学习结合:探索酒店预订取消的影响因素

期刊配图:回归模型性能与数据分布(核密度)可视化

picture.image

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

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论