何时对数据科学中的特征进行规范化或正则化

数据挖掘 机器学习 正常化 数据分析
2022-03-01 17:52:47

我如何知道何时需要使用规范化以及何时需要对特征进行正则化。我知道,当我需要缩放数据的某些特征/列中的最小值和最大值之间存在很大差异时,如果我使用 SVM 或 KNN 或集群,我也需要缩放数据。

但是我怎么知道何时规范化以及何时规范化特征呢?例如,如果我有 200 个特征和 10 000 行,我怎么知道?有什么方法可以绘制我的数据并查看我可以使用什么?

4个回答

第一步是了解您使用的算法是如何工作的。某些算法在缩放时效果更好(通常基于距离),而其他算法则不行(例如随机森林)。了解算法的工作原理将有助于理解何时(以及为什么)应该扩展数据。

1)归一化使训练数据对规模不那么敏感。

2)正则化——当你在训练集上过度拟合并且在训练集上的泛化能力很差。

3) 200 列和 100000 行?尝试使用以下方法将数据集转储到数据库或 pandas 中:

import pandas as pd
df = pd.read_csv('my_file.csv',chunksize=1000)
for chunk in df:
    #chunk processing

只有一条关于正则化的评论,因为您在同一个句子中将它与规范化一起使用。

正常化

在我看来,归一化应该在模型评估的早期就被考虑在内,正如其他发帖人所说,它在很大程度上取决于您使用的 ML 模型(当然还有您的数据),归一化的影响有多大。所以对于基于决策树的模型,它可能影响很小或没有影响,而对于 KNN,它很可能有很大的影响。

正则化

相反,正则化是我要做的最后一步之一。我会尝试首先(大致)优化所有其他参数,然后进行正则化,然后,如果需要,我会看看我是否仍然可以在此之后微调其他一些参数。恕我直言,正则化不应该是第一步,也因为根据我的经验,正则化值与几乎所有其他参数都有很强的相互依赖性。并非所有参数都如此。例如,如果您使用lightgbm模型可以生成的最大叶子数的参数似乎相当稳定。如果您曾经针对您的 ML 问题对其进行过优化,您几乎可以肯定地保持不变,即使您更改了其他参数。因此,如果您可以为您的模型识别出这样的“稳定”参数,最好先优化它们。

另一方面,如果正则化几乎影响所有其他参数,您可能应该最后这样做,看看在没有正则化的情况下您能走多远,然后看看您是否可以通过应用正则化进一步改进它。

当然,当需要正则化时,也有明显的迹象。您只需要查看验证和训练错误以及两者的进展情况。粗略地说,如果在进行更改后您的训练错误减少而验证错误增加,则您的更改增加了模型的过度拟合。因此,如果您发现训练和验证错误之间的差距很大,那么您应该检查是否可以减少过度拟合,并且这种正则化只是一种可能性。

Normalization将特征重新缩放到 [0,1]。归一化的目标是将数据集中数值列的值更改为通用比例,而不会扭曲值范围的差异。对于机器学习,每个数据集都不需要标准化。仅当要素具有不同的范围时才需要。例如,考虑一个包含两个特征的数据集,年龄和收入。其中年龄范围从 0 到 100,而收入范围从 0 到 100,000 甚至更高。收入大约是年龄的1000倍。因此,这两个功能处于非常不同的范围内。当我们进行进一步的分析时,例如多元线性回归,归因收入将由于其较大的值而在本质上对结果产生更大的影响。但这并不一定意味着它作为预测器更重要。所以我们对数据进行归一化,使所有变量都在同一范围内。当您不知道数据的分布或知道分布不是高斯分布(钟形曲线)时,归一化是一种很好的技术。当您的数据具有不同的尺度并且您使用的算法不对数据的分布做出假设时,规范化非常有用,例如 k 最近邻和人工神经网络。

Regularization是一种特征缩放技术,旨在解决过拟合问题。通过在损失函数中增加一个额外的部分,学习算法中的参数更有可能收敛到更小的值,这可以显着减少过拟合。正则化显着降低了模型的方差,而不会显着增加其偏差。训练机器学习模型的主要目标之一是避免过度拟合。如果模型过度拟合数据集,则该模型的准确性会很低。发生这种情况是因为您的模型过于努力地捕捉训练数据集中的噪声。我们所说的噪声是指数据点并不能真正代表数据的真实属性,而是随机性。学习这些数据点,让你的模型更灵活,