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

时间:2017-10-14 11:36:08

标签: machine-learning normalization

哪种方法最适合标准化/标准化没有理论最大值的特征?

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

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

1 个答案:

答案 0 :(得分:4)

TL; DR:使用z分数,可能记录日志,可能采取逆logit,也许根本不进行标准化。

如果您希望安全标准化,请使用单调映射,例如:

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

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

要将(0, inf)映射到(0, 1),您可以使用y = x / (1 + x)(日志后反向logit)

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

你应该问自己的问题:为什么要正常化?。你打算怎么处理你的数据?用它作为输入功能?或者将其用作预测目标?

对于输入要素,保持未归一化是正常的,除非您对模型系数(如Ridge或Lasso)进行正则化,如果所有系数都在相同的范围内,则效果最佳(也就是说,在标准缩放之后。)

对于目标功能,将其保持非标准化有时也可以。

添加模型(如线性回归或梯度增强)有时可以更好地使用对称分布。股票价值的分布(以及一般的货币价值)通常偏向右侧,因此记录日志会使它们更方便。

最后,如果您使用具有S形激活功能的神经网络预测您的特征,则具有固有的界限。在这种情况下,您可能希望目标也受限制。为实现此目的,您可以使用x / (1 + x)作为目标:如果x始终为正,则此值将始终介于0和1之间,就像神经网络的输出一样。