Détection des valeurs aberrantes de la consommation de gaz - Projet de réseau de neurones. Mauvais résultats

10

J'ai essayé de détecter des valeurs aberrantes dans la consommation de gaz énergétique de certains bâtiments hollandais, en construisant un modèle de réseau de neurones. J'ai de très mauvais résultats, mais je n'en trouve pas la raison.

Je ne suis pas un expert, je voudrais donc vous demander ce que je peux améliorer et ce que je fais mal. Voici la description complète: https://github.com/denadai2/Gas-consumption-outliers .

Le réseau neuronal est un réseau FeedFoward avec propagation arrière. Comme décrit ici, j'ai divisé le jeu de données en un "petit" jeu de données de 41'000 lignes, 9 entités et j'ai essayé d'ajouter plus de fonctionnalités.

J'ai formé les réseaux mais les résultats ont 14,14 RMSE, donc il ne peut pas prédire aussi bien les consommations de gaz, consécutivement je ne peux pas exécuter un bon mécanisme de détection des valeurs aberrantes. Je vois que dans certains articles, même s'ils prédisent la consommation quotidienne ou horaire d'énergie électrique, ils ont des erreurs comme MSE = 0,01.

Que puis-je améliorer? Qu'est-ce que je fais mal? Pouvez-vous avoir un aperçu de ma description?

marcodena
la source
2
Que voulez-vous dire, mauvais résultats? Décrivez votre processus, vos résultats et en quoi ils diffèrent de ce que vous attendiez, au lieu de simplement vous lier au référentiel git. Sinon, cette discussion ne sera utile à personne.
Air
C'est aussi vrai ceci: D. J'ai ajouté la description dans la page "Les résultats ont un RMSE de 14,14, donc il ne peut pas prédire si bien les consommations de gaz, par conséquent je ne peux pas exécuter un bon mécanisme de détection des valeurs aberrantes. Je vois dans certains articles que même s'ils prédisent la consommation quotidienne ou horaire de l'énergie électrique, ils ont des erreurs comme MSE = 0,01. "
marcodena
1
@marcodena Il s'agit d'un site d'AQ, et les autres doivent savoir ce que vous essayez de résoudre, afin qu'ils comprennent les réponses et, espérons-le, puissent les utiliser dans leurs propres problèmes. C'est ce que voulait dire AirThomas, et c'est aussi pourquoi ce serait bien si vous pouviez décrire ce que vous faites et ce que vous pensez exactement qui ne va pas. Si le lien vers votre page git-hub change, le lien ici sera invalide et les autres ne pourront pas comprendre quel est le problème. Veuillez prendre une minute pour que votre question soit autonome. Merci.
Rubens
1
Lorsque vous trouvez que votre problème prend beaucoup de temps à expliquer, c'est alors qu'il est le plus important de passer du temps à expliquer votre question aux autres, de manière explicite et avec beaucoup de détails et une discussion de vos recherches / tentatives. Souvent, au cours de ce processus, vous trouverez vous-même certaines ou toutes les réponses. Non seulement c'est un grand sentiment, si ce que vous trouvez est utile aux autres, vous pouvez toujours poster la question sur laquelle vous passez tant de temps et la ou les réponses que vous avez trouvées.
Air
1
Juste une précision, lorsque vous mentionnez que "dans certains articles, ils contiennent des erreurs comme MSE = 0,01", faites-vous référence au même ensemble de données que vous utilisez? Ou s'agit-il d'un ensemble de données différent?
insys

Réponses:

8

Juste une idée - vos données sont très saisonnières: les cycles quotidiens et hebdomadaires sont assez perceptibles. Alors tout d'abord, essayez de décomposer vos variables (consommation de gaz et d'électricité, température et rayonnement solaire). Voici un joli tutoriel sur la décomposition des séries temporelles pour R.

Après avoir obtenu les composantes tendance et saisonnières, la partie la plus intéressante commence. Ce n'est qu'une hypothèse, mais je pense que les variables de consommation de gaz et d'électricité seraient tout à fait prévisibles au moyen d'une analyse chronologique (par exemple, le modèle ARIMA ). De mon point de vue, la partie la plus intéressante ici est d'essayer de prédire les résidus après décomposition, en utilisant les données disponibles (anomalies de température, rayonnement solaire, vitesse du vent). Je suppose que ces résidus seraient des valeurs aberrantes, vous les recherchez. J'espère que vous trouverez cela utile.

sobach
la source
3

Dans votre carnet d'entraînement, vous présentez les résultats de l'entraînement avec 20 époques. Avez-vous essayé de faire varier ce paramètre pour voir s'il affecte vos performances? Il s'agit d'un paramètre important pour la rétropropagation.

Pour estimer les paramètres de votre modèle, comme l'a souligné l'utilisateur tomaskazemekas, le traçage des courbes d'apprentissage est une très bonne approche. En plus de cela, vous pouvez également créer un tracé en utilisant un paramètre de modèle (par exemple, les périodes d'apprentissage ou la taille de couche cachée) par rapport à l'erreur d'apprentissage et de validation. Cela vous permettra de comprendre le compromis biais / variance et vous aidera à choisir une bonne valeur pour vos paramètres. Quelques informations peuvent être trouvées ici . Naturellement, c'est une bonne idée de conserver un petit pourcentage de vos données pour un (troisième) ensemble de tests.

En remarque, il semble que l'augmentation du nombre de neurones dans votre modèle n'indique aucune amélioration significative pour votre RMSE. Cela suggère que vous pouvez également essayer avec un modèle plus simple, c'est-à-dire avec moins de neurones et voir comment votre modèle se comporte.

En fait, je suggérerais (si vous ne l'avez pas déjà fait) d'essayer d'abord un modèle simple avec peu ou pas de paramètres, par exemple la régression linéaire, et de comparer vos résultats avec la littérature, tout comme une vérification de santé mentale.

insys
la source
J'ai ajouté quelques graphes, après avoir beaucoup amélioré le modèle. Dans github, il y a les nouvelles étapes. Puis-je vous demander comment appliquer une régression linéaire dans un problème de série chronologique? :(
marcodena
2

Le principal problème ici est que même avant d'essayer d'appliquer des algorithmes de détection d'anomalies, vous n'obtenez pas de bonnes prévisions de consommation de gaz à l'aide de réseaux de neurones.

Si l'objectif principal ici est d'atteindre le stade où des algorithmes de détection d'anomalies pourraient être utilisés et que vous déclarez avoir accès à des exemples d'application réussie de régression linéaire pour ce problème, cette approche pourrait être plus productive. L'un des principes d'une application d'apprentissage automatique réussie est que plusieurs algorithmes différents peuvent être essayés avant la sélection finale en fonction des résultats.

Si vous choisissez d'ajuster les performances de votre réseau de neurones, une courbe d'apprentissage traçant l'effet du changement dans différents hyperparamètres sur le taux d'erreur peut être utilisée. Les hyperparamètres modifiables sont:

  • nombre de fonctionnalités
  • ordre du polynôme
  • paramètre de régularisation
  • nombre de couches dans le réseau

Les meilleurs paramètres peuvent être sélectionnés par les performances sur l'ensemble de validation croisée.

tomaskazemekas
la source
J'ai ajouté quelques graphiques et vous pouvez également vérifier les paramètres maintenant :)
marcodena
2

Dans vos cahiers, je n'ai pas vu votre modèle de réseau neuronal, pouvez-vous indiquer quelle bibliothèque utilise, combien de couches vous avez et quel type de réseau neuronal utilisez-vous?

Dans vos cahiers, il semble que vous utilisiez l'ensemble de données bruyant et aberrant pour entraîner le réseau neuronal, je pense que vous devriez entraîner le réseau neuronal sur l'ensemble de données pour que vous n'ayez pas de valeurs aberrantes afin que vous puissiez voir la distance d'observation à partir de la prédiction de le réseau de neurones pour étiqueter l'observation aberrante ou non.

J'ai écrit deux des choses sur la détection des valeurs aberrantes dans les signaux de séries chronologiques, vos données est très saisonnière comme sobach mentionné et vous pouvez utiliser FFT (premier lien ci - dessus) pour obtenir la tendance générale du signal. Après avoir obtenu le composant de fréquence dans la consommation de gaz, vous pouvez regarder les composants de haute fréquence pour obtenir les valeurs aberrantes.

De plus, si vous souhaitez insister sur l'utilisation du réseau de neurones pour les données saisonnières, vous voudrez peut-être vérifier les réseaux de neurones récurrents car ils pourraient mieux intégrer les observations passées qu'un réseau de neurones vanille, et pourraient fournir un meilleur résultat pour les données que vous avez .

Bugra
la source
J'ai essayé votre méthode FFT mais je ne sais vraiment pas comment définir le seuil de fréquence et l'amplitude avec mes données. Je continuerai à chercher, mais si tu pouvais m'aider ...
marcodena
J'ai également ajouté les sources
marcodena