期刊复现:Water Research贝叶斯优化下的堆叠模型选择聚焦前三模型的任意组合及解释

机器学习大模型算法

picture.image

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

本节介绍: Water Research贝叶斯优化下的堆叠模型选择聚焦前三模型的任意组合及解释 ,数据采用模拟数据无任何现实意义,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。完整数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。需要的朋友可关注公众文末提供的获取方式。文末提供高效的学习工具~!点赞、推荐参与文末包邮赠书!

✨ 论文信息 ✨

picture.image

picture.image

关于该模型的前期解读实现请参考文章——期刊复现:数据预处理OE、QE、LOOE编码+RF、KNN与LGBM缺失值填补及标准化生成N*N数据集期刊复现:Water Research基于多模型性能评估均值的最优数据处理组合分析与确定期刊复现:Water Research贝叶斯优化下的RF、KNN、DNN、XGBoost等基础学习器选择,本期实现主要是模型最终的堆叠及其解释

picture.image

文献中这张表格展示不同基础学习器组合下,堆叠集成模型在训练和预测中的表现,包括训练集和测试集的R²和RMSE值,从而得到最终的堆叠最优模型,以第一个数据类型为例基础学习器的选择是通过贝叶斯优化选择的排名前三基础模型分别为XGBoost、CatBoost和 LightGBM 通过对这三种基础模型进行穷举堆叠,最终,通过评估每种组合的性能,选出最优的堆叠模型组合,从而在训练集和测试集上获得最佳的预测效果,最终并进行模型解释

✨ 代码实现 ✨

  
import itertools  
bayes_names = {  
    "XGBoost": trained_models['XGBoost'],  
    "RF": trained_models['RF'],  
    "CatBoost": trained_models['CatBoost']  
}  
  
bayes_names = {f"Bayes-{name}": model for name, model in bayes_names.items()}  
  
model_names = list(bayes_names.keys())  
  
print("=== Bayes 优化模型的堆叠组合(从 2 个到全部 3 个) ===")  
for r in range(2, len(model_names) + 1):  
    for combo in itertools.combinations(model_names, r):  
        print(combo)

穷举排名前三基础模型两个到三个模型的所有可能组合,用于贝叶斯优化模型的堆叠组合

  
=== Bayes 优化模型的堆叠组合(从 2 个到全部 3 个) ===  
('Bayes-XGBoost', 'Bayes-RF')  
('Bayes-XGBoost', 'Bayes-CatBoost')  
('Bayes-RF', 'Bayes-CatBoost')  
('Bayes-XGBoost', 'Bayes-RF', 'Bayes-CatBoost')

结果显示在模拟数据集上,贝叶斯优化模型的堆叠组合具体为哪些

picture.image

为什么选择这三个模型进行穷举参考往期文章——期刊复现:Water Research贝叶斯优化下的RF、KNN、DNN、XGBoost等基础学习器选择

  
from sklearn.ensemble import StackingRegressor  
from sklearn.linear_model import LinearRegression  
  
# 创建所有堆叠组合(2个模型 + 3个模型)  
stacking_results = []  
stacking_models = {}  
  
for r in range(2, len(model_names) + 1):  # 组合大小:2 和 3  
    for combo in itertools.combinations(model_names, r):  
        # 构建 estimators 列表(模型名 + 模型对象)  
        estimators = [(name, bayes_names[name]) for name in combo]  
  
        # 构建 StackingRegressor  
        stacker = StackingRegressor(  
            estimators=estimators,  
            final_estimator=LinearRegression(),  
            passthrough=False  
        )  
  
        # 训练堆叠模型  
        stacker.fit(X_train_scaled_RF_OE, y_train)  
  
        # 保存模型  
        stacking_models[combo] = stacker  
  
        # 计算训练集的 R² 和 RMSE  
        y_train_pred = stacker.predict(X_train_scaled_RF_OE)  
        r2_train = r2_score(y_train, y_train_pred)  
        rmse_train = mean_squared_error(y_train, y_train_pred, squared=False)  
  
        # 计算测试集的 R² 和 RMSE  
        y_test_pred = stacker.predict(X_test_scaled_RF_OE)  
        r2_test = r2_score(y_test, y_test_pred)  
        rmse_test = mean_squared_error(y_test, y_test_pred, squared=False)  
  
        # 保存结果  
        stacking_results.append({  
            "Stacking Combination": " + ".join(combo),  
            "Num Models": r,  
            "R² (Train)": r2_train,  
            "RMSE (Train)": rmse_train,  
            "R² (Test)": r2_test,  
            "RMSE (Test)": rmse_test  
        })

创建并训练所有可能的贝叶斯优化模型堆叠组合(包括两个或三个模型的组合),计算每个堆叠模型在训练集和测试集上的R²和RMSE性能指标

这种堆叠方法的原理是通过将多个基础学习器(如XGBoost、RF和CatBoost)的预测结果作为输入,结合一个最终的线性回归模型来进行预测,从而利用不同模型的优势来提升整体预测性能

  
df_stacking_results = pd.DataFrame(stacking_results)  
df_stacking_results

picture.image

结果展示了不同堆叠模型组合的训练和测试表现,包括每种组合的R² 和RMSE值,从而评估每个模型组合在训练集和测试集上的预测效果,在这四个组合中,Bayes-XGBoost+Bayes-RF在训练集上表现最好(R²接近1,RMSE很小),但在测试集上表现略逊色(但是其在测试集相较于其它堆叠模型也表现的最好)

picture.image

值得说明的是虽然在模拟数据集上,最优堆叠模型相较于最优单一模型有了一些性能提升,但这种提升并不显著(这一现象在文献中也有类似的情况)。堆叠模型并不总是能够超过单一模型的表现,且堆叠模型的复杂度更高,容易导致过拟合。因此,是否选择堆叠模型应根据具体的数据情况来决定。如果选择堆叠模型,需要更多的工作量,包括模型训练、调优以及结果解释等,这意味着整个过程可能更加复杂,且需要更多的分析和解释

  
selected_combo = ('Bayes-XGBoost', 'Bayes-RF')  
stacking_models[selected_combo]

picture.image

这是最优堆叠模型的架构,其中Bayes-XGBoost和Bayes-RF是基础学习器,它们的输出通过LinearRegression作为最终回归器进行整合,形成一个堆叠回归模型

picture.image

用SHAP值对最优堆叠模型进行模型解释即可,绘制整体特征重要性summary图,进一步针对 LSTAT、RM、DIS、AGE四个特征(重要性排名前四)分别绘制“特征取值–SHAP 值”的散点子图(依赖图)来展示它们对模型预测的影响方向和大小

picture.image

对最优模型进行SHAP解释是一个传统套路,这里就不进行详细解读,感兴趣的读者可以参考公众号往期文章或者原论文对于这些图表的解释,到这里文献的模型构建及解释部分就完成了

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

picture.image

✨ 该文章案例 ✨

picture.image

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

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

✨ 介绍 ✨

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

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

✨ 群友反馈 ✨

picture.image

✨ 合集获取 ✨

picture.image

欢迎到公众号后台,获取更多Python机器学习和AI相关的内容 ,希望能为您的学习之路提供帮助!

✨ 书籍推荐 ✨

无论你是零编程基础的科研新手,还是想提升机器学习技能的医学科研工作者,这本书都能带你从入门到进阶,掌握Python数据分析+医学AI应用的全流程技能

✨ 赠书活动 ✨

picture.image

picture.image

支持知识分享,畅享学习乐趣!特别感谢清华大学出版社 对本次赠书活动的鼎力支持!即日起,只需点赞、推荐、转发 此文章,作者将从后台随机抽取一位幸运儿,免费包邮赠送清华出版社提供的《Spark 大数据开发与应用案例》这本精彩书籍📚!

💡 赶快参与,一键三连,说不定你就是那位幸运读者哦!

✨ AI工具推荐 ✨

picture.image

往期推荐

期刊配图:模型SHAP解释特征类别柱状图、饼图与蜂巢图的组合展示

期刊复现:基于自动机器学习的预测模型构建及其残差和部分依赖分析

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况最优模型的SHAP解释

期刊复现:单变量特征降维与共线性分析结合RFE集成排名进行特征筛选下的组合拳流程

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况优化与最优模型选择可视化

期刊复现:基于相关系数与AUC值优化特征选择剔除冗余特征精简模型(附代码)

期刊复现:如何正确使用LASSO进行二分类特征选择?避开常见误区,掌握实用技巧

期刊复现:融合聚类与多分类转二分类的亚型可解释SHAP机器学习模型构建

期刊复现:基于LightGBM、XGBoost与RF的Lasso回归堆叠模型在连续和分类特征上的模型解释

期刊复现:基于LightGBM、XGBoost与RF的堆叠模型贝叶斯优化调参与Lasso回归元模型,结合10倍交叉验证

picture.image

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

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论