机器学习 - 标准化没有理论最大值的特征

Sto*_*son 4 machine-learning normalization

什么方法是对没有理论最大值的特征进行归一化/标准化的最佳方法?

例如,股票价值一直在 0-1000 美元之间的趋势并不意味着它不能进一步上涨,那么正确的方法是什么?

我想过在更高的最大值(例如 2000 )上训练模型,但感觉不对,因为 1000-2000 范围内没有可用的数据,我认为这会引入偏差

Dav*_*ale 5

TL;DR:使用 z-scores,可能采用 log,可能采用逆 logit,可能根本不标准化。

如果您希望安全地归一化,请使用单调映射,例如:

要映射(0, inf)(-inf, inf),您可以使用y = log(x)

要映射(-inf, inf)(0, 1),您可以使用y = 1 / (1 + exp(-x))(inverse logit)

要映射(0, inf)(0, 1),您可以使用y = x / (1 + x)(inverse logit after log)

如果您不关心边界,请使用线性映射:y=(x - m) / s,其中m是特征的均值,s是其标准差。这称为标准缩放,有时也称为 z 评分。

你应该问自己的问题:为什么要标准化?. 你打算怎么处理你的数据?将其用作输入功能?还是将其作为目标进行预测?

对于输入特征,将其不归一化是可以的,除非您对模型系数(如 Ridge 或 Lasso)进行正则化,如果所有系数都在相同的尺度(即,在标准缩放之后),则效果最佳。

对于目标特征,将其保留为非标准化有时也可以。

加法模型(如线性回归或梯度提升)有时对对称分布效果更好。股票价值(以及一般货币价值)的分布通常向右倾斜,因此记录日志使它们更方便。

最后,如果你用带有 sigmoid 激活函数的神经网络预测你的特征,它本质上是有界的。在这种情况下,您可能希望目标也有界。为此,您可以将其x / (1 + x)用作目标:如果x始终为正,则该值将始终介于 0 和 1 之间,就像神经网络的输出一样。