Estoy intentando utilizar la regresión de Random Forest en scikits-learn. El problema es que estoy recibiendo un error de prueba muy alto:
train MSE, 4.64, test MSE: 252.25.
Este es el aspecto de mis datos: (azul: datos reales, verde: predicción):
Estoy utilizando el 90% para la formación y el 10% para la prueba. Este es el código que estoy utilizando después de probar varias combinaciones de parámetros:
rf = rf = RandomForestRegressor(n_estimators=10, max_features=2, max_depth=1000, min_samples_leaf=1, min_samples_split=2, n_jobs=-1)
test_mse = mean_squared_error(y_test, rf.predict(X_test))
train_mse = mean_squared_error(y_train, rf.predict(X_train))
print("train MSE, %.4f, test MSE: %.4f" % (train_mse, test_mse))
plot(rf.predict(X))
plot(y)
¿Cuáles son las posibles estrategias para mejorar mi adaptación? ¿Hay algo más que pueda hacer para extraer el modelo subyacente? Me parece increíble que después de tantas repeticiones del mismo patrón el modelo se comporte tan mal con los nuevos datos. ¿Tengo alguna esperanza al intentar ajustar estos datos?
0 votos
¿Está entrenando esta función periódica con el eje x como entrada, y el eje y como etiqueta para x <= 245, y luego probando para x > 245? ¿O estoy malinterpretando tu gráfico?
0 votos
En realidad, el eje x es el índice de observación, en total hay 300 observaciones, por lo que a partir de 245, que son los datos de prueba no se utiliza para el entrenamiento del modelo, el vector de características de entrada se compone de números enteros, tiene la forma (300,2) y se asemejan a una función lineal del índice de observación, por lo que no añadir información al respecto con el fin de no complicar la cuestión.
1 votos
Tal vez quiera eliminar primero el ciclo (la parte estacional) de sus datos (y la tendencia).
0 votos
¿Ha investigado el análisis de series temporales? No me queda claro qué hay en tu eje x pero me parece periódico. Comprueba aquí y hazme saber si esto te ayuda: otexts.org/fpp/7/5