Я пытаюсь построить NN для регрессии с Керасом в Tensorflow.
Я пытаюсь предсказать ранжирование диаграммы песни на основе набора функций, я выявил сильную корреляцию наличия низкого признака 1, высокого признака 2 и высокого признака 3 с высоким позиция на графике (низкий выходной рейтинг, например, позиция 1).
Однако после обучения моей модели, MAE выходит примерно на 3500 (очень очень высокий) как на тренировочном, так и на тестовом наборе. Прибавляя некоторые значения, кажется, что это дает наименьший выходной рейтинг для наблюдений с низкими значениями во всех трех функциях.
Я думаю, это может быть связано с тем, как я нормализую свои данные. После преобразования его в информационный кадр Pandas со столбцом для каждой функции, я использую следующий код для нормализации:
def normalise_dataset(df):
return df-(df.mean(axis=0))/df.std()
Я использую последовательную модель с одним плотным входным слоем с 64 нейронами и одним плотным выходным слоем с одним нейроном. Вот код определения для этого:
model = keras.Sequential([
keras.layers.Dense(64, activation=tf.nn.relu, input_dim=3),
keras.layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
Я инженер-программист, а не специалист по данным, поэтому я не знаю, является ли эта модель правильной конфигурацией для моей проблемы, я очень открыт для советов о том, как сделать ее более подходящей для моего использования дело.
Спасибо
РЕДАКТИРОВАТЬ: Вот несколько первых записей моих тренировочных данных, около 100 000 записей. Последний столбец (finalPos) содержит метки, поле, которое я пытаюсь предсказать.
chartposition,tagcount,artistScore,finalPos
256,191,119179,4625
256,191,5902650,292
256,191,212156,606
205,1480523,5442
256,195,5675757,179
256,195,933171,7745