数据科学工厂 发表于 2024-7-19 21:28:26

8个特征工程技巧提升机器学习预测准确性

![](data/attachment/forum/plugin_zhanmishu_markdown/202407/72c805615ac02146eeafdd9bf9a41a4c_1721395701_7707.png)

## 引言

对于机器学习从业者来说,掌握各种特征工程技巧是非常有帮助的。毕竟,特征是影响机器学习和深度学习模型实时表现的关键因素。在机器学习领域,提升模型预测准确性的关键之一是选择合适的特征,并剔除那些对模型性能影响不大的特征。 对于数据科学家或机器学习工程师来说,这通常是他们工作中的重要一环,尤其是在构建能够良好泛化到测试数据集的复杂模型时。

以预测心脏病为例,体重指数(BMI)是一个强有力的预测指标。 如果我们在预测一个人的血压水平时忽略了这个特征,结果往往不够准确。因此,BMI是一个人是否患有这些疾病的重要指标,考虑这个特征对预测结果有显著影响。

再比如预测一个人是否会违约的案例。 银行在决定是否放贷前,会询问借款人的薪水、净资产和信用历史等信息。如果让一个人基于这些因素决定是否放贷,他会仔细考虑借款人的总薪水和整体信用历史。

类似地,当机器学习模型接收到与人类相同的数据时,它也会学习如何获取重要的信息,以决定一个人是否会偿还贷款。 如果我们从数据中移除了薪水这样的关键特征,模型将无法准确判断一个人是否会偿还贷款,这会导致预测结果出现较大偏差。

因此,确保机器学习和深度学习模型具备正确的特征,对于它们在测试集和实时数据上表现良好至关重要。

- 机器学习中的特征化技术

我们已经认识到选择合适的特征对于提升模型预测效果至关重要。接下来,[本文](https://towardsdatascience.com/which-feature-engineering-techniques-improve-machine-learning-predictions-227d732068f5 "Source")将探索一些特征化技术,这些技术不仅可以辅助我们的模型进行预测,还能提升预测结果的质量。

## 1. 缺失值填充(Imputation)

数据插补是一种填补数据集中缺失值的技术。尽管我们在网上经常遇到的一些小型数据集,如玩具数据集,它们通常包含了完整的特征和标签,没有异常或缺失值,但现实世界中的数据往往并非如此,它们常常存在缺失值。因此,我们需要采取一些特定的措施来填补这些缺失的数据。

在进行数据插补时,我们有多种方法可供选择。例如,我们可以用特征的平均值来替代缺失值,或者使用中位数或众数插补方法。通过这些方法,我们可以确保数据集中不再有缺失值。

以预测个人是否会拖欠贷款为例,在我们的机器学习模型中,工资是一个重要的特征。但在我们的数据集中,可能并不是所有参与者的工资信息都齐全。在这种情况下,一个有效的策略是使用所有工资数据的平均值来填补那些缺失的工资信息。

## 2. 缩放(Scaling)

在机器学习中,我们通常会根据模型的需要提供不同的特征集,以便模型能够选择最合适的特征来预测结果或目标变量。但值得注意的是,当我们首次获取数据时,这些特征的量级可能各不相同。

以房价预测为例,我们可能会考虑卧室数量和利率这两个特征。卧室数量是按单位计数的,而利率则是以美元为单位的。如果我们直接将这些特征用于机器学习模型,模型可能会错误地认为以美元计价的利率特征在数值上远大于卧室数量。但实际上,这种比较是不合理的,正如我们之前所讨论的。因此,在将这些特征输入模型进行预测分析之前,对它们进行适当的缩放处理是非常关键的。这样可以确保模型能够更准确地理解和比较不同特征对预测结果的影响。

## 3. 归一化(Normalization)

归一化是一种缩放数据的方法,它通过首先确定每个特征的最大值和最小值,然后将数据中的其他值进行转换。通过这种方式,我们确保所有特征的值域都在0到1之间。这样做可以帮助我们的模型更有效地进行学习和预测。

以判断客户是否会终止互联网服务为例,月费和使用年限是两个关键特征。月费通常以美元为单位,而使用年限则以年或月为单位。由于这两个特征的量级不同,应用归一化处理就显得尤为重要。它可以帮助模型更准确地理解不同特征对预测结果的影响,从而提高预测的准确性。

## 4. 标准化(Standardization)

特征标准化是一种数据转换技术,它通过调整数据使得每个特征的输出具有单位方差和零均值。这种方法有助于解决不同特征量级差异导致的模型误判问题,即模型可能会错误地认为数据量级较大的特征更重要。通过标准化处理,可以确保模型在预测时能够更公正地评估各个特征的重要性,从而提高预测的准确性。

例如,在估算汽车价格时,我们会考虑气缸数和行驶里程这两个特征。由于这两个特征的量级不同,我们需要进行标准化处理,使得它们在模型预测前有一个统一的衡量标准。这样,模型在分析时能够更准确地比较这些特征对汽车价格的影响。

## 5. 独热编码(One Hot Encoding)

假设我们的数据集中包含许多类别特征,如国家、州、姓名等。这些特征在原始数据中通常以文本形式出现,而机器学习模型需要的是数值型数据。为了使模型能够处理这些类别特征,我们需要将它们转换为数值型特征。

这种转换过程称为独热编码。在独热编码中,每个类别特征都被视为一个独立的列,每个列对应一个类别。如果某个类别在数据中出现,则相应的列值为1;如果没有出现,则为0。例如,如果我们有一个“国家”特征,包含“中国”、“美国”等选项,独热编码后,每个国家都会被转换成一个独立的列,每个列的值要么是1(表示该类别存在),要么是0(表示该类别不存在)。

通过这种方式,机器学习模型就可以更容易地处理这些原本是文本形式的类别数据,从而提高模型的预测能力。

## 6. 响应编码(Response Coding)

响应编码是一种处理类别数据的方法,它与独热编码相似,但转换方式有所不同。在响应编码中,我们关注的是每个类别目标的平均值。以房价预测为例,为了预测不同地区的房价,我们会将地区进行分组,并计算每个地区的平均房价。然后,用这个平均房价来替代原来的地区名称,将原本的类别特征转化为数值特征。这样,模型就能更直观地理解不同社区对房价的影响。

以汽车价格预测为例,汽车类型如SUV或轿车可能会影响价格。在这种情况下,响应编码可以将汽车类型这一类别特征转换为数值特征。具体做法是,分别计算SUV和轿车的平均价格。如果汽车类型是SUV,就用SUV的平均价格来替代;如果是轿车,就用轿车的平均价格来替代。通过这种方式,模型可以更准确地预测不同类型汽车的价格。

## 7. 处理异常值(Handling Outliers)

异常值是指在数据集中显得与众不同的数据点。尽管如此,数据中的某些异常值对于模型正确预测结果来说可能是非常关键的。如果数据集中存在大量异常值,可能会影响模型对这些异常值的预测准确性,并降低其对实际数据的泛化能力。因此,在训练模型并将其部署到生产环境之前,我们需要采取适当措施来处理这些异常值。

处理异常值的方法多种多样,其中一种常见的方法是计算每个特征的标准差。如果某个数据点的值超出了均值3个标准差的范围,我们通常会将其识别为异常值并予以剔除,以避免它们对机器学习模型的预测结果产生负面影响。

以预测个人是否会拖欠贷款为例,我们可能会考虑使用个人工资信息作为特征。然而,工资数据可能存在不准确的情况,并且可能包含大量异常值。如果使用这些包含异常值的数据训练机器学习模型,模型在测试集或实际应用中的表现可能会大打折扣。因此,最佳做法是在将数据输入模型之前,先剔除异常值。这可以通过分析工资数据的标准差来实现,自动删除那些超出3个标准差范围的值,从而帮助模型做出更可靠的预测。

## 8. 对数转换(Log Transformation)

当数据分布呈现出明显的偏斜,即大部分数据值集中在某个区域而少数数据点远离平均水平时,模型可能难以准确捕捉这种复杂的数据关系。在这种情况下,我们可以采用对数变换技术来调整数据,减少其偏斜度。这样做可以使模型对异常值具有更好的鲁棒性,并能更准确地泛化到实际数据中。对数变换是一种有效的特征工程方法,能够显著提升机器学习模型的预测性能。

以预测个人是否会拖欠贷款为例,我们可以考虑对工资数据进行对数变换。因为工资数据通常表现出显著的偏斜性:大多数人(约80%)的收入处于基本工资水平,而少数人(约20%)的收入则远高于平均水平。这种偏斜性可以通过对数变换来调整,从而使模型能够更公平地处理不同收入水平的数据,提高预测的准确性。

## 总结

阅读完这篇文章,你应该已经掌握了对构建有效的机器学习模型至关重要的多种特征工程技巧。恰当地应用这些最佳的特征工程技术,不仅能够帮助我们更高效地处理数据,还能为公司带来深刻的洞见和价值,这正是人工智能应用的成果之一。
页: [1]
查看完整版本: 8个特征工程技巧提升机器学习预测准确性