[Data & crise] Saison #2 E5 — Super Monkey s’engage pour la planète

Nadia Zabeti
INVYO
Published in
6 min readJun 22, 2021

Vous savez maintenant que Super Monkey peut être votre prochain free-lance marketing 🌟👇

Et ses talents cachés ne s’arrêtent pas là! Vous l’aurez compris, Super Monkey est un touche-à-tout très adaptable, ET en plus de ça, il a conscience du défi que représente le changement climatique et de toutes les répercussions sociales et économiques qu’il engendre déjà 🌐

C’est donc tout naturellement que Super Monkey s’est demandé comment ses compétences en data pouvaient être mises à profit au service de la planète

Et comme il est convaincu que grâce à de petites actions cumulées, on peut changer beaucoup de choses, il a décidé de s’intéresser à un premier challenge accessible à un débutant, celui de rendre une ville neutre en termes d’émissions de CO2 (rien que ça! 😄).

Concrètement, la ville de Seattle a rendu public quelques relevés de consommation et Super Monkey s’y est attardé pour proposer des recommandations claires pour accompagner la ville dans son objectif de 0 émission CO2 d’ici 2050 (https://www.kaggle.com/city-of-seattle/sea-building-energy-benchmarking)

Zoom sur la création de variable

Dans les épisodes précédents, nous avons abordé la gestion des données manquantes avec par exemple la méthode de l’imputation par la moyenne.

Dans son quotidien, le Data Scientist est en effet amener à retravailler son jeu de données pour en extraire le maximum d’informations. En ce sens, il est parfois amené à créer des variables à partir de variables existantes.

Par exemple, dans nos données de consommation par bâtiments, nous avons l’année de construction et l’année de relevé. La variable “Durée de vie du bâtiment” peut donc facilement être créée en faisant la soustraction:

Année de relevé — Année de construction = Durée de vie du bâtiment

Vous voyez, ce n’est pas sorcier 😉

Zoom sur la transformation de variable

Une étape nécessaire de transformation de nos variables qualitatives (contenant du texte) en quantitative (contenant des chiffres) est le One Hot Encoding.

Exemple de One Hot Encoding

On transforme ainsi le type de bâtiment, les noms des quartiers, et le type d’usage principal du bâtiment.

Zoom sur la modélisation

Une fois notre jeu de données nettoyé et nos variables adéquatement transformées, nous pouvons passer à la modélisation.

Nous séparons notre jeu de données en un jeu de test, et un jeu d’entraînement :

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Le jeu d’entraînement représente 33% de nos données, et le reste des données est dans le jeu de test. Pour en savoir plus sur la raison de cette séparation des données, continuez cette lecture ! 💪🏼

Il s’agit maintenant de choisir des variables explicatives*, une variable cible (ici, l’émission en C02), puis de choisir le meilleur modèle pour nos données.

Pour choisir le meilleur algorithme :

1. Choix de plusieurs algorithmes de régression à tester (notre problème étant de l’ordre de la régression — nous cherchons des valeurs continues)

*** Algorithmes testés *** :

  • Régression linéaire
  • SVM linéaire
  • Arbre de décision
  • Régression bayésienne Ridge
  • Réseau de neurones (appliqué à la régression)
  • Descente de gradient (appliquée à la régression)
  • Random forest
  • Régression Ridge
  • LassoLars
  • Lasso

2. Paramétrage pour les rendre optimaux sur nos données grâce au module GridSearchCV, nous prendrons ici l’exemple de l’algorithme Réseau de neurones

from sklearn.model_selection import GridSearchCV# import de l'algorithmefrom sklearn.neural_network import MLPRegressorregr = MLPRegressor()# choix des paramètres à tester et des valeurs pour chacun de ces paramètresparameters = [{'hidden_layer_sizes': [(100,), (120,)],'learning_rate_init': [0.001, 0.002],'max_iter': [200,300,400],}]# test de toutes les combinaisons entre ces paramètres pour nos donnéesneural = GridSearchCV(estimator=regr, param_grid=parameters, cv=5)neural.fit(X_train, y_train)print(neural.best_params_)# cellule de sortie{'hidden_layer_sizes': (120,), 'learning_rate_init': 0.001, 'max_iter': 300}

Les meilleurs paramètres pour nos données sont ici :

  • nombre de neurones dans la couche cachée : 120
  • taux d’apprentissage initial : 0.001
  • nombre d’itérations sur chaque point de nos données : 300

3. Evaluation des performances de chacun (via le R2 et la RMSE — Mean Squared Error)

  • RSquared ou R2

Le R2 est une métrique qui permet de déterminer dans quelle mesure les variables explicatives choisies sont … explicatives 👌🏼.

Plus le R2 d’un modèle est proche de 1, plus il est performant. Ici, le meilleur modèle est l’arbre de décision, suivi par la Régression Ridge

Les R2 de nos 10 modèles de régression

Néanmoins, la métrique R2 ne permet pas de prendre en compte la notion de sur/sous-apprentissage qui est essentielle en Machine Learning.

  • RMSE
RMSE pour nos 10 modèles de régression**

Plus la RMSE est faible, plus le modèle est performant. Mais ce graphique nous apporte beaucoup plus d’informations.

Il nous permet d’évaluer l’apprentissage de nos modèles. En rouge, la performance réalisée sur le jeu d’entraînement de nos données, et en bleu la performance réalisée sur le jeu de test.

Vous comprenez désormais que le “split” des données se fait pour évaluer l’apprentissage du modèle; car en effet, si nous l’évaluons sur les mêmes données, impossible de déterminer s’il apprend ou non, et comment il apprend.

Prenez les modèles pour lesquelles la RMSE d’entraînement est beaucoup plus élevée que la RMSE de test. Cela signifie que le modèle est beaucoup plus performant sur les données de test, qu’il n’a jamais vues auparavant. Il y a donc sous-apprentissage (ou “underfitting”).

A l’inverse, lorsque la RMSE d’entraînement est plus faible que la RMSE de test, cela signifie que le modèle performe mieux sur les données d’entraînement, et il y a donc sur-apprentissage (ou “overfitting”).

💪 C’est à vous

Au vu du score R2, et de la RMSE, quel modèle devons-nous choisir ?

💡Pour déterminer les bâtiments qui polluent le plus la ville de Seattle

Nous affichons chacune des variables et leur “coefficient”, pour évaluer le poids de chacune des variables.

Les 10 variables influençant le plus l’émission de C02 de la ville de Seattle

En priorité, il faut donc limiter les émissions de C02 des entrepôts, des bureaux, des restaurants, des parkings, des hôtels, des garde-meubles et des collèges, et plus globalement des bâtiments à forte superficie.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Merci d’avoir suivi cette saison 2 et à très bientôt pour de nouvelles aventures !

🌼

*Nous avons fait l’omission de l’étape de sélection des meilleurs variables explicatives, abordée dans l’épisode 2 via la matrice de corrélation

**Pour la descente de gradient , les RMSE n’apparaissent pas car elle sont très proche de 0

--

--