我的输入数据如下:
data <- read.table(text="species observer
1 A,B
1 A,B
1 B,E
1 B,E
1 D,E,A,C,C
1 F" , header = TRUE, stringsAsFactors = FALSE)
因此第1列和第2列的范围是-1至1,第3-6列的范围是2000-5000
输出数据范围是5.0到10.0。我希望为每个输入向量预测单个实值输出,并且正在使用具有“ mse”损失函数的线性回归密集神经网络。
我想我应该将第3-6列缩放到0和1之间,并保持第1和2列不变。那是正确的还是我也应该将列1和2缩放到0到1之间?如果我缩放输入,这会影响我的预测输出值还是只会加速学习?有没有必要缩放输出?
答案 0 :(得分:0)
您应该在相同范围内缩放所有功能。标准方法是将平均值居中并使用方差进行缩放:
1)使用训练集(例如col1_av = average(col1_train),col2_av = average(col2_train),...)计算特征的均值和方差
2)从每个特征中减去相应的平均值并按方差标定比例(例如[x1 = -0.1144887,x2 = 0.3534122,...]->(x1-col1_av)/ col1_var)。测试集中的样本必须使用训练集中估计的值进行缩放。
特征量级如此之大不仅会影响输出,而且不仅会影响学习过程,因为特征量级较大的特征在模型中的权重也会更大。
通常不需要缩放输出。
有趣的读物:https://medium.com/greyatom/why-how-and-when-to-scale-your-features-4b30ab09db5e