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