机器学习构建ML模型实践

电子说

1.2w人已加入

描述

本系列介绍 开发和部署  ( M L ) 模型 。在这篇文章中,您 训练并保存 ML 模型 ,因此它可以作为 ML 系统的一部分部署。 第 1 部分给出了一个 ML 工作流概括 ,考虑了使用机器学习和数据科学实现商业价值所涉及的各个阶段。第 3 部分介绍 如何部署 ML 模型到 Google 云平台 ( GCP )。

培训一个可以作为机器学习系统一部分的模型需要了解您的数据、业务目标以及许多其他技术和组织要求。

在本文中,您创建了一个 Python 脚本,当执行该脚本时,它训练一个 ML 模型,然后将其保存以供将来使用。

首先,我强调了为应用程序训练 ML 模型时的一些重要考虑事项。

培训模型前的注意事项

从模型选择到数据集的复杂性和大小,数据从业者必须战略性地规划资源和期望的需求。在培训模型之前要考虑的因素包括:

型号的选择

解释能力

模型超参数

硬件的选择

数据大小

型号的选择

您可以使用许多类 ML 模型来解决问题。您选择的模型取决于您的用例和可能的约束。

解释能力

如果要将您的模型部署为在受监管行业(如金融或医疗保健)中运行的系统的一部分,则您的模型可能是 explainable 。这意味着,对于模型做出的任何预测,都可以说明模型做出该决定的原因。

在这种情况下,您可能希望使用易于解释的 linear regression 或 logistic regression 等模型。

模型超参数

模型具有可调超参数。了解这些超参数对应于什么以及它们如何影响模型非常重要。

根据超参数的选择,模型的性能可能会发生很大变化。

硬件的选择

大多数数据从业者都知道,模型训练通常可以在 GPU 上加速。但即使在您进入模型训练阶段之前, GPU 也可以极大地帮助您的数据科学工作流。

从预处理管道到数据探索和可视化,一切都可以加快。这有助于您更快地迭代并尝试更昂贵的计算技术。

数据大小

当处理比一个内核或机器上的内存更大的数据时,重要的是要考虑充分利用所有数据的技术。

也许使用 RAPID 等工具转移到 GPU 来加速 pandas 和 scikit-learn 风格的工作流是有意义的。或者你可能想研究一个扩展框架,比如 Dask ,它可以扩展模型训练和数据处理,无论你是在 CPU 还是 GPU 上工作。

了解数据集

在本文中,您在一个经典数据集上训练一个模型: UCI Machine Learning Repository 中的 Iris Dataset 。这个数据集包含 150 朵鸢尾花的花瓣长度和宽度以及萼片长度和宽度的记录。每个虹膜属于三种类型之一: setosa 、 virginica 或 versicolor 。

你使用这些数据来训练分类模型,目的是根据花瓣和萼片的尺寸来预测虹膜的类型。

CPU 培训

在部署 ML 模型之前,必须首先构建一个 ML 模型。首先下载流行的 Iris Dataset 。本示例假设虹膜数据集已下载并保存为当前工作目录中的iris.data。

要训练逻辑回归模型,请执行以下步骤:

阅读培训数据。

将训练数据拆分为要素和标签。

将数据分成训练和测试集( 75% 是训练数据, 25% 是测试数据)。

训练 Logistic Regression 模型。

坚持训练后的模型。

 

import joblib
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

def run_training():
    """
    Train the model
    """
    # Read the training data
    dataset = pd.read_csv(
        filepath_or_buffer="iris.data",
        names=["sepal_length_cm", "sepal_width_cm", "petal_length_cm", "petal_width_cm", "class"]
        )

    # Split into labels and targets
    X = dataset.drop("class", axis=1).copy()
    y = dataset["class"].copy()

    # Create train and test set
    X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=0.25, random_state=26)

    # Training the model
    model = LogisticRegression(random_state=26)
    model.fit(X_train, y_train)

    # Persist the trained model
    joblib.dump(model, "logistic_regression_v1.pkl")

if __name__ == "__main__":
    run_training()

 

train_test_split和LogisticRegression调用中的random_state参数有助于确保该脚本每次运行时都产生相同的结果。

运行脚本会生成一个保存在文件logistic_regression_v1.pkl中的模型,您可以使用该模型根据花瓣和萼片的尺寸对其他虹膜进行分类。

GPU 加速模型训练

在本例中,您使用的是一个小数据集,仅包含 150 行数据。由于数据的简单性,该模型在 CPU 上几秒钟就能训练。

然而,在处理真实世界数据集时,模型训练成为瓶颈并不罕见。在这种情况下,通常可以通过使用 GPU 而不是 CPU 来加快工作流的模型训练阶段。

例如, RAPIDS 提供了一套开源软件工具,使数据科学家和工程师能够在 GPU 上快速运行工作负载和数据科学管道。通过模仿常见数据科学库(如pandas和scikit-learn)的 API ,您可以通过少量代码更改来加快机器学习模型训练(以及探索性数据科学)。

 

接下来是什么?

现在您已经有了一个经过培训的模型,可以考虑将其部署到生产环境中。在下一篇文章 Machine Learning in Practice: Deploy an ML Model on Google Cloud Platform 中,您将学习在 GCP 上部署模型的三种方法。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分