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?
la source
Réponses:
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.
la source
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.
la source
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:
Les meilleurs paramètres peuvent être sélectionnés par les performances sur l'ensemble de validation croisée.
la source
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 .
la source