[Data & crise] Saison #2 E5 — Super Monkey s’engage pour la planète
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.
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
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
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.
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