Python site

Chapitre 4 : Modéliser

Qui dit Machine Learning dit algorithme entraîné à partir de données afin de prédire un résultat sur un nouveau jeu de données. Cette branche de l’intelligence artificielle se différencie de l’économétrie notamment à travers leurs objectifs : si l’économétrie s’attache à comprendre les phénomènes en s’appuyant sur des modèles explicatifs et recherchant à évaluer la causalité de x sur y, le Machine Learning se focalise sur un simple objectif prédictif en exploitant les relations de corrélations entre les variables.

Voici un schéma usuel qui donne un premier aperçu des différentes méthodes de Machine Learning :

MachineLearningMethods

Mais comment choisir entre les modèles ?

Ce tutoriel vise à expérimenter l’implémentation de quelques méthodes de Machine Learning en python sans founir les explications théoriques de ces méthodes. Toutefois, même s’il ne dispense pas de comprendre les différentes méthodes, on peut quand même s’appuyer sur ce schéma simplifié pour orienter nos choix de modèle :

ChoixMethodesMachineLearning

On peut aussi s’appuyer sur le cheatsheet de scikit-learn. Enfin, afin de comprendre le fonctionnement intuitif de chaque méthode, il peut être utile de consulter un cours de Machine Learning.

Le site Machine Learning Mastery propose des explications intuitives sur les principales méthodes de Machine Learning. Le livre Introduction to Machine Learning with Python fournit quelques explications sur de nombreux algorithmes et précise le code python nécessaire pour les mettre en oeuvre.

I) Commencer par prédire une variable catégorielle binaire : un problème de classification

Pour réaliser ce tutoriel, on a enrichi les données précédentes avec des données socio-démographiques. On met donc à disposition une base, nommée tableModelisation, contenant les villes de plus de 20 000 habitants. Une indicatrice, nommée plus50, constituée à partir de la présence de l’absence de la ville dans la table de l’isf manipulée précédemment, indique si plus de 50 redevables paient l’isf dans la ville. Vous pouvez consulter le dictionnaire des données qui s’appelle Dictionnaire_tableModelisation.

La modélisation sera réalisée à partir des prédicteurs socio-démographiques suivants :

  • la proportion de résidences principales de type maison (P15_RPMAISON),
  • la proportion de résidences principales de moins de 30 m² (P15_RP_M30M2),
  • la proportion de résidences principales de 30 à moins de 60 m² (P15_RP_3060M2),
  • la proportion de résidences principales de 80 à moins de 100 m² (P15_RP_80100M2),
  • la proportion de résidences principales de 100 m² ou plus (P15_RP_100M2P),
  • la proportion de familles monoparentales (C15_FAMMONO),
  • la proportion de familles formées d’un couple sans enfant (C15_COUPSENF),
  • la proportion de personnes non scolarisées de 15 ans ou plus titulaires d’aucun diplôme ou au plus un BEPC, brevet des collèges ou DNB (P15_NSCOL15P_DIPLMIN),
  • la proportion de personnes non scolarisées de 15 ans ou plus titulaires d’un CAP ou d’un BEP (P15_NSCOL15P_CAPBEP),
  • la proportion de personnes non scolarisées de 15 ans ou plus titulaires d’un diplôme de l’enseignement supérieur (P15_NSCOL15P_SUP).

1) Préparer ses données

Exercice 1 : Vérifier qu’il n’y a pas de valeurs manquantes dans la base de données

Exercice 2 : Observer la répartition de chaque variable

Exercice 3 : Séparer les données entre échantillon d’apprentissage et échantillon de test. Pourquoi est-ce utile ?

Exercice 4 : Les trois variables issues de la table sur l’isf (le nombre de redevables, le patrimoine moyen et l’impôt moyen) sont manquantes pour les villes où ce nombre est inférieur à 50. Si ces valeurs manquantes étaient aléatoires, comment auriez-vous pu les imputer ?

Exercice 5 : Pourquoi est-il préférable, voire impératif, de redimensionner (normaliser et/ou standardiser) les données ?

Exercice 6 : Citez deux grandes méthodes de redimensionnement et mettez les en oeuvre

2) Choisir et tester différentes méthodes

Avec la standardisation, vous venez de vous découvrir la logique d’implémentation de scikit-learn. Détaillons la structure du code pour implémenter un algorithme de Machine Learning avec scikit-learn :

StructureCodeSklearn

Le transform permet d’appliquer une transformation à un jeu de données pour modifier ces dernières. Pour la standardidation, la fonction fit estime la moyenne et l’écart-type sur un jeu de données, ici l’échantillon d’apprentissage, puis la fonction transform centre et réduit les données indiquées en paramètre (soit l’échantillon d’apprentissage, soit l’échantillon de test dans notre exemple). Notons qu’il est possible d’effectuer les étapes d’estimation (fit) et de transformation du jeu de données (transform) en une seule étape grâce à a fonction fit_transform.

Le predict prédit la valeur de la variable cible. Par exemple, avec le modèle de régression logistique, le predict estimera à partir du modèle pré-entrainé avec le fit, les labels associés au jeu de données, dans notre cas à l’échantillon de test.

Exercice 7 : Appliquer une régression logistique

N’hésitez pas à consulter l’aide détaillée de scikit-learn relative à la régression logitique.

Exercice 8 : Puis appliquer un Support Vector Machine (SVM) ?

Un petit zoom sur les SVM
Les Vector Support machine (SVM) visent à séparer linéairement les observations dans un espace de très grande dimension. Selon le principe schématisé sur la Figure ci-dessous, cet espace de grande dimension résulte de la transformation ϕ, potentiellement non linéaire, de l’espace des variables d’origine. Une transformation non linéaire, réalisée via une fonction noyau ϕ, peut ainsi favoriser la séparation linéaire des observations dans le nouvel espace.

TransformationSVM

Exercice 9 : Même si on ne peut pas interpréter le pouvoir explicatif d’une variable sur la variable cible, on peut toutefois s’intéresser à l’importance de chaque variable dans le modèle de prédiction. Représenter les coefficients par ordre décroissant.

3) Evaluer et comparer les performances des algorithmes

La précision et le rappel (recall en anglais) constituent deux critères qui mettent en exergue les capacités d’un classifieur. Ils sont notamment pertinents dans le cas où les classes sont déséquilibrées.

La précision analyse la qualité du prédicteur pour les observations détectées comme positives par le modèle. Pour nos modèles, la précision correspond donc au nombre de villes où plus de 50 personnes sont réellement redevables et qui sont détectés par le modèle rapporté au nombre total de villes détectées par le modèle (à tort et à raison) comme habritant plus de 50 redevables de l’isf. Elle se déduit de la formule suivante :

$$ \text{Précision } = \frac{\text{Nombre de vrais positifs}}{\text{Nombre de vrais positifs } + \text{ Nombre de faux positifs}} $$

De façon complémentaire, le rappel, aussi appelé la sensibilité, se focalise sur la qualité du modèle pour la classification des observations positives. Dans notre exemple, le rappel désigne la part des villes comme ayant plus de 50 redevables en réalité et selon le modèle par rapport à l’ensemble des villes où plus de 50 personnes sont réellement redevables. Le rappel se calcule donc selon la formule suivante :

$$ \text{Rappel }=\frac{\text{Nombre de vrais positifs}}{\text{Nombre de vrais positifs } + \text{ Nombre de faux négatifs}} $$

Une troisième notion, complémentaire à la sensibilité, peut être utilisée. Si la sensibilité s’intéresse aux observations avec un label effectif positif, la spécificité étudie les observations avec un label effectif nul. Parmi ces derniers, c’est-à-dire parmi les villes où moins de 50 personnes sont réellement redevables par exemple, la spécificité étudie la probabilité d’être aussi considérées comme tel par le modèle de prédiction.

$$ \text{Spécificité }=\frac{\text{Nombre de vrais négatifs}}{\text{Nombre de vrais négatifs } + \text{ Nombre de faux positifs}} $$

Exercice 9 : Evaluer les performances des deux modèles en affichant leur matrice de confusion

Dans le cadre d’une classification binaire, la courbe ROC et l’aire sous la courbe associée (Area Under the Cruve - AUC) fournissent une information plus précise de la qualité du modèle que le simple taux d’erreur ou que la matrice de confusion. En effet, ces critères utilisent un seuil fixe, par défaut 0,5, selon lequel l’observation est classée ou non dans la catégorie des villes où plus de 50 personnes sont redevables de l’isf par exemple. A l’inverse, la courbe ROC représente la proportion de vrais positifs, par exemple des villes où plus de 50 personnes sont réellement redevables de l’isf et détectées à raison par le modèle, selon la proportion de faux positifs, c’est-à-dire les villes où moins de 50 personnes sont redevables de l’isf mais où le modèle détecte l’inverse. Comme nous souhaitons minimiser le risque de première espèce qui correspond au taux de faux positifs tout en maximisant la puissance du test égal au taux de vrais positifs, la courbe ROC idéale augmente très rapidement vers 1 puis est égale à 1 pour tous les taux de vrais positifs différents de 0 (\og coude \fg{}). Cette situation indique que, pour un seuil donné, le modèle ne commet pas d’erreur.

L’AUC mesure la performance du modèle par rapport à cette situation idéale. Ainsi, plus l’AUC est grand, meilleur est le modèle. En effet, une AUC élevée indique que lorsque le seuil de décision diminue, le modèle détecte plus rapidement une proportion forte de villes où plus de 50 personnes sont redevables de l’isf et une faible proportion de villes où moins de 50 personnes sont redevables de l’isf.

Exercice 11 : Comparer les deux modèles, notamment à l’aide de leurs courbes ROC

Pour réaliser ces premières prédictions, on s’est contenté de prédicteurs socio-démographiques. Aucune variable précisant la localisation géographique a été introduite, ignorant alors l’existence d’autocorrélation spatiale, pourtant suggérée par la littérature sur la ségrégation spatiale. Cette omission (certes volontaire) n’introduit pas de biais environnemental comme cela serait le cas dans le cadre d’un modèle explicatif mais elle peut réduire le pouvoir prédictif de notre modèle.

Exercice 12 : Même si dans notre cas, l’apport de la localisation géographique n’est pas forcément facilement démontrable car la base de données est restreinte en raison du ciblage des villes de plus de 20000 habitants et par conséquent l’échantillon de test est de petite dimension avec de nombreux espaces géographiques non présents, représenter la carte des résidus par département.

Vous pouvez alors refaire les modèles en introduisant la variable de département. Attention, celle-ci n’est pas une variable quantitative ordonnée, il faut donc la discrétiser. Le risque est d’introduire un très grand nombre d’indicatrices. Peut-être est-il alors pertinent de régulariser le modèle.

Besoin d’un résumé du processus avant de passer à la régression ?

ScikitLearnCheatSheetPython

II) Expérimenter la prédiction d’une variable quantitative : un problème de régression

On va maintenant se restreindre aux villes de plus de 20 000 habitants dans lesquelles plus de 50 personnes sont redevables de l’isf. Cela revient donc à se restreindre aux champs de la base isf manipulée dans les tutoriels précédents. On testera ici simplement un modèle de régression linéaire mais vous pouvez évidemment tester d’autres méthodes de régression si vous avez le temps !

Exercice 13 : Evaluer un modèle de régression pour prédire le nombre de redevables dans cette base restreinte puis prédire ce nombre sur un échantillon de test.

Last updated on 18 Mar 2019 / Published on 18 Mar 2019
Edit on GitHub