Hackathon · Enedis

Reconstruction de courbes de consommation électrique Linky

Hackathon sur l'intelligence artificielle, organisé par Enedis sur le site Challenge Data.

Implémentation d'un pipeline complet de reconstruction de courbes incomplètes de consommation électrique de compteurs Linky par un algorithme d'IA combinant régression ridge & gradient boosting et feature engineering du modèle.

Classements :

  • 12ᵉ/119 au classement national (site)
  • 1ᵉʳ/39 à l'université

Hackathon Enedis

Conception d'un algorithme d'IA de reconstruction de courbes de consommation électrique Linky.

  • Séries temporelles
  • Régression Ridge + Gradient Boosting
  • Feature Engineering

Présentation générale

Le bouton suivant vous amène à une description détaillée du challenge ainsi qu'au classement des participants.
J'y ai participé sous le pseudonyme tominien.

Objectif du challenge

Ce challenge a été proposé par Enedis sur la plateforme ChallengeData.
L'objectif de ce challenge était de construire un modèle d'intelligence artificielle complétant de la meilleure manière possible des trous de données dans la consommation de certains compteurs Linky.

3 fichiers étaient fournis :

  • x_train.csv & y_train.csv : Deux dataframes d'entraînement distincts, contenant respectivement 20000 et 37140 courbes de compteurs Linky complètes (mesures toutes les 30 minutes sur 22 jours, exprimées en Watts), suivis de 1000 courbes trouées, à compléter.
  • x_test.csv : Un dataframe solution du premier dataframe (x_train.csv) contenant les 1000 courbes des compteurs Linky trouées, complétées avec leurs vraies valeurs.

Le but était de prédire l'ensemble des valeurs manquantes des 1000 courbes de consommation trouées du fichier y_train.csv.
La méthode d'évaluation était une erreur de type Mean Absolute Error (MAE) sur les points masqués, que l'on devait minimiser.

Contexte du challenge

Ce challenge a été réalisé par petits groupes (de 1 à 3 personnes), dans le cadre de l'UE Intelligence Artificielle de ma double licence.

L'objectif donné était de battre le benchmark naïf (interpolation linéaire simple, MAE=104W) et d'obtenir le meilleur classement possible sur le leaderboard public en développant un modèle d'intelligence artificielle, puis de faire une présentation orale de notre démarche et de nos résultats en s'aidant d'un notebook Google Colab.

Approche utilisée & résultats obtenus

Le challenge mettait l'accent sur l'importance des features temporelles de chaque compteur Linky et sur la robustesse du modèle aux profils de consommation variés.

Comme chaque courbe de compteur Linky peut être vue comme une série temporelle, une première approche qu'on a abordée a été d'essayer de construire un modèle composé de neurones de type LSTM, pour capturer les dépendances temporelles des données.
Cependant, cette approche s'est révélée très peu efficace, obtenant une MAE de 103W après 10 heures d'entraînement, soit à peine mieux que le benchmark naïf.

Suite à une analyse approfondie des données, on a remarqué qu'il existait 2 grands profils de consommation : les très gros consommateurs (ex : entreprises) et les petits consommateurs (ex : particuliers).

On a alors décidé de changer totalement de stratégie et on s'est tournés vers une stratégie combinant la Régression Ridge et le Gradient Boosting :

  • La Régression Ridge (méthode de régression linéaire) pour éviter l'overfitting : En limitant la taille des coefficients et en améliorant la stabilité du modèle lorsque les features sont corrélées ou bruitées.
  • Le Gradient Boosting (méthode de somme d'arbres de décision) pour capturer les tendances non-linéaires : Le premier arbre capturant une tendance grossière et chaque arbre suivant corrigeant les erreurs du précédent par descente de gradient.

Pour finir, on a optimisé l'entièreté de nos hyperparamètres (proportion du poids de Ridge VS GB, nombre d'arbres GB, taux d'apprentissage, etc.) via Optuna, pour trouver la meilleure configuration possible.

Cette deuxième approche nous a permis d'obtenir une MAE de 76W, nous classant 12ᵉ/119 sur le leaderboard public du challenge et premiers de notre promotion.