机器学习中的数据预处理

2025年9月2日 | 9分钟阅读

数据预处理是准备原始数据并使其适合机器学习模型的过程。它是创建机器学习模型时的第一个也是至关重要的一步。

在创建机器学习项目时,并非总能遇到干净且格式化的数据。在进行任何数据操作时,都必须清理数据并以格式化的方式处理。因此,我们使用数据预处理任务。

为什么我们需要数据预处理?

机器学习一直致力于数据预处理,因为现实世界中的数据往往是不完整的、不一致的且有噪声的。它包括清理、转换和结构化数据,使其可用于建模。这包括填充缺失值、消除错误、缩放特征和编码分类变量。

预处理可以使特征具有相同的尺度,提高模型的准确性,并加快训练速度。它也适用于通过降维来消除不相关或冗余的特征。预处理确保 机器学习算法能够更好地学习模式,因为它创建了一个一致且结构化的数据库,从而产生更准确的预测和更可靠的数据。

数据预处理的步骤

数据预处理是一个多步骤活动,旨在提高数据的质量、结构和相关性,以便输入到机器学习模型中。每个步骤都处理一个特定的挑战,并遵循以下顺序。

Data Preprocessing in Machine learning

步骤 1:数据清洗

数据清洗包括错误识别和纠正、不一致性的消除以及完整性。数据的低质量有可能误导分析并对模型性能产生负面影响。

主要活动是

  • 缺失值:使用均值/众数或删除行/或预测插补。
  • 删除重复项:删除重复记录。
  • 纠正格式:创建一致的单词大写或日期格式。

示例

输出

    name   age  purchase_amount date_of_purchase
0   John  28.0        100.500000       2023-12-01
1   Jane  34.0         84.075000       2023-12-02
2   Jack  28.0         85.300000       2023-12-01
4   None  22.0         50.000000       2023-12-03

步骤 2:数据集成

数据集成是将来自多个源的数据集成到一个统一的数据集中。它将涵盖列和结构(模式匹配和数据去重)的匹配和对齐。此过程将数据最终确定为完整、一致且已准备好进行分析。

示例

输出

   customer_id   name  age  purchase_amount purchase_date
0            1   John   28            100.5    2023-12-01
1            3   Jack   29             85.3    2023-12-02

步骤 3:数据转换

数据转换是数据转换过程,其中原始数据被修改以适应分析或机器学习架构。缩放和标准化通常与之一起进行,将数值带入熟悉的范围,特别是对于对尺度敏感的算法。它还提供了一种编码分类变量的选项,即标签编码或独热编码等,以便模型能够最有效地处理非数字数据。

示例

输出

  category  numeric_column  scaled_numeric_column  category_A  category_B  category_C
0        A              10              -1.069045         1.0         0.0         0.0
1        B              15               0.267261         0.0         1.0         0.0
2        A              10              -1.069045         1.0         0.0         0.0
3        C              20               1.603567         0.0         0.0         1.0
4        B              15               0.267261         0.0         1.0         0.0

步骤 4:数据缩减

数据缩减包括通过删除关键信息不多的特征或记录来简化数据集。它可以快速分析和计算,成本更低,并增强训练。一些常见的方法包括特征选择,只保留关键变量;主成分分析,在保持接近或相似的方差的同时大大减小维度;以及通过选择代表性子集来对大量数据进行采样。

示例

输出

Selected features (SelectKBest):
[[ 10 100]
 [ 20 200]
 [ 30 300]
 [ 40 400]
 [ 50 500]]
PCA reduced data:
[[-2.82842712e+01  1.31838984e-15]
 [-1.41421356e+01 -2.06060810e-16]
 [ 0.00000000e+00 -1.24790386e-16]
 [ 1.41421356e+01 -2.06060810e-16]
 [ 2.82842712e+01  1.31838984e-15]]

数据预处理的常用技术

原始数据预处理保证了数据的质量、一致性以及为进一步分析或机器学习模型做准备。以下提供了一些处理数据集问题的典型方法。

Data Preprocessing in Machine learning

1. 缺失数据

值的缺失可能会对模型产生负面影响。典型的策略是

插补:使用均值、中位数或众数填充缺失数据。更复杂的方法使用模型来估计缺失值。

删除:删除行或列的值。

基于模型的预测:当涉及复杂模式时,使用其他特征来插补缺失值。

2. 异常值检测与删除

异常值可能导致偏差。它们可以通过以下方法识别和处理

Z-Score 方法:数据在正负3个标准差之外的数据被标记为异常值。

四分位距 (IQR):确定不在 IQR 的 1.5 倍和 Q1 或 Q3 之间的值。

可视化:箱线图、散点图和直方图可以显示极端值。

3. 数据编码

分类数据应转换为数字形式,以便使用 ML 模型

独热编码:为每个类别创建二进制列。

标签编码:为每个类别分配不同的整数值。

序数编码:它以数字形式对有序类别进行编码。

4. 数据归一化和缩放

缩放可确保数值特征落在相同的尺度上

Min-Max 缩放:将尺度缩放到 0 到 1。

标准化 (Z-Score):通过将数据标准化为均值 = 0 和标准差 = 1 来进行标准化。

5. 数据增强

主要应用于图像和文本数据,以人工方式增加数据集的大小

图像增强:通过旋转、翻转、缩放和添加噪声来生成变化。

词语增强:通过替换、同义词替换或回译来创建变体。

数据预处理工具

虽然可以使用纯 Python 代码进行数据预处理,但已经出现了许多强大的工具来加速操作、提高效率和扩展性。这些工具使数据清理、转换和组织等常见任务变得容易。

Data Preprocessing in Machine learning

1. Python 库

Pandas: Python 中最流行的数据操作和清理库。它具有灵活的数据结构 DataFrame 和 Series,可以高效地处理结构化数据。流行的操作包括值管理、数据合并、数据过滤和重组。

NumPy:数值函数的底层库。它使人们能够处理多维数组和矩阵,以及一系列数学运算。许多其他 Python 数据处理工具都构建在 NumPy 之上,例如 Pandas。

Scikit-learn:在机器学习特性方面非常受欢迎,并提供许多预处理工具。它包括缩放、分类变量编码、缺失数据、特征提取等。

2. 云平台

处理相当大的数据集时,本地系统可能不足。可以通过云平台解决数据预处理问题,并具有扩展的可能性。

AWS Glue:一个完全托管的 ETL(提取、转换、加载)服务,可以自动发现、组织和准备数据,以便进行分析。它可以与 Amazon Web Services(如 S3 和 Redshift)结合使用。

Azure Data Factory:微软提供的大规模数据管道构建云服务。它托管 ETL 和 ELT 框架,通过使用图形界面促进数据迁移、数据转换和数据工作流编排。

3. 自动化工具

自动执行重复步骤的预处理可以减少错误并节省时间,尤其是在大规模机器学习项目中。

AutoML 平台:这些工具,如 Google AutoML、Azure AutoML 和 H2O.ai AutoML,可以自动化机器学习管道的组件,例如特征选择、数据转换甚至模型选择。

Scikit-learn Pipelines:Scikit-learn 具有一个管道系统,可以将多个预处理步骤组合到一个一致的工作流中。这使得在训练和预测过程中预处理保持一致。

数据预处理的用途

数据预处理可以将原始的、脏乱的数据进行清理,修复任何低效之处,从而提高决策的准确性、可靠性和效率。它在各个领域都很重要

Data Preprocessing in Machine learning

数据仓库:清理、混合和排序来自不同信息源的数据,以存储在单个点。这带来了数据的一致性,消除了不一致性,并提高了数据在大型查询、报告和分析中的可靠性。

数据挖掘:将原始数据转换为适当的格式,以识别未知的模式、趋势和关系。此步骤提高了算法的准确性,使用户能够更轻松地在大型数据集中找到有用的业务/研究答案。

机器学习:它处理包含空值的 Pdata 点,将数字转换为其标准形式,对分类数据进行编码,并将数据划分为训练集、验证集和测试集。在这种情况下,必要的预处理将直接影响模型的性能、准确性和泛化能力。

数据科学:消除重复项和不准确之处,使数据变得相关且组织良好,用于统计、探索性工作、预测或建模。这提高了研究结果的可靠性并有利于研究质量。

网络挖掘:处理 Web 服务器日志文件、点击流和用户活动数据,以开发行为模式。然后将此类信息应用于特定的营销、增强网站的可用性以及个性化建议。

商业智能 (BI):精炼和组织企业数据,以提供仪表板、关键绩效指标 (KPI) 和分析报告。这将使管理者和利益相关者能够做出明智的、数据驱动的业务决策。

深度学习:缩放、归一化或增强数据,以提高训练大型神经网络的性能。充分的预处理还将确保模型适应相关模式,并且不受噪声或无关变化的干扰。

数据预处理的优点

以下列出了一些数据预处理的主要优点

Data Preprocessing in Machine learning
  • 更好的数据质量:消除不一致、错误和重复项,只留下用于分析或建模的准确、干净且可靠的数据。
  • 卓越的模型性能:消除噪声和不相关变量,并允许算法专注于有意义的模式,从而获得更准确的结果和更优的泛化性能。
  • 高效的数据分析:通过整理和组织数据来防止数据分散,从而更容易、更快速地处理、可视化和解释数据。
  • 改进的决策制定:产生清晰、结构良好的数据集,可以为业务或研究决策提供坚实的基础。

数据预处理的缺点

除了优点之外,数据预处理还存在一些主要的缺点,如下所述

Data Preprocessing in Machine learning
  • 耗时:需要多个步骤,包括清理、转换和集成,这可能需要大量时间。
  • 资源密集型:需要大量的 CPU、磁盘和人员资源来完成预处理。
  • 可能的数据破坏:过度清理和不当的转换都可能删除有用甚至重要的数据。
  • 复杂性:需要处理的数据量巨大,并且在结构、类型或形式方面需要专业知识。

结论

机器学习模型训练所使用的数据的质量和结构对于这些模型的质量、性能、准确性和泛化至关重要。因此,数据预处理对于生成和处理高质量、结构良好的数据至关重要。它解决了缺失值、异常值、变量格式不匹配、分类编码和类别不平衡等问题,使数据适合模型。


下一主题监督机器学习