我有一组具有5000个特征的输入,其值从0.005到9000000不等。每个特征具有相似的值(值为10ish的特征也不会具有0.1ish的值)
我正在尝试对此数据集应用线性回归,但是,广泛的输入值会抑制有效的梯度下降。
处理这种差异的最佳方法是什么?如果规范化最好,请详细说明实现此规范化的最佳方法。
谢谢!
答案 0 :(得分:2)
只需将其作为预处理步骤执行。你可以这样做:
1)计算训练集中每个特征的平均值并存储它。要小心,不要弄乱特征均值和样本均值,这样你就会得到一个大小为[number_of_features(5000ish)]的向量。
2)计算标准。对于训练集中的每个功能并存储它。 [number_of_feature]的大小以及
3)将每个培训和测试条目更新为:
updated =(original_vector - mean_vector)/ std_vector
就是这样!
代码如下:
# train_data shape [train_length,5000]
# test_data [test_length, 5000]
mean = np.mean(train_data,1)
std = np.std(train_data,1)
normalized_train_data = (train_data - mean)/ std
normalized_test_data = (test_data - mean)/ std