Я пытался построить модель множественной регрессии для прогнозирования цен на жилье, используя следующие функции:
[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 триллионов, и они будут снижаться примерно на миллион за эпоху, делая обучение невероятно медленным. Сначала я попытался увеличить скорость обучения, но это не сильно помогло. Затем я провел поиск и обнаружил, что другие использовали функцию потери log-MSE, поэтому я попробовал ее, и моя модель, кажется, работала нормально. (Началось с потери 140, снизилось до 0,2 после 400 эпох)
Мой вопрос: всегда ли я использую log-MSE, когда вижу очень большие значения MSE для задач линейной / множественной регрессии? Или я могу предпринять другие действия, чтобы попытаться решить эту проблему?
Предположение о том, почему возникла эта проблема, заключается в том, что шкала между моим предиктором и переменными ответа сильно различалась. X
находятся между 0-1, в то время как самый высокий Y
поднялся до 8 миллионов. (Должен ли я уменьшить свои Y
и затем увеличить для прогнозирования?)