【深度学习:机器学习模型】如何构建您的第一个机器学习模型

【深度学习:机器学习模型】如何构建您的第一个机器学习模型_第1张图片

【深度学习:机器学习模型】如何构建您的第一个机器学习模型

    • 第 1 步:将您的机器学习项目置于情境中
    • 第 2 步:探索数据并选择机器学习算法的类型
      • 监督学习
      • 无监督学习
      • 强化学习
    • 第 3 步:数据收集
    • 第 4 步:选择模型评估方法
      • 维护保留验证集
      • K 折验证
      • 通过改组进行迭代 K 折验证
    • 第 5 步:预处理和清理数据集
      • 处理非数字列
      • 解决缺失值
      • 检测异常值
      • Z 分数
      • 基于密度的噪声应用空间聚类 (DBSCAN)
      • 分析特征选择
      • Univariate 单变量
      • Multivariate 多变量
    • 第 6 步:构建基准模型
    • 第 7 步:优化您的深度学习模型
    • 结论

在本文中,我们将讨论所有机器学习问题的通用工作流程。如果您是“应用”人工智能的新手,这篇文章可以为您提供分步清单,帮助您将第一个机器学习模型变为现实。如果您以前有更广泛地构建神经网络或更广泛的机器学习模型的经验,那么此博客将有助于确保您没有错过任何步骤;它还将概述您(希望如此!)已经熟悉的最佳实践流程,并为您提供有关如何改进模型的实用技巧。

第 1 步:将您的机器学习项目置于情境中

构建机器学习模型的第一步是确定其目的。在开始构建模型之前,应该明确项目的目标——如果部署的模型符合您和您团队的目标,那么它将更有价值。在现阶段,应广泛讨论并商定以下几点:

  • 项目的目标,即项目要回答的问题
  • 对项目“成功”的定义
  • 训练数据的来源及其数量和质量的计划
  • 最初将使用的算法类型,或者是否可以使用预训练模型

这里不能夸大的一个明显点是,机器学习只能用于学习和预测训练数据中看到的模式——也就是说,模型只能识别它已经看到的内容。

第 2 步:探索数据并选择机器学习算法的类型

构建机器学习模型的下一步是通过探索性数据分析过程动手探索数据。根据项目的目标,以及团队的规模、结构和成熟度,此步骤通常由数据科学家领导。此步骤的目标是让团队基本掌握数据集的特征、组件和分组。了解手头的数据后,您可以选择要构建的算法类型——最终选择取决于模型需要执行的任务类型以及手头数据集的特征。

选择的机器学习算法类型还取决于对核心数据和手头问题的理解程度。机器学习模型通常分为三个主要类别,每个类别都以不同的方式训练模型,因此需要不同类型的数据集。在模型构建之前有意识地了解这些差异是根本性的,并将对项目的结果产生重大影响。让我们看一下三种类型的机器学习算法,以及每种算法所需的数据类型。

监督学习

这种方法需要数据科学家准备标记的数据集。该模型将从由输入数据和标记输出数据组成的训练数据中学习,并将着手学习输入和输出之间的关系,以便在输入新数据点时能够复制和预测这种关系。这就是为什么监督式机器学习模型通常用于预测结果和对新数据进行分类的原因。

无监督学习

与监督学习模型不同,无监督机器学习模型不需要标记数据集进行模型训练;训练数据集只需要输入变量。这种类型的机器学习模型从数据集中学习,用于识别数据集中的趋势、分组或模式;它主要用于对数据进行聚类和分类,以及确定数据集的管理原则。

强化学习

强化机器学习是机器学习算法的第三种主要类型。强化学习与监督学习的不同之处在于,它既不需要标记的输入/输出对,也不需要对次优行为进行显式纠正。在这个过程中,学习是通过试错或反馈循环来完成的:每次成功执行操作时,都会释放奖励信号,系统通过犯错获得知识。强化学习算法的一个真实例子是无人驾驶汽车的开发——系统通过与环境交互来学习,以执行给定的任务,从以前的经验中学习,并进行改进。

第 3 步:数据收集

机器学习模型需要大量高质量的训练数据才能健壮并能够做出准确的预测,因为模型将学习训练集中存在的输入数据和输出之间的联系,并在输入新数据点时尝试复制这些数据。

根据正在进行的机器学习训练类型,这些数据集将包含不同类型的数据。如前所述,监督式机器学习模型将在同时具有标记输入和标记输出变量的标记数据集上进行训练。此过程从注释器开始,通常完成手动准备和分类数据的劳动密集型过程。注释工具也开始构建,可以帮助您标记数据——为了加快流程和准确性,有必要为您的用例选择合适的注释工具。例如,如果您正在构建计算机视觉模型并需要标记图像和视频,那么 Encord 等平台具有帮助您进行数据标记的功能。优化此步骤不仅大大减少了完成数据准备过程所需的时间,而且还产生了更高质量的数据,这反过来又提高了模型的准确性及其性能,从而节省了您以后的时间——因此,在此步骤中进行投资非常重要,而刚起步的团队往往会忽略这一点。

相反,由于无监督机器学习模型不需要标记的输入数据,因此训练数据集将仅包含输入变量或特征。在这两种情况下,输入数据的质量都会显着影响模型的整体成功——因为模型是从数据中学习的,低质量的训练数据可能会导致模型在投入使用后无法达到预期的效果。为了标准化数据、识别任何缺失数据并找到任何异常值,应对数据进行验证和清理。

第 4 步:选择模型评估方法

在准备数据集和构建模型之前,首先必须有一些指标来逐步衡量成功。您应该清楚如何衡量实现模型目标的进度,这应该成为您评估项目成功的后续步骤的指路明灯。最常用的评估方法有以下三种:

维护保留验证集

该方法涉及将数据的特定子集指定为测试数据,然后使用验证集调整模型的参数,使用数据的剩余部分训练模型,然后使用测试数据评估其性能。

在这种方法下,数据被分为三个部分以防止信息泄露。

【深度学习:机器学习模型】如何构建您的第一个机器学习模型_第2张图片

图 1:A 不包含验证数据集。 B 提供验证数据集。

K 折验证

这里,使用K折方法将数据分为K个相等大小的部分。该模型在每个分区 i 的剩余 K-1 个分区上进行训练,然后在该分区 i 上进行评估。

所有K个分数的平均值用于确定最终分数。当模型的性能与训练测试分割明显不同时,此方法特别有用。

【深度学习:机器学习模型】如何构建您的第一个机器学习模型_第3张图片

图 2:显示 K 次验证直至 k 次迭代的图像。

通过改组进行迭代 K 折验证

当尝试在可用数据很少的情况下尽可能精确地评估模型时,此技术尤其重要。

这是通过在重新排列数据的同时重复执行 K 折验证,然后将数据划分为 K 个部分来完成的。每个 K 折验证周期结束时获得的平均分数构成最终分数。

由于需要训练和评估的模型数量是 I x K 倍,因此该策略的计算成本可能极其昂贵。 I 代表迭代,而 K 代表分区。

第 5 步:预处理和清理数据集

要构建机器学习模型,数据清理和预处理是关键,以便最大限度地减少过度拟合和偏差等常见挑战的影响。现实世界的数据是混乱的;非数字列、缺失值、离群数据点和不良特征只是执行此步骤时会遇到的数据错误的几个示例。

在开始预处理数据之前,您必须仔细检查并理解数据集;既可以在单个列级别(如果可行),也可以在聚合级别。让我们看看访问数据的几种方法以及如何预处理数据集。

处理非数字列

机器学习算法理解数字,但不理解字符串,因此如果存在带有字符串的列,则应将它们转换为整数。可以使用标签编码和one-hot编码等方法将字符串转换为数字。但是,如果列中的每个点都是不同的字符串(例如,具有唯一名称的数据集)怎么办?在这种情况下,通常必须删除该列,因此仔细查看数据集非常重要。

解决缺失值

由于多种原因,现实世界的数据集可能会存在缺失值。这些缺失值通常被识别为 NaN、空字符串,甚至空白单元格 (“”)。根据输入数据缺失的方式,可以采用以下技术处理缺失值:

  • 删除行:在确保有足够的可用数据点后,删除包含缺失值的行。
  • 平均值/中位数或最频繁/常数:同一列中的值的平均值或中位数可用于填充缺失的数据。对于分类特征,还可以使用同一列中最常见或一致的值(尽管出于明显的原因,这可能会给数据带来偏差,并且在许多情况下不是最佳的)。这两种方法都忽略了特征之间的关系。
  • 使用回归或分类进行插补:使用不包含缺失值的特征,您可以使用线性回归、支持向量机 (SVM) 或 K 最近邻 (KNN) 等算法来预测缺失值。
  • 通过链式方程进行多元插补:如果所有列中都存在缺失值,则以前的技术可能不起作用。在多个位置存在缺失值的情况下,链式方程多元插补 (MICE) 技术通常是完成数据集的最佳选择。
  • 如果您使用 Python,那么 scikit-learn 具有内置的插补类以使其更容易。 scikit-learn 的 Impute 是了解有关在机器学习模型中实现缺失类的插补的更多信息的一个很好的起点。

检测异常值

在任何给定的数据集中,一些观察结果会偏离大多数其他观察结果,从而导致权重有利于它们。这些数据点被称为异常值,必须将它们删除以避免不必要的偏差。如果数据点是二维的,那么它们可以被可视化,并且对异常值进行阈值处理可能会起作用。然而,具有大量特征的数据集通常具有更高的维度,因此不容易可视化。因此,您必须依靠算法来检测这些异常值。让我们讨论两种常见的异常值检测算法:

Z 分数

Z 分数直观地告诉我们数据点与中间位置(大多数数据点所在的位置)的距离。如果数据是高斯分布的,这会很有帮助。如果不是,则应使用对数转换或 Bob Cox 转换(在倾斜列的情况下)对数据进行标准化。 z 分数异常值检测的局限性之一是它不能用于非参数数据。

基于密度的噪声应用空间聚类 (DBSCAN)

聚类算法 DBSCAN 根据数据点的密度对数据点进行分组;异常值可以被识别为位于低密度区域的点。

【深度学习:机器学习模型】如何构建您的第一个机器学习模型_第4张图片

图3:DBSCAN形成集群以查找低密度区域中的数据点的示例。

分析特征选择

特征对于在数据点和目标值之间建立联系至关重要。如果这些特征中的任何一个被损坏或独立于目标值,那么这些特征将不会对映射该关系有任何帮助,因此数据清理的一个重要部分是找出这些特征并将其从数据集中消除。

我们可以使用两种不同类型的算法来查找这些属性:单变量和多变量。

Univariate 单变量

单变量算法的目标是确定每个特征与目标列之间的关系,独立于其他特征。仅当连接牢固时,才应保留该功能。

Multivariate 多变量

多元算法识别特征与特征之间的依赖关系,本质上是计算每个特征的分数并选择最佳的分数。

F检验、互信息检验等统计方法和算法都是单变量算法;递归特征选择是一种常用的多元特征选择。这里重要的是要记住,应根据您的数据集选择特征选择算法。 scikit-learn 的文章,例如 f 检验和互信息之间的比较,展示了这些算法之间的差异以及它们的 Python 实现。

第 6 步:构建基准模型

准备好数据集后,下一个目标是创建一个基准模型,作为我们可以衡量更有效算法性能的基线。

根据用例以及团队的规模、成熟度和结构,此步骤通常由机器学习工程师来执行。对于用作基准的实验,它们必须是相似的、可测量的和可重复的。目前,可用的数据科学库随机分割数据集;这种随机性必须在所有运行中保持恒定。对模型进行基准测试可以让您了解数据集可能的预测能力。

第 7 步:优化您的深度学习模型

在开发机器学习模型时,模型优化(即减少机器学习模型不可避免的不准确程度的过程)对于在现实环境中实现准确性至关重要。此步骤的目标是调整模型配置以提高精度和有效性。还可以改进模型以适应特定的目的、目的或用例。

机器学习算法中有两种不同类型的参数:第一类是在模型训练阶段学习的参数,第二类是超参数,其值用于控制学习过程。

在模型训练过程之后调试模型时可以分析训练过程中学到的参数。这将使您能够找到失败案例并在基准模型的基础上构建更好的模型。有些工具具有主动学习框架,可以提高模型可见性并允许您调试学习的参数。

在构建机器学习模型时选择正确的超参数也很关键 - 《机器学习中的超参数优化》一书是超参数优化的一本很好的指南,并提供了代码实现的教程。

结论

在本博客中,我们讨论了构建机器学习模型的最重要部分。如果您是一位经验丰富的数据科学从业者,我希望这篇文章能够帮助您概述和可视化构建模型所需的步骤。如果您是初学者,请将此作为确保您的第一个机器学习项目成功的清单!

你可能感兴趣的:(深度学习知识专栏,深度学习,机器学习,人工智能)