Sto*_*son 4 machine-learning normalization
什么方法是对没有理论最大值的特征进行归一化/标准化的最佳方法?
例如,股票价值一直在 0-1000 美元之间的趋势并不意味着它不能进一步上涨,那么正确的方法是什么?
我想过在更高的最大值(例如 2000 )上训练模型,但感觉不对,因为 1000-2000 范围内没有可用的数据,我认为这会引入偏差
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 之间,就像神经网络的输出一样。
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |