原文:
www.kdnuggets.com/2021/12/beginner-guide-end-end-machine-learning.html
评论
作者 Rebecca Vickery,数据科学家
照片由 Modestas Urbonas 贡献,来源于 Unsplash
1. Google 网络安全证书 - 快速入门网络安全职业
2. Google 数据分析专业证书 - 提升你的数据分析能力
3. Google IT 支持专业证书 - 支持你组织的 IT 需求
监督学习是一种将一系列输入(X)映射到某些已知输出(y)而无需明确编程的技术。训练机器学习模型指的是机器学习 X 和 y 之间的映射的过程。训练完成后,模型可以用于对新输入进行预测,其中输出未知。
机器学习模型的训练只是端到端机器学习生命周期中的一个环节。为了使模型真正有用,这个映射需要被存储和部署以供使用。这通常被称为将模型投入生产。此外,一旦模型投入生产,需要监控模型的预测和整体性能,以确保预测质量不会随时间下降。
为了介绍端到端机器学习工作流中的基本概念,我将使用 python 库 Pycaret。 Pycaret 是一个低代码机器学习库,旨在通过提供高级编程接口和自动化一些重复的机器学习任务,简化和加快整体机器学习工作流。
该库正在快速发展,最近增加了涵盖整个端到端机器学习工作流的功能。从模型开发到部署和监控。在以下文章中,我将使用这个包来简单介绍端到端机器学习生命周期。
在本教程中,我将使用 Pycaret 内置的数据集之一,称为“employee”。该数据集包含有关某家不特定公司的员工的一组特征,以及一个目标变量,表示该员工是否离开了公司。这是机器学习中的经典分类任务,目标是训练一个能够预测员工是否可能离开的模型。
数据可以通过 Pycaret API 轻松导入。在以下代码中,我们读取数据并保留一个验证样本,以备后续工作流使用。
数据的前几行如下所示:
“employee”数据集的前几行。 图片由作者提供。
Pycaret 拥有一套模块,包含针对特定机器学习任务的一系列函数。我们使用的数据集包含一个分类问题,因此我们将主要使用classification模块。
第一步是导入 setup 函数。此函数在执行其他步骤之前运行。它初始化了 Pycaret 环境,并创建了一个用于预处理数据以准备建模的转换管道。运行时,Pycaret 会推断所有特征和目标列的数据类型。
Pycaret 已经推断了特征和目标变量的数据类型。 图片由作者提供
如果我们确认这些数据类型是正确的,并且也愿意依赖 Pycaret 的默认预处理方法,那么我们只需按下回车键,Pycaret 将准备好数据以进行建模,并打印出描述所采取步骤的报告。
以下是该 59 行报告的前 15 行。setup 函数具有大量可选参数,可用于创建自定义预处理。例如,参数 categorical_features
可用于手动指定未正确推断的数据类型的分类列。可用参数的完整列表可以在这里找到。
预处理报告的前 15 行。 图片由作者提供。
在真实世界的机器学习项目中,我们很可能会进行更深入的探索性分析和自定义预处理。然而,为了本教程的目的,我们将继续使用默认的预处理方法。
通常在机器学习工作流中,首先训练一个简单模型以建立性能基准,然后再转向更复杂的算法是明智的选择。
在撰写时,Pycaret 支持 18 种不同的分类算法。完整的列表可以在这里找到。对于基线模型,我们将使用逻辑回归,并使用create_model
函数进行训练。要选择算法,我们传入在文档中找到的缩写字符串。训练后,Pycaret 将打印一份详细说明模型性能的报告。
create_model
报告。图片由作者提供。
通过建立基线模型,我们已经确定了预处理和设置足以构建分类模型。
下一步是比较不同的分类算法,以确定哪一个最适合我们的数据集和问题。Pycaret 有一个叫做compare_models()
的函数,可以让我们用一行代码比较所有可用算法的性能。
这个函数将尝试所有算法,并输出按准确度排名的列表。你可以通过sort
参数更改目标指标。
比较模型。图片由作者提供。
从中我们可以看出,随机森林是总体上最好的模型。我们将在接下来的工作流程中使用这个模型。
我们再次运行create_model()
,这次选择随机森林算法。
当我们运行create_model
时,它会自动使用默认参数。这些参数不一定是最优的,所以我们需要调整模型以找到最佳选择。运行tune_model()
函数使用随机网格搜索来调整模型的超参数。
默认情况下,函数将使用预定义的参数网格,但可以通过将自定义网格传递给custom_grid
参数来进行自定义。默认情况下,函数还会优化准确度评分,但也可以使用optimize
参数进行自定义。
在下面的代码中,我们使用默认参数网格来调整模型,并优化 MCC 评分。
该函数返回一个包含 k 折验证分数的表格,默认情况下折数为 10。
模型调整。图片由作者提供。
Pycaret 提供了一系列内置图表来解释模型结果,可以使用plot_model()
函数访问这些图表。
下面我们使用这个函数检查特征重要性。
特征重要性。图片由作者提供。
让我们也可视化混淆矩阵。
混淆矩阵。图片由作者提供。
Pycaret 还具有将模型部署到 AWS 云的附加功能。
要在 AWS 上部署模型,你必须首先在 aws.amazon.com 上创建一个账户。创建后,你需要生成一个访问密钥,以便允许 Pycaret 函数写入你的账户。按以下步骤操作。
-
登录到你的 AWS 账户。
-
悬停在右上角的用户名上。
-
从出现的列表中选择安全凭证。
4. 在这里展开访问密钥部分,并点击“创建新的访问密钥”。
5. 在此阶段,当提示时,你需要下载凭证文件。稍后你需要使用此文件中的凭证。
6. 为了允许 Pycaret 与你的 AWS 账户交互,你还需要安装并配置 AWS CLI。首先运行以下命令。
curl "[`awscli.amazonaws.com/AWSCLIV2.pkg`](https://awscli.amazonaws.com/AWSCLIV2.pkg)" -o "AWSCLIV2.pkg"
然后运行:
sudo installer -pkg ./AWSCLIV2.pkg -target /
现在输入 aws --version
以确认一切已正确安装。你应该看到类似这样的内容。
现在已安装,我们可以使用你的账户详情配置 AWS CLI。运行下面显示的命令,它会要求你输入以下信息。
AWS Access Key ID: 可以在我们之前下载的凭证文件中找到。
AWS Secret Access Key: 也可以在凭证文件中找到。
默认区域名称: 可以在 AWS 控制台中找到。
默认输出格式: 应留空。
接下来,我们创建一个 S3 存储桶以存储部署的模型。从 AWS 控制台选择 S3,然后创建一个你选择名称的存储桶。
现在我们准备使用 Pycaret 部署我们选择的模型。
如果模型已经部署,你将看到以下消息。
为了使用模型,我们在之前保留的验证数据上生成预测。
下面显示的代码从 S3 加载模型,并在去除了标签的验证数据上生成预测。
通过运行 predictions[:5]
来查看前 5 个预测结果。
前 5 个预测。图片来自作者
生产机器学习工作流的一个重要方面是跟踪和监控执行的实验。Pycaret 与 MLflow 集成,后者是一个用于管理端到端机器学习生命周期的开源平台。
要通过 Pycaret 使用 MLflow,我们需要导入 MLflow(这应该已经随 Pycaret 一起安装)并设置跟踪 URI。然后,我们在调用 setup 函数时添加几个额外的参数,如下所示。
现在,如果我们将跟踪 URI 复制到浏览器中,你应该能看到 mlflow UI 和它跟踪的实验。
mlflow UI。图片来自作者
我们可以点击查看每个实验的度量指标、工件和参数。
实验跟踪。图片来自作者
这是一个简单的教程,用于学习端到端机器学习项目的基本步骤。在现实世界中,大多数机器学习问题、数据和部署解决方案需要更复杂的处理。然而,为了本教程的目的,我使用了一个简单的数据集和 Python 库,以帮助你开始了解端到端机器学习生命周期。
Pycaret 是一个低代码机器学习库的例子。目前有很多工具正在开发,旨在以不同方式简化机器学习开发。要了解更多关于这些低成本机器学习库的信息,请参见我之前的文章。
有关现实世界中机器学习的更多信息,请参见下面的文章。
感谢阅读!
简介: Rebecca Vickery 是一位数据科学家,拥有丰富的数据分析、机器学习和数据工程经验。12 年 SQL 经验,4 年以上 Python、R、Apache Airflow 和 Google Analytics 经验。
相关:
-
你不知道的关于 Scikit-Learn 的 10 件事
-
数据科学中的五个命令行工具
-
可解释的机器学习 Python 库