我试图建立一个多元回归模型来使用以下特征来预测房价:
[bedrooms bathrooms sqft_living view grade]
= [0.09375 0.266667 0.149582 0.0 0.6]
我使用标准化和缩放功能sklearn.preprocessing.MinMaxScaler
.
我使用 Keras 构建模型:
def build_model(X_train):
model = Sequential()
model.add(Dense(5, activation = 'relu', input_shape = X_train.shape[1:]))
model.add(Dense(1))
optimizer = Adam(lr = 0.001)
model.compile(loss = 'mean_squared_error', optimizer = optimizer)
return model
当我去训练模型时,我的损失值非常高,大约为 4 或 40 万亿,并且每个周期只会下降约 100 万,使得训练速度慢得难以置信。起初我尝试提高学习率,但没有多大帮助。然后我做了一些搜索,发现其他人使用了 log-MSE 损失函数,所以我尝试了一下,我的模型似乎工作得很好。 (开始时损失为 140,400 个 epoch 后下降到 0.2)
我的问题是,当我看到线性/多元回归问题的 MSE 值非常大时,我是否总是只使用 log-MSE?或者我可以做其他事情来尝试解决这个问题?
关于为什么会出现这个问题的猜测是我的预测变量和响应变量之间的规模有很大不同。X
的范围在 0-1 之间,而最高的Y
达到了800万。 (我是否应该缩小我的Y
的?然后缩小规模进行预测?)
很多人相信缩放一切。如果你的y
达到 800 万,我会缩放它,是的,当你稍后得到预测时,我会反转缩放。
不用太担心具体是什么loss
你看到的号码。当然,40万亿有点高得离谱,这表明可能需要对网络架构或参数进行更改。主要关注的是验证损失是否实际上在减少,以及网络是否真正在减少。如果,正如你所说,它“在 400 个时期后下降到 0.2”,那么听起来你走在正确的轨道上。
对于回归问题,除了 log-mse、mse 和 mae 之外,还有许多其他损失函数。看一下these https://heartbeat.fritz.ai/5-regression-loss-functions-all-machine-learners-should-know-4fb140e9d4b0。希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)