多年前,当 Spotify 开发其推荐引擎时,他们面临着与用于训练 ML 算法的数据质量相关的挑战。
如果他们没有决定回到数据准备阶段并投入额外的精力来清理、规范化和转换他们的数据,我们的聆听体验很可能不会那么愉快。
为机器学习充分准备数据使流媒体平台能够训练强大的 ML 引擎,准确预测用户的收听偏好并提供高度个性化的音乐推荐。
Spotify 避免了公司在为机器学习准备数据时犯的一个严重错误——没有投入足够的努力或跳过任何阶段。
许多企业认为将大量数据输入 ML 引擎足以生成准确的预测。事实上,它可能会导致许多问题,例如,算法偏差或有限的可扩展性。
机器学习的成功在很大程度上取决于数据。
令人难过的是:所有数据集都有缺陷。这就是为什么数据准备对于机器学习至关重要。它有助于排除原始数据中固有的不准确性和偏差,从而使生成的 ML 模型生成更可靠和准确的预测。
在这篇博文中,我们强调了为机器学习准备数据的重要性,并分享了我们收集、清理和转换数据的方法。因此,如果您是 ML 的新手并希望确保您的计划取得成功,请继续阅读。
成功采用 ML 的第一步是明确制定您的业务问题。它不仅可以确保您正在构建的 ML 模型符合您的业务需求,还可以让您节省准备可能不相关的数据的时间和金钱。
此外,清晰的问题陈述使 ML 模型易于解释(这意味着用户了解它是如何做出决策的)。这在医疗保健和金融等领域尤为重要,因为机器学习对人们的生活有重大影响。
确定了业务问题后,就该开始数据工作了。
总的来说,为机器学习准备数据的过程可以分为以下几个阶段:
让我们仔细看看每一个。
机器学习的数据准备从数据收集开始。在数据收集阶段,您收集数据用于训练和调整未来的 ML 模型。这样做时,请牢记数据的类型、数量和质量:这些因素将决定最佳的数据准备策略。
机器学习使用三种类型的数据:结构化、非结构化和半结构化。
数据的结构决定了为机器学习准备数据的最佳方法。例如,结构化数据可以很容易地组织到表格中,并通过重复数据删除、填充缺失值或标准化数据格式进行清理。
相比之下,从非结构化数据中提取相关特征需要更复杂的技术,例如自然语言处理或计算机视觉。
机器学习数据准备的最佳方法也受训练数据量的影响。大型数据集可能需要采样,由于计算限制,这涉及选择数据的子集来训练模型。反过来,较小的数据可能需要数据科学家采取额外的步骤,以根据现有数据点生成更多数据(更多内容见下文)。
所收集数据的质量也很重要。使用不准确或有偏见的数据会影响 ML 输出,这可能会产生重大后果,尤其是在金融、医疗保健和刑事司法等领域。有一些技术可以纠正数据的错误和偏差。但是,它们可能不适用于固有倾斜的数据集。一旦您知道什么是“好”数据,您必须决定如何收集它以及在哪里找到它。有几种策略:
但有时,这些策略并不能产生足够的数据。您可以使用这些技术来弥补数据点的不足:
为机器学习准备数据的下一步是清理数据。清理数据涉及查找和纠正错误、不一致和缺失值。有几种方法可以做到这一点:
处理缺失数据
缺失值是机器学习中的常见问题。它可以通过插补(想想:用预测或估计数据填充缺失值)、插值(从周围数据点导出缺失值)或删除(简单地从数据集中删除具有缺失值的行或列)来处理。
处理异常值
离群值是与数据集的其余部分明显不同的数据点。离群值可能由于测量错误、数据输入错误或仅仅因为它们代表异常或极端观察而出现。例如,在员工工资数据集中,离群值可能是收入明显高于或低于其他员工的员工。可以通过移除、转换它们以减少它们的影响、winsorizing(想想:用正态分布范围内的最近值替换极值)或将它们视为单独的数据类来处理异常值。
删除重复项
为机器学习准备数据过程中的另一个步骤是删除重复项。重复项不仅会影响 ML 预测,还会浪费存储空间并增加处理时间,尤其是在大型数据集中。为了删除重复项,数据科学家采用了各种重复项识别技术(如精确匹配、模糊匹配、散列或记录链接)。一旦确定,它们可以被删除或合并。然而,在不平衡的数据集中,实际上可以欢迎重复以实现正态分布。
处理不相关的数据
不相关的数据是指对解决问题没有用或不适用的数据。处理不相关的数据有助于减少噪音并提高预测准确性。为了识别不相关的数据,数据团队诉诸于主成分分析、相关性分析等技术,或者仅仅依靠他们的领域知识。一旦识别出来,这些数据点就会从数据集中删除。
处理不正确的数据
机器学习的数据准备还必须包括处理不正确和错误的数据。处理此类数据的常用技术包括数据转换(更改数据,使其符合设定标准)或完全删除不正确的数据点。
处理不平衡数据
不平衡数据集是其中一个类中的数据点数明显低于另一类中的数据点数的数据集。这可能会导致优先考虑多数类而忽略少数类的有偏见的模型。为了解决这个问题,数据团队可能会采用重采样(对少数类进行过采样或对多数类进行欠采样以平衡数据分布)、合成数据生成(为少数类综合生成额外的数据点)、成本敏感学习(在训练期间为少数类别分配更高的权重)、集成学习(使用不同算法组合在不同数据子集上训练的多个模型)等。
这些活动有助于确保训练数据准确、完整和一致。尽管取得了巨大成就,但仅仅产生可靠的 ML 模型还不够。因此,为机器学习准备数据的下一步涉及确保训练数据集中的数据点符合特定规则和标准。数据管理过程中的那个阶段称为数据转换。
在数据转换阶段,您将原始数据转换为适合机器学习算法的格式。这反过来又确保了更高的算法性能和准确性。
我们为机器学习准备数据的专家列举了以下常见的数据转换技术:
缩放
在数据集中,不同的特征可能使用不同的测量单位。例如,房地产数据集可能包含有关每个房产的房间数量(从一个到十个不等)和价格(从 $50,000 到 $1,000,000 不等)的信息。如果不进行缩放,则很难平衡这两个特征的重要性。该算法可能过于重视具有较大值的特征(在本例中为价格),而对看似较小值的特征不够重视。缩放有助于解决这个问题,方法是转换所有数据点,使它们适合指定范围,通常在 0 到 1 之间。现在您可以在平等的基础上比较不同的变量。
正常化
机器学习数据准备中使用的另一种技术是规范化。它类似于缩放。然而,虽然缩放会改变数据集的范围,但归一化会改变其分布。
编码
分类数据的值数量有限,例如颜色、汽车型号或动物种类。由于机器学习算法通常使用数值数据,因此必须对分类数据进行编码才能用作输入。因此,编码代表将分类数据转换为数字格式。有多种编码技术可供选择,包括单热编码、序数编码和标签编码。
离散化
离散化是一种为机器学习准备数据的方法,它允许将时间、温度或重量等连续变量转换为离散变量。考虑一个包含有关人的身高信息的数据集。每个人的身高可以测量为以英尺或厘米为单位的连续变量。但是,对于某些 ML 算法,可能需要将这些数据离散化为类别,例如“矮”、“中”和“高”。这正是离散化所做的。它有助于简化训练数据集并降低问题的复杂性。离散化的常用方法包括基于聚类和基于决策树的离散化。
降维
降维是指限制数据集中特征或变量的数量,只保留与解决问题相关的信息。考虑一个包含客户购买历史信息的数据集。它包含购买日期、购买的物品、物品的价格以及购买地点。减少这个数据集的维度,我们忽略了除了最重要的特征之外的所有特征,比如购买的商品及其价格。降维可以通过多种技术来完成,其中一些是主成分分析、线性判别分析和 t 分布随机邻域嵌入。
日志转换
另一种为机器学习准备数据的方法是对数转换,指的是将对数函数应用于数据集中变量的值。它通常在训练数据高度倾斜或具有大范围值时使用。应用对数函数有助于使数据分布更加对称。
说到数据转换,我们也应该提到特征工程。虽然它是一种数据转换形式,但它不仅仅是一种技术或为机器学习准备数据过程中的一个步骤。它代表在数据集中选择、转换和创建特征。特征工程涉及统计、数学和计算技术的组合,包括使用 ML 模型,以创建捕获数据中最相关信息的特征。
它通常是一个迭代过程,需要测试和评估不同的技术和功能组合,以便提出解决问题的最佳方法。
为机器学习准备数据过程的下一步涉及将所有收集的数据分成子集——这个过程称为数据拆分。通常,数据被分解为训练、验证和测试数据集。
通过拆分数据,我们可以评估机器学习模型对以前从未见过的数据的执行情况。如果没有拆分,模型很可能在新数据上表现不佳。发生这种情况是因为模型可能只是记住了数据点,而不是学习模式并将它们概括为新数据。
数据拆分有多种方法,最佳方法的选择取决于要解决的问题和数据集的属性。我们为机器学习准备数据的专家表示,数据团队通常需要进行一些实验才能确定最有效的拆分策略。以下是最常见的:
为机器学习正确准备数据对于开发准确可靠的机器学习解决方案至关重要。在 ITRex,我们了解数据准备的挑战以及拥有高质量数据集对于成功的机器学习过程的重要性。
如果您想通过机器学习最大限度地发挥数据的潜力,请联系 ITRex 团队。我们的专家将协助收集、清理和转换您的数据。
也发布在这里。