Traté de detectar valores atípicos en el consumo de gas energético de algunos edificios holandeses, construyendo un modelo de red neuronal. Tengo muy malos resultados, pero no puedo encontrar la razón.
No soy un experto, así que me gustaría preguntarle qué puedo mejorar y qué estoy haciendo mal. Esta es la descripción completa: https://github.com/denadai2/Gas-consumption-outliers .
La red neuronal es una red FeedFoward con propagación hacia atrás. Como se describe aquí , dividí el conjunto de datos en un conjunto de datos "pequeño" de 41'000 filas, 9 características e intenté agregar más características.
Entrené las redes, pero los resultados tienen 14.14 RMSE, por lo que no puede predecir tan bien el consumo de gas, consecutivamente no puedo ejecutar un buen mecanismo de detección de valores atípicos. Veo que en algunos documentos que incluso si predicen el consumo diario o por hora en la energía eléctrica, tienen errores como MSE = 0.01.
¿Qué puedo mejorar? ¿Qué estoy haciendo mal? ¿Puedes echar un vistazo a mi descripción?
fuente
Respuestas:
Solo una idea: sus datos son altamente estacionales: los ciclos diarios y semanales son bastante perceptibles. En primer lugar, intente descomponer sus variables (consumo de gas y electricidad, temperatura y radiación solar). Aquí hay un buen tutorial sobre la descomposición de series temporales para R.
Después de obtener la tendencia y los componentes estacionales, comienza la parte más interesante. Es solo una suposición, pero creo que las variables de consumo de gas y electricidad serían bastante predecibles mediante el análisis de series de tiempo (por ejemplo, el modelo ARIMA ). Desde mi punto de vista, la parte más emocionante aquí es tratar de predecir los residuos después de la descomposición, utilizando los datos disponibles (anomalías de temperatura, radiación solar, velocidad del viento). Supongo que estos residuos serían valores atípicos que estás buscando. Espero que encuentres esto útil.
fuente
En su cuaderno de entrenamiento presenta resultados para el entrenamiento con 20 épocas. ¿Has intentado variar ese parámetro para ver si afecta tu rendimiento? Este es un parámetro importante para la retropropagación.
Para estimar los parámetros de su modelo, como señaló el usuario tomaskazemekas, trazar curvas de aprendizaje es un muy buen enfoque. Además de eso, también podría crear un gráfico utilizando un parámetro de modelo (por ejemplo, épocas de entrenamiento o tamaño de capa oculta) vs. Error de entrenamiento y validación. Esto le permitirá comprender el equilibrio de sesgo / varianza y lo ayudará a elegir un buen valor para sus parámetros. Alguna información se puede encontrar aquí . Naturalmente, es una buena idea mantener un pequeño porcentaje de sus datos para un (tercer) Conjunto de prueba.
Como nota al margen, parece que aumentar el número de neuronas en su modelo no muestra una mejora significativa para su RMSE. Esto sugiere que también podría probar con un modelo más simple, es decir, con menos neuronas y ver cómo se comporta su modelo.
De hecho, sugeriría (si aún no lo ha hecho) probar primero un modelo simple con pocos o ningún parámetro, por ejemplo, Regresión lineal, y comparar sus resultados con la literatura, solo como un control de cordura.
fuente
El principal problema aquí es que incluso antes de intentar aplicar algoritmos de detección de anomalías, no está obteniendo predicciones suficientemente buenas del consumo de gas utilizando redes neuronales.
Si el objetivo principal aquí es alcanzar la etapa en la que se podrían usar algoritmos de detección de anomalías y usted declara que tiene acceso a ejemplos de aplicación exitosa de regresión lineal para este problema, este enfoque podría ser más productivo. Uno de los principios de una aplicación de aprendizaje automático exitosa es que se pueden probar varios algoritmos diferentes antes de la selección final basada en los resultados.
Si elige ajustar el rendimiento de su red neuronal, se puede utilizar la curva de aprendizaje que representa el efecto del cambio en diferentes hiperparámetros sobre la tasa de error. Los hiperparámetros que se pueden modificar son:
La mejor configuración se puede seleccionar por el rendimiento en el conjunto de validación cruzada.
fuente
En sus cuadernos, no vi su modelo de red neuronal, ¿puede señalar qué biblioteca está utilizando, cuántas capas tiene y qué tipo de red neuronal está utilizando?
En sus cuadernos, parece que está utilizando el conjunto de datos ruidoso y atípico para entrenar la red neuronal, creo que debería entrenar la red neuronal en el conjunto de datos para que no tenga valores atípicos para poder ver la distancia de observación de la predicción de la red neuronal para etiquetar la observación como atípica o no.
Escribí un par de cosas sobre la detección de valores atípicos en las señales de series temporales, sus datos son altamente estacionales, como mencionó Sobach, y podría usar FFT (primer enlace arriba) para obtener la tendencia general de la señal. Después de obtener el componente de frecuencia en el consumo de gas, puede mirar los componentes de alta frecuencia para obtener los valores atípicos.
Además, si desea insistir en utilizar la red neuronal para los datos estacionales, es posible que desee verificar las redes neuronales recurrentes, ya que podrían incorporar las observaciones pasadas mejor que una red neuronal vainilla, y supuestamente puede proporcionar un mejor resultado para los datos que tiene .
fuente