使用 PyCaret 创建强大的集成模型

Creating Powerful Ensemble Models with PyCaret

使用 PyCaret 创建强大的集成模型
图片来源:Editor | Canva

机器学习正在改变我们解决问题的方式。然而,没有一个模型是完美的。模型可能会出现过拟合、欠拟合或偏差等问题,从而降低预测准确性。集成学习通过结合多个模型的预测来解决这个问题,利用每个模型的优点同时减少缺点。这带来了更准确、更可靠的预测。

PyCaret 通过用户友好的界面简化了集成模型的构建,处理数据预处理、模型创建、调优和评估。PyCaret 允许轻松创建、比较和优化集成模型,使机器学习几乎所有人都能使用。

在本文中,我们将探讨如何使用 PyCaret 创建集成模型。

为什么要使用集成模型?

如前所述,机器学习模型的一些问题是它们可能过拟合、欠拟合或做出有偏差的预测。集成模型通过结合多个模型来解决这些问题。集成的好处包括:

  1. 提高准确性:结合多个模型的预测通常比使用单个模型获得更好的结果
  2. 减少过拟合:集成模型可以通过减少单个模型的离群预测的影响来更好地泛化
  3. 增加鲁棒性:聚合不同的模型使预测更稳定、更可靠

集成技术的类型

集成技术结合了多个模型,以克服与单个模型相关的潜在缺点。主要的集成技术有袋装法(bagging)、提升法(boosting)、堆叠法(stacking)和投票与平均法(voting and averaging)。

袋装法(Bootstrap Aggregating)

袋装法通过在不同的数据子集上训练多个模型来降低方差。这些子集是通过有放回的随机抽样创建的。每个模型都独立训练,预测通过平均(用于回归)或投票(用于分类)结合。袋装法有助于减少过拟合并使预测更稳定。随机森林是一种应用于决策树的袋装法。

提升

提升法通过按顺序训练模型来减少偏差和方差,每个新模型都从前一个模型的错误中学习。被错误分类的点会获得更高的权重,以集中学习。提升法将弱模型(如浅层决策树)组合成一个强模型。提升法对于复杂数据集效果很好,但需要仔细调整。流行的算法包括 AdaBoost、XGBoost 和 LightGBM。

堆叠

堆叠法结合了不同的模型以利用它们的优势,之后在基础模型的预测上训练一个元模型以进行最终预测。元模型学习如何结合基础模型的预测以获得更好的准确性。堆叠法处理不同的模式,但计算密集,需要验证以避免过拟合。

投票与平均法

投票与平均法在没有元模型的情况下结合多个模型的预测。在投票法(用于分类)中,预测通过多数规则(硬投票)或平均概率(软投票)结合。在平均法(用于回归)中,模型预测被平均。这些方法易于实现,并且在基础模型强大且多样时效果很好,通常用作基线集成技术。

安装 PyCaret

首先使用 pip 安装 PyCaret

准备数据

对于本教程,我们将使用流行的糖尿病数据集进行分类。

dataset

设置环境

setup() 函数通过执行数据预处理任务(如处理缺失值、缩放和编码)来初始化 PyCaret 环境。

一些重要的 setup 参数包括

  • data:训练数据集
  • target:目标列的名称
  • session_id:设置随机种子以实现可复现性

setup

比较基础模型

PyCaret 允许您比较多个基础模型并选择用于集成建模的最佳候选模型。

以下是正在发生的事情:

  • compare_models() 评估所有可用模型并根据默认指标(如准确性或 AUC)对其进行排名
  • n_select=3 选择前 3 个模型以供进一步使用

compare_models

创建袋装法和提升法模型

您可以使用 PyCaret 的 create_model() 函数创建袋装法集成

 
bagging

提升法模型可以以类似的方式创建

boosting

创建堆叠集成

堆叠集成使用元模型结合多个模型的预测。它们的创建方式如下所示

stacking

在这里,stack_models() 使用元模型(分类的默认元模型是逻辑回归)结合 best_models 中的模型预测。

创建投票集成

投票法通过多数投票(分类)或平均(回归)来聚合预测。

voting

在上面,blend_models() 自动将所选模型的预测组合成一个单一的集成。

评估模型

您可以使用 evaluate_model() 函数评估集成模型。它提供了各种可视化,如 ROC-AUC、精确率-召回率和混淆矩阵。在这里,我们评估堆叠模型并查看混淆矩阵。

evaluate_model

集成建模的最佳实践

为了获得高质量结果的最佳机会,在创建集成模型时请记住以下最佳实践。

  1. 确保模型多样性:使用不同的模型类型并改变超参数以增加多样性
  2. 限制模型复杂度:避免过于复杂的模型以防止过拟合并使用正则化技术
  3. 监控集成大小:避免不必要的模型并确保添加更多模型可以提高性能
  4. 处理类别不平衡:使用过采样或加权损失函数等技术解决类别不平衡问题
  5. 集成模型融合:结合不同的集成方法(例如,堆叠和袋装)以获得更好的结果

结论

集成模型通过结合多个模型来提高机器学习性能,而 PyCaret 通过易于使用的函数简化了这一过程。您可以使用该库轻松创建袋装法、提升法、堆叠法和投票集成,该库还支持超参数调优以获得更好的结果。评估您的模型以选择最佳模型,然后保存您的集成模型以供将来使用或部署。遵循最佳实践时,集成学习与 PyCaret 相结合可以帮助您快速高效地构建强大的模型。

使用 PyCaret 创建强大的集成模型的 3 条回复

  1. William Mayo 2025 年 2 月 1 日 上午 7:42 #

    感谢您撰写了一篇关于实用主题的优秀文章。Github 上有人猜测 Pycaret 不再积极维护。您对此有任何了解吗?

    • James Carmichael 2025 年 2 月 1 日 上午 10:44 #

      截至 2024 年 4 月 28 日,PyCaret 发布了 3.3.2 版本,解决了安装问题并改进了 AUC 指标。([github.com](https://github.com/pycaret/pycaret/releases?utm_source=chatgpt.com)) 然而,最近的讨论表明该项目可能不再积极维护。在 2024 年 11 月的 GitHub 讨论中,一位用户提到 PyCaret 团队由于个人和工作相关变化而放弃了该项目。([github.com](https://github.com/autogluon/autogluon/discussions/4605?utm_source=chatgpt.com)) 因此,一些用户正在转向 AutoGluon 等替代库,该库提供类似的低代码功能并积极维护。

      鉴于这些发展,PyCaret 目前似乎没有得到积极维护。如果您正在考虑替代方案,AutoGluon 可能是一个值得探索的选择。

  2. amarnath 2025 年 2 月 1 日 下午 5:09 #

    非常好的技术

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。