哪些特征工程技术改善了机器学习预测?

哪些特征工程技术改善了机器学习预测?

理解各种特征工程技术对于ML从业者来说是很方便的。毕竟,特征是机器学习和深度学习模型如何实时运转的最具决定性的因素之一。如果你想了解更多关于机器学习的相关内容,可以阅读以下这些文章:
用合成数据创建机器学习欺诈模型
以数据科学家或机器学习工程师的身份逐步构建数据管道
一文了解机器学习中的F1分数(F1 Score)
机器学习中的文本分类是什么?

当涉及到机器学习时,人们可以做的事情是选择正确的特征,并删除那些对模型性能影响可忽略不计的特征,以改进ML模型预测。因此,选择正确的特征可能是数据科学家或机器学习工程师最重要的步骤之一,他们经常要做许多工作,尤其是构建那些能够分别在测试数据集上很好地泛化的复杂模型。

例如,一个例子是预测一个人是否会患心脏病,那么身体质量指数(BMI)就是最有力的指标之一。当我们试图预测一个人的血压(BP)水平时,如果不考虑这一特征又不在我们的数据里集中使用它,通常会导致结果不太准确。在这种情况下,BMI可以是一个人患有这些疾病的有力指标。因此,考虑这一特征很重要,因为它会对结果产生很大影响。

另一个例子是预测一个人是否会拖欠贷款。在贷款给一个人之前,银行会询问一系列问题,如工资、净资产和贷款前的信用记录。如果我们把任务交给一个人,让他根据一系列因素(如上述因素)来决定是否必须向一个人提供贷款,他将检查这个人的工资情况和整体信用记录。

类似地,当数据以与人类相同的方式提供给ML模型时,ML模型将学会这一系列方法,以决定一个人是否会偿还贷款。如果我们删除工资等功能,ML模型将丢失关键信息,无法完美地破译一个人是否将偿还贷款。因此,它的预测可能完全错误,因为数据中缺少最重要的特征之一(工资)因此,这突出了我们的机器学习和深度学习模型分别在测试集和实时数据上运转正确特征的重要性。

机器学习中的各种特征化技术

既然我们已经了解了在确定模型的预测质量时决定正确特征的重要性,现在我们将继续寻找各种有助于模型预测并改善其结果的特征化技术。

缺失值插补

这是我们填充数据中的缺失值的一种方法。我们在网上找到了大量的数据集,比如玩具数据集,其中包含了几乎所有的特征和标签,没有异常或缺失的数据。然而,这在现实生活中并不真实,因为现实生活中的数据大都包含缺失值。因此,我们必须采取特定的步骤来确保以某种方式填充缺失的值。

我们可以用各种方法进行估算,比如可以用特征的均值或平均值来填充缺失值,或用特征的中值插补和众数插补。也因此,通过这些方法,我们不会得到包含缺失值的数据。

如果我们要预测一个人是否会拖欠贷款,我们会把“工资”作为我们机器学习模型的重要特征之一。但是,我们的数据中可能不会出现所有参与者的薪资信息,最好的方法之一是分别用整个工资特征的平均值来插补或填充这些缺失值。

特征缩放

我们倾向于为我们的模型提供一组不同的特征,基于这些特征,来确定用于预测结果或目标变量的最佳特征。然而,需要注意的是,当我们最初接收数据时,我们正在使用的特征可以具有不同的尺度。

以对提高房价的特征为例。在这种情况下,特征可能是卧室的数量和房利率。我们无法比较这两个特点,因为卧室的数量是以阿拉伯数字计算,而利率则又给这个数字加了一个“美元”。如果我们把这个数据给我们的ML模型,它会简单地理解为美元是比卧室数量高出很大数量的单位。然而,正如我们上文所看到的,这与事实相去甚远。因此,重要的是在将特征提供给用于预测的模型之前执行特征的缩放操作。

常态化

这是我们执行缩放操作的一种方式,在转换数据中的其他值之前,对所考虑的各个特征取最大值和最小值。我们确保特征的最小值为0,最大值为1,使我们能够使用模型产出最佳结果,并获得良好的预测。

举个例子,客户是否会流失或留下,月费和使用时长等功能就显得很重要。每月的费用可以是美元,而使用时长可以是年或月为单位。由于它们具有不同的规模,常态化就变得非常方便,能确保我们获得最佳的模型预测。

标准化

在转换特征时,标准化类似于常态化,不同之处在于我们以这样一种方式转换数据,即我们得到的输出值对于每个单独的特征都具有单位方差和零均值。正如我们已经看到的那样,假设一个特征比另一个特征更重要,各种特征具有不同的规模往往会使模型感到困惑,而执行标准化操作可以帮助确保我们获得最好的预测。因此,这是机器学习从业者在构建最佳预测时经常使用的方法。

在预测汽车价格时,我们会分别考虑气缸数量和行驶里程等特征。由于这两个特征不具有相似的规模,因此在给出预测模型之前,我们必须执行标准化,以便在特征之间具有共同点。

独热编码

想象一个场景,在我们的数据中有大量的分类特征。我们的数据中的一些分类特征可以包括诸如国家、州、名称等特征。我们看到,从这些特征中,我们只生成了这些实例的出现,而没有得到数值表示。

为了使我们的ML模型能够很好地利用数据工作,分类特征(如上所述)应转换为数值特征,以便模型进行计算。因此,我们可以执行独热编码的步骤,以便将分类特征转换为数值特征。

现在可能会有人问,算法是如何做到这一点的。它只是将每个功能的每个类别视为一个单独的列。特定类别的存在或不存在将被标记为1或0. 如果我们发现特定类别存在,我们将使值为标记1,反之亦然。

响应编码

这是另一种与独热编码非常相似的方法,因为它可以处理分类数据。然而,它将分类特征转换为数值特征的过程与早期的方法不同。

在响应编码中,我们最感兴趣的是每个类别的目标的平均值。例如,以确定房价为例。为了预测不同地区的房价,我们将对地区进行分组,并找出每个地区的平均房价。稍后,我们将用每个地点的特定平均房价来代替地点,以表示之前作为分类特征的数值。因此,我们的模型可以从本质上了解社区在决定房价方面的影响有多大。在这种情况下,响应编码非常方便。

如果要预测汽车价格,SUV或轿车等汽车类型可能会起决定作用。因此,在使用响应编码转换该分类特征(汽车类型)的情况下,响应编码还是有用的。我们只考虑SUV和轿车的平均价格。如果我们将SUV作为汽车类型,我们将其替换为SUV汽车细分市场的平均价格。当我们将汽车类型视为轿车时,我们将其替换为轿车细分市场的平均价格。

处理异常值

异常值是数据中被视为异常的数据点。然而,同样值得注意的是,数据中的一些异常值对于模型是否能够确定正确的结果非常有用和重要。如果我们发现数据中存在大量的异常值,那么在给出异常值的正确预测时,它可能会扭曲模型,而不能很好地推广实时数据。因此,我们必须采取正确的步骤,以确保在训练模型并将其投入生产之前删除它们。

有多种方法可以用来去除数据中的异常值,包括从每个特征中找出标准偏差。如果数据点高于或低于平均值3个标准差,我们可以将其归类为异常值,并将其删除,这样它们就不会影响机器学习模型的预测。

预测一个人是否会拖欠贷款,可能会有关于这个人的工资的信息。但工资信息可能并不总是准确的,并且在此功能中可能有很多异常值,用这些数据训练我们的ML模型通常会导致它在测试集或看不见的数据上表现不佳。因此,最好是在将数据提供给ML模型之前从数据中删去异常值(这可以通过了解工资的标准偏差来完成,高于或低于3个标准偏差的值将自动删除),以便模型进行稳健预测。

对数变换

当我们发现数据中存在严重偏差时,可以使用这种技术。如果存在大量偏差,即数据包含大量集中在特定区域的值,而少数异常值和数据点远离均值,则我们的模型很可能会不考虑和理解这种复杂关系。

因此,我们可以使用对数转换来转换该数据并减少偏差度,以使模型对异常值更具稳固性,并能够在实时数据上很好地推广。对数变换是一种方便的特征工程技术,可以很好地提高ML模型的性能。

与上面预测一个人是否会拖欠贷款的问题类似,我们也可以将对数转换应用于“工资”,因为我们通常在工资信息中看到很多偏差。大部分人(约80%)领取基本工资,而小部分人(约20%)领取大额工资。数据中有相当大的偏差,而这可以通过使用对数变换来消除。

结论

在阅读完本文之后,我相信你已经能够理解对你的机器学习模型非常重要的各种特征工程技术。在恰当的时机,使用特征工程技术能非常方便为公司提供有价值的预测,这即是人工智能的魅力。你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Suhas Maddali
翻译作者:高佑兮
美工编辑:过儿
校对审稿:Chuang
原文链接:https://towardsdatascience.com/which-feature-engineering-techniques-improve-machine-learning-predictions-227d732068f5