数据标准化的一个问题

预处理(比如,归一化,标准化等)对于训练的收敛,是很重要的;那么,问题来了,训练时,对数据做了各种预处理,预测时,是否也要做?

1、先抛结论:训练时做了各种预处理,在预测时,当然也要做,而且要尽量相同;
2、说起来容易,做起来难,接下来,可能会引发另一个矛盾:训练时,数据量很大,可以对特征进行各种统计(avg,max,min,std…),进而做各种预处理;预测时,往往是单样本,这些统计参数往往无意义,那该如何复现训练时的预处理呢?
a.还是先抛结论:这些统计参数,采用训练集的;
b.首先,训练集是整体分布的一个完备采样,训练集的分布跟整体分布近似认为是一致的,否则,训练集有问题;c.所以,训练集的各种统计参数,是可以用来估计整体分布的相应统计参数的,做预处理时,都采用这些参数,是比较合理的;
3、真实场景下,其实没这么复杂,一般来说:a.对于图像类和信号类数据,往往有上下限,直接用上下限来做归一化即可,比如8 bit的图像,可以统一除255 等;
b.对于文本类数据,处理思路是先做one-hot,再做embedding,进而继续各种任务,基本不涉及这种归一化;c.对于表格类数据,比如房价预测这种,是需要这种特殊处理的,但是,思路也很清
晰,不会造成太大的困扰;
4、深度学习的模型,鲁棒性往往都很强,些许的数据偏差,对结果来说,不见得会造成很大的差异;

以上整理自百度技术学院李晓华老师。

附标准化公式(我常用的):

这能使数据统一落在[0,1]的区间内

用excel里的公式表达就是 =(A1-MIN(A:A))/(MAX(A:A)-MIN(A:A)) *A为列号

Share

You may also like...