¿Cómo se puede hacer el pronóstico de series de tiempo usando bosques aleatorios?

Estás leyendo la publicación: ¿Cómo se puede hacer el pronóstico de series de tiempo usando bosques aleatorios?

Los modelos de pronóstico de series de tiempo tradicionales como ARIMA, SARIMA y VAR se basan en el procedimiento de regresión, ya que estos modelos necesitan manejar las variables continuas. Random forest es también uno de los modelos de aprendizaje automático más utilizados que tienen un muy buen rendimiento en las tareas de clasificación y regresión. Un modelo de regresión de bosque aleatorio también se puede usar para el modelado y pronóstico de series temporales para lograr mejores resultados. En este artículo, discutiremos cómo se pueden hacer modelos y pronósticos de series de tiempo utilizando un regresor de bosque aleatorio. Los puntos principales que se discutirán en el artículo se enumeran a continuación.

Tabla de contenido

  1. Acerca del regresor de bosque aleatorio
  2. Uso de regresión de bosque aleatorio en series de tiempo
  3. El procedimiento de modelado
    1. Importación de bibliotecas
    2. Conversión de datos
    3. Ajuste del modelo
    4. Cargando datos
    5. Evaluación de modelos

Empecemos echando un vistazo rápido a la regresión de bosque aleatorio.

Acerca del regresor de bosque aleatorio

Un modelo de bosque aleatorio es un conjunto de muchos árboles de decisión donde los árboles de decisión se conocen como aprendices débiles. Se puede aplicar a problemas de clasificación y regresión. Además, es un modelo ampliamente utilizado para el análisis de regresión. El procedimiento de regresión usando bosques aleatorios se puede lograr en los siguientes pasos:

  • División de datos: El proceso pasa por la división de características y cada fila es responsable de la creación de árboles de decisión.
  • Toma de decisiones: Cada árbol toma su decisión individual en base a los datos.
  • Agregación de decisiones: En este paso, las predicciones de valor promedio de los árboles se convierten en el resultado final.
🔥 Recomendado:  Cómo iniciar un negocio de dropshipping: guía completa para 2023

Este promedio de decisiones de los árboles hace que la regresión de bosque aleatorio sea más fuerte que cualquier otro algoritmo. Veamos por qué deberíamos usar la regresión de bosque aleatorio con análisis de series de tiempo.

Uso de regresión de bosque aleatorio en series de tiempo

Dado que un bosque aleatorio es un conjunto de árboles de decisión, tiene una varianza más baja que los otros algoritmos de aprendizaje automático y puede producir mejores resultados. Hablando del análisis de series de tiempo, cuando buscamos valores de pronóstico, usamos modelos como ARIMA, VAR, SARIMAX, etc. que están especialmente diseñados para el análisis de series de tiempo. Estos modelos se basan en análisis de regresión. También podemos usar modelos de regresión básicos con series de tiempo que también pueden brindar un rendimiento de vanguardia en el modelado de series de tiempo. Ensamblar algunos árboles para reducir la varianza de los modelos también puede ayudar en el modelado de series de tiempo. En la siguiente parte de este artículo, veremos cómo podemos usar el modelo de bosque aleatorio en el modelado de series de tiempo.

El procedimiento

En el procedimiento, utilizaremos el conjunto de datos de nacimientos femeninos totales diarios que se puede obtener desde aquí. El módulo que estamos usando para un modelo de regresión de bosque aleatorio es de la biblioteca de aprendizaje de Scikit. Dado que el módulo que estamos utilizando está diseñado para trabajar con conjuntos de datos de aprendizaje supervisado, convertiremos series temporales en datos de aprendizaje supervisado. Después de la conversión, escupiremos y caminaremos a través de la validación de datos univariados. Después de ajustar los datos en el modelo, verificaremos la precisión en función del error absoluto medio. Comencemos por importar bibliotecas.

🔥 Recomendado:  Cómo el aprendizaje centrado en objetos condicional logra una mejor generalización

Importación de bibliotecas

Para este procedimiento, usaremos solo las bibliotecas pandas, NumPy, matplotlib y sklearn.

importar numpy como np importar pandas como pd importar matplotlib.pyplot como plt de sklearn.ensemble importar RandomForestRegressor

de sklearn.ensemble importar RandomForestRegressor

Conversión de datos

Esta sección del procedimiento implementa una función que puede convertir una serie temporal en datos de aprendizaje supervisado.

def series_to_supervised(datos, n_in=1, n_out=1, dropnan=True): n_vars = 1 si tipo(datos) es una lista sino datos.forma[1]
df = pd.DataFrame(data) cols = list() for i in range(n_in, 0, -1): cols.append(df.shift(i)) for i in range(0, n_out): cols.append (df.shift(-i)) agg = pd.concat(cols, axis=1) if dropnan: agg.dropna(inplace=True) return agg.values

En la función anterior, hemos definido la secuencia de entrada y la secuencia de pronóstico y las hemos concatenado. Además, hemos eliminado todos los valores de NaN.

división de datos

Esta sección define una función que puede dividir el conjunto de datos.

def train_test_split(datos, n_prueba): devolver datos[:-n_test, :]datos[-n_test:, :]

Ajuste del modelo

En esta sección, definiremos una función que puede ayudar a ajustar los datos convertidos por el modelo de regresión de bosque aleatorio.

# ajustar un modelo de bosque aleatorio y hacer una predicción de un paso def random_forest_forecast(train, testX): train = np.asarray(train) trainX, trainy = train[:, :-1]tren[:, -1]
modelo = RandomForestRegressor(n_estimators=1000) model.fit(trainX, trainy) yhat = model.predict([testX]) devuélvelo[0]

Esta función transforma una lista en una matriz, luego divide los datos y ajusta el modelo. Después de entrenar el modelo, nos ayudará a hacer las predicciones de un paso.

Validación para datos univariados

Esta sección utilizará todas las funciones anteriores y ajustará los datos de prueba con un modelo para predecir y verificar la precisión del modelo.

from sklearn.metrics import mean_absolute_error def walk_forward_validation(datos, n_prueba): predicciones = lista() entrenar, prueba = entrenar_prueba_dividir(datos, n_prueba) historial = [x for x in train]
for i in range(len(test)): testX, testy = test[i, :-1]prueba[i, -1]
yhat = random_forest_forecast(history, testX) predicciones.append(yhat) history.append(test[i]) print(‘>esperado=%.1f, predicho=%.1f’ % (irritado, yhat)) error = error_absoluto_medio(prueba[:, -1]predicciones) error de retorno, prueba[:, -1]predicciones

🔥 Recomendado:  ¿Video de Instagram atascado al cargar? Vea cómo solucionarlo

Cargando datos

series = pd.read_csv(‘/content/drive/MyDrive/Yugesh/time series with random forest/daily-total-female-births.csv’, header=0, index_col=0)

valores = serie.valores

data = series_to_supervised(valores, n_in=6)

Esto cargará los datos y usando la función anterior convertiremos los datos en datos de aprendizaje supervisado.

Evaluación de modelos

En esta sección, evaluaremos nuestro modelo basado en el error cuadrático medio.

series = pd.read_csv(‘/content/drive/MyDrive/Yugesh/times series with random forest/daily-total-female-births.csv’, header=0, index_col=0) valores = series.valores data = series_to_supervised( valores, n_in=6)

Producción:

Aquí, en el resultado anterior, podemos ver que tenemos un MAE de 5.999. Esta es una buena indicación. Dibujemos estas predicciones con datos de prueba.

plt.plot(y, label=”Esperado”) plt.plot(yhat, label=”Previsto”) plt.legend() plt.show()

Producción:

Aquí podemos ver los valores pronosticados por el modelo de regresión de bosque aleatorio ajustado. Para un mejor rendimiento, podemos cambiar los parámetros del modelo de regresor de bosque aleatorio.

última palabra

En este artículo, hemos discutido los regresores de bosques aleatorios y por qué deberíamos usarlos para el análisis de series de tiempo. Después de comprender los conceptos clave, hemos pasado por la implementación de un regresor de bosque aleatorio para la tarea de pronóstico de series temporales.

Referencias