首页 >后端开发 >Python教程 >特征工程:释放数据的力量以实现卓越的机器学习模型

特征工程:释放数据的力量以实现卓越的机器学习模型

WBOY
WBOY原创
2024-08-21 22:24:43505浏览

Feature Engineering: Unlocking the Power of Data for Superior Machine Learning Models

特征工程是选择、操作原始数据并将其转换为可用于机器学习(主要是监督学习)的特征的过程。它由五个过程组成:特征创建、转换、特征提取、探索性数据分析和基准测试。 在这种情况下,“特征”是可以在预测模型中使用的任何可测量的输入。它可以是动物的声音、颜色或某人的声音。

这项技术使数据科学家能够从数据中提取最有价值的见解,从而确保更准确的预测和可操作的见解。

特征类型

如上所述,特征是可以在预测模型中使用的任何可测量点。让我们来看看机器学习的特征工程的类型-

  • 数值特征:这些特征是可以在尺度上测量的连续变量。例如:年龄、体重、身高和收入。这些功能可以直接用于机器学习。

  • 分类特征:这些是可以分组为类别的离散值。它们包括:性别、邮政编码和颜色。机器学习中的分类特征通常需要转换为数值特征,然后才能用于机器学习算法。您可以使用 one-hot、标签和序数编码轻松完成此操作。

  • 时间序列特征:这些特征是随时间推移进行的测量。时间序列特征包括股票价格、天气数据和传感器读数。这些功能可用于训练机器学习模型,以预测未来值或识别数据中的模式。

  • 文本特征:这些是可以表示单词、短语或句子的文本字符串。文本特征的示例包括产品评论、社交媒体帖子和医疗记录。您可以使用文本特征来训练机器学习模型,使其能够理解文本的含义或将文本分类为不同的类别。

  • 机器学习管道中最关键的过程之一是:特征选择,这是选择数据集中最相关的特征以促进模型训练的过程。它增强了模型的预测性能和鲁棒性,使其不太可能过度拟合训练数据。这个过程至关重要,因为它有助于减少过度拟合、增强模型可解释性、提高准确性并减少训练时间。

特征工程技术

插补

该技术涉及缺失值/数据的处理。这是您在准备数据进行清理甚至标准化时会遇到的问题之一。这主要是由隐私问题、人为错误、甚至数据流中断引起的。它可以分为两类:

  • 分类插补:缺失的分类变量通常被其他记录(模式)中最常出现的值替换。它适用于数值和分类值。然而,它忽略了特征相关性。您可以使用 Scikit-learn 的“SimpleImputer”类来实现此插补方法。该类还适用于通过均值和中位数方法进行插补,如下所示。
# impute Graduated and Family_Size features with most_frequent values

from sklearn.impute import SimpleImputer
impute_mode = SimpleImputer(strategy = 'most_frequent')
impute_mode.fit(df[['Graduated', 'age']])

df[['Graduated', 'age']] = impute_mode.transform(df[['Graduated', 'age']])
  • 数值插补:缺失的数值通常用其他记录中相应值的平均值替换。也称为均值插补。该方法简单、快速,并且适用于小型数据集。然而,这种方法有一些局限性,例如列中的异常值可能会扭曲结果均值,从而影响 ML 模型的准确性。在估算缺失值时,它也未能考虑特征相关性。 您可以使用“fillna”函数来估算列平均值中的缺失值。
# Impute Work_Experience feature by its mean in our dataset

df['Work_Experience'] = df['Work_Experience'].fillna(df['Work_Experience'].mean())

编码

这是将分类数据转换为数值(连续)数据的过程。以下是特征编码的一些技术:

  • 标签编码:标签编码是一种对数据集中的变量或特征进行编码的方法。它涉及将分类变量转换为数值变量。

  • One-hot 编码:One-hot 编码是将分类变量转换为 ML 算法可以使用的形式的过程。

  • 二进制编码:二进制编码是使用二进制代码对数据进行编码的过程。在二进制编码中,每个字符由 0 和 1 的组合表示。

缩放和标准化

特征缩放是一种用于标准化自变量或数据特征范围的方法。在数据处理中,也称为数据标准化,通常在数据预处理步骤中执行。例如,如果您有多个自变量,例如年龄、薪水和身高;它们的范围分别为(18-100 年)、(25,000-75,000 欧元)和(1-2 米),特征缩放将帮助它们全部处于同一范围内,例如 - 以 0 为中心或在范围内(0,1) 取决于缩放技术。

归一化是一种缩放技术,其中值会被移动和重新缩放,以便它们最终的范围在 0 和 1 之间。它也称为最小-最大缩放。这里,Xmax和Xmin分别是特征的最大值和最小值。

分箱

分箱(也称为分桶)是一种特征工程技术,它将不同的数值子范围分组到箱或桶中。在许多情况下,分箱将数值数据转换为分类数据。例如,考虑一个名为 X 的特征,其最小值为 15,最大值为 425。使用分箱,您可以用以下五个分箱表示 X:

  • Bin 1:15 至 34
  • Bin 2:35 至 117
  • Bin 3:118 至 279
  • Bin 4:280 至 392
  • Bin 5:393 至 425

Bin 1 的范围为 15 到 34,因此 15 到 34 之间的每个 X 值都会出现在 Bin 1 中。在这些 bin 上训练的模型对 17 和 29 的 X 值的反应没有什么不同,因为这两个值都在 Bin 中1.

降维

这是一种使用较少数量的特征(即维度)表示给定数据集的方法,同时仍然捕获原始数据的有意义的属性。1这相当于删除不相关或冗余的特征,或者只是噪声数据,以创建模型变量数量较少。基本上将高维数据转换为低维数据。降维有两种主要方法 -

  • 特征选择:特征选择涉及选择与当前问题最相关的原始特征子集。目标是降低数据集的维度,同时保留最重要的特征。特征选择的方法有多种,包括过滤器方法、包装器方法和嵌入方法。过滤方法根据特征与目标变量的相关性对特征进行排序,包装方法使用模型性能作为选择特征的标准,嵌入式方法将特征选择与模型训练过程结合起来。

  • 特征提取:特征提取涉及通过组合或变换原始特征来创建新特征。目标是创建一组特征来捕获低维空间中原始数据的本质。特征提取的方法有多种,包括主成分分析(PCA)、线性判别分析(LDA)和t分布随机邻域嵌入(t-SNE)。 PCA 是一种流行的技术,它将原始特征投影到低维空间,同时保留尽可能多的方差。

自动化特征工程工具

有几种用于自动化特征工程的工具,让我们看一下其中的一些。

FeatureTools - 这是一个流行的开源 Python 框架,用于自动化特征工程。它适用于多个相关表,并应用各种转换来生成特征。整个过程是使用一种称为“深度特征合成”(DFS)的技术来执行的,该技术递归地应用跨实体集的转换来生成复杂的特征。

Autofeat - 这是一个 Python 库,提供自动化特征工程和特征选择以及诸如 AutoFeatRegressorAutoFeatClassifier 等模型。这些是通过许多科学计算构建的,需要良好的计算能力。以下是该库的一些功能:

  • 使用 fit() 等函数与 scikit learn 模型类似, fit_transform()、predict() 和 Score()。
  • 可以使用 One hot 编码处理分类特征。
  • 包含一个特征选择器类,用于选择合适的特征。
  • 特征的物理单位可以传递,相关特征将被传递 被计算。
  • 包含 Buckingham Pi 定理 – 用于无量纲计算 数量。仅用于表格数据。
  • 仅用于表格数据。

AutoML - 简单来说,自动机器学习可以定义为一个搜索概念,使用专门的搜索算法来查找 ML 管道的每个组成部分的最佳解决方案。它包括:自动化特征工程、自动化超参数优化、)神经架构搜索(NAS

特征工程中的常见问题和最佳实践

常见问题

  • 忽略不相关的特征:这可能会导致模型的预测性能较差,因为不相关的特征对输出没有贡献,甚至可能会给数据增加噪音。该错误是由于缺乏对不同数据集与目标变量之间关系的理解和分析而造成的。

想象一家企业想要使用机器学习来预测每月销售额。他们输入的数据包括员工人数、办公室面积等,这些数据与销售额无关。
修复:通过进行彻底的特征分析来了解哪些数据变量是必要的并删除那些不是必要的,以避免这种情况。

  • 由于太多特征而过度拟合:模型可能在训练数据上具有完美的性能(因为它有效地“记忆”了数据),但在新的、未见过的数据上可能表现不佳。这称为过度拟合。这种错误通常是由于“越多越好”的错误观念造成的。向模型添加太多特征可能会导致巨大的复杂性,使模型更难以解释。

考虑一个预测未来用户增长的应用程序,该应用程序将 100 个特征输入到模型中,但其中大多数特征共享重叠信息。
修复:通过使用降维和特征选择等策略来解决这个问题,以最大限度地减少输入数量,从而降低模型复杂性。

  • 未规范化特征:算法可能会为规模较大的特征赋予更多权重,这可能导致预测不准确。这种错误常常是由于缺乏对机器学习算法如何工作的理解而发生的。如果所有特征都处于相似的规模,大多数算法都会表现得更好。

想象一下,医疗保健提供者使用患者年龄和收入水平来预测某种疾病的风险,但没有将这些具有不同尺度的特征标准化。
修复:应用特征缩放技术将所有变量调整为相似的比例以避免此问题。

  • 忽略处理缺失值 当遇到缺失值时,模型的行为可能会不可预测,有时会导致错误的预测。这种陷阱通常是由于疏忽或假设缺失值的存在不会对模型产生不利影响而发生的。

例如,在线零售商使用购买历史数据来预测客户流失,但没有解决购买数据缺失的情况。
修复:实施处理缺失值的策略,例如数据插补,用统计估计替换缺失值。

最佳实践

  • 确保处理输入特征中缺失的数据:在项目旨在预测房价的现实情况下,并非所有数据条目都可能包含有关房屋年龄的信息。您可以使用“平均插补”等策略来插补缺失的数据,而不是丢弃这些条目,其中使用数据集中房屋年龄的平均值。通过正确处理丢失的数据而不是仅仅丢弃它,模型将有更多的数据可供学习,这可能会带来更好的模型性能。

  • 对分类数据使用 one-hot 编码:例如,如果我们在关于汽车的数据集中有一个特征“颜色”,可能的值为“红色”、“蓝色”和“绿色”,我们会将其转换为三个独立的二进制特征:“is_red”、“is_blue”和“is_green”。该策略使模型能够正确解释分类数据,从而提高模型的发现和预测的质量。

  • 考虑特征缩放:作为一个真实的例子,用于预测疾病的数据集可能包含年龄(1100)和血糖水平测量值(70180)。缩放将这两个特征置于相同的尺度上,允许每个特征对距离计算做出同等的贡献,就像 K 最近邻 (KNN) 算法一样。特征缩放可以提高许多机器学习算法的性能,使它们更加高效并减少计算时间。

  • 在相关的地方创建交互功能:一个例子可以包括预测房价交互,这可能是有益的。创建一个将浴室数量乘以总平方英尺的新特征可能会为模型提供有价值的新信息。交互功能可以捕获线性模型无法看到的数据模式,从而有可能提高模型性能。

  • 删除不相关的特征:在我们需要预测智能手机价格的问题中,智能手机的颜色可能对预测影响不大,可以删除。删除不相关的特征可以简化模型,使其更快、更易于解释,并降低过度拟合的风险。

特征工程不仅仅是机器学习中的预处理步骤;这是决定模型成功或失败的一个基本方面。精心设计的特征可以带来更准确的预测和更好的泛化。数据表示:特征是机器学习算法运行的基础。通过有效地表示数据,特征工程使算法能够识别有意义的模式。因此,有抱负、甚至经验丰富的数据科学家、机器学习爱好者和工程师必须认识到特征工程在从数据中提取有意义的见解方面所发挥的关键作用。通过理解特征工程的艺术并很好地应用它,人们可以释放机器学习算法的真正潜力,并在各个领域推动有影响力的解决方案。

如果您有任何疑问,或者有任何可以改进我的文章的方法,请在评论部分留下。谢谢!

以上是特征工程:释放数据的力量以实现卓越的机器学习模型的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn