使用二进制和连续变量规范化数据以进行机器学习
Normalizing data with binary and continuous variables for machine learning
有以下数据:
我正在尝试找出正确的规范化预处理。一些特征是分类特征,编码为 'one-hot-encoding'(类别 a-c),一些特征代表事件发生后的时间,还有一些代表发布版本。
我正在考虑使用 sklearn MinMaxScaler 将数据从 0 归一化为 1,但我不确定这是正确的方法。
您如何决定适合您的数据的归一化技术?
没有灵丹妙药,但有一些原则适用:
- 归一化的原因是没有特征过度支配损失函数的梯度。我认为,有些算法比其他算法更擅长处理非规范化特征,但一般来说,如果你的特征具有截然不同的尺度,你可能会遇到麻烦。因此,归一化到 0 - 1 范围是明智的。
- 您想最大化特征的熵,以帮助算法分离样本。您可以通过在给定范围 (0-1) 内尽可能多地分布值来实现此目的。有时,以不同于其他部分的方式缩放特征的某些部分 space 可能很有价值。例如,如果有 10 个版本,但 6 个基本相同,而其他 4 个版本彼此之间有很大差异,那么进行扩展可能是有意义的,这样前六个版本靠得很近,其余的更分散。
- 第 2 点意味着现在缩放是您训练/训练算法的一部分,请记住这一点!如果您正在进行交叉验证,请单独缩放折叠,否则您将使用测试数据训练整体的一部分。
- 有些算法(想到朴素贝叶斯)根本不适用于连续值,而是适用于分类值。确保您知道您选择的算法可以使用什么。
有以下数据:
我正在尝试找出正确的规范化预处理。一些特征是分类特征,编码为 'one-hot-encoding'(类别 a-c),一些特征代表事件发生后的时间,还有一些代表发布版本。
我正在考虑使用 sklearn MinMaxScaler 将数据从 0 归一化为 1,但我不确定这是正确的方法。
您如何决定适合您的数据的归一化技术?
没有灵丹妙药,但有一些原则适用:
- 归一化的原因是没有特征过度支配损失函数的梯度。我认为,有些算法比其他算法更擅长处理非规范化特征,但一般来说,如果你的特征具有截然不同的尺度,你可能会遇到麻烦。因此,归一化到 0 - 1 范围是明智的。
- 您想最大化特征的熵,以帮助算法分离样本。您可以通过在给定范围 (0-1) 内尽可能多地分布值来实现此目的。有时,以不同于其他部分的方式缩放特征的某些部分 space 可能很有价值。例如,如果有 10 个版本,但 6 个基本相同,而其他 4 个版本彼此之间有很大差异,那么进行扩展可能是有意义的,这样前六个版本靠得很近,其余的更分散。
- 第 2 点意味着现在缩放是您训练/训练算法的一部分,请记住这一点!如果您正在进行交叉验证,请单独缩放折叠,否则您将使用测试数据训练整体的一部分。
- 有些算法(想到朴素贝叶斯)根本不适用于连续值,而是适用于分类值。确保您知道您选择的算法可以使用什么。