class: center, middle, inverse, title-slide .title[ # Extraction de connaissances à partir de données structurées et non structurées ] .subtitle[ ## Séance 6 : Modélisation supervisée via régression ] --- ## Introduction - Modèle linéaire - Régression multiple - Modèle linéaire général - Limites du modèle linéaire - Solution adoptée - Régression logistique - Pourquoi ? --- class: center, middle, section ## Régression linéraire --- ### But de la régression - Corrélation : liaison *symétrique* entre deux variables - Rôle pas forcément symétrique (entre taille et poids, par exemple) - Poids : variable **dépendante** (dénommée souvent `\(Y\)`) - Âge : variable **explicative** (dénommée souvent `\(X\)`) - Le poids est fonction de l'âge (et non l'inverse) - Quelle est la relation de dépendance de `\(Y\)` par rapport à `\(X\)` ? - Recherche d'une **régression** de `\(Y\)` en fonction de `\(X\)` --- ### Exemple <img src="seance6-reglog_files/figure-html/exemple-lm-1.png" style="display: block; margin: auto;" /> --- ### Description - Trois fonctions essentielles de la régression - Décrire la façon dont `\(Y\)` est liée à `\(X\)` - Tester l'existence de cette liaison - Estimer une valeur de `\(Y\)` pour une valeur de `\(X\)` donnée - Obtenir les valeurs de l'équation `\(Y = bX + a\)` - `\(b\)` : pente de la droite - `\(a\)` : ordonnée à l'origine - Minimisation de la somme des carrés des distances entre les points et la droite --- ### Calcul et test - *Droite des moindres carrés* appelée aussi droite de régression - Pente `\(b\)` fournie par le rapport `\(\frac{cov(XY)}{var(X)} = \frac{\sum xy}{\sum x^2}\)` - Coordonnée à l'origine `\(a\)` obtenue avec `\(\mu_y - b \hat \mu_x X\)` - Passe par le point `\((\mu_x, \mu_y)\)` (point moyen) - Si `\(X\)` et `\(Y\)` non liée, droite horizontale avec pente nulle - `\(b = 0\)` - Sous `\(H_0\)`, le rapport `\(\frac{|b - 0|}{\sigma_b}\)` suit une loi `\(T\)` de Student - `\(ddl = n-2\)` - Test de nullité de la pente `\(b\)` et de `\(R^2\)` - Estimation d'une valeur de `\(Y\)` obtenue grâce à la formule `\(bx + a\)` (avec un intervalle de confiance) --- ### Exemple <img src="seance6-reglog_files/figure-html/exemple-lm123-graph-1.png" style="display: block; margin: auto;" /> --- ### Exemple
--- ### Avec plus de deux variables - Obtenir la fonction `\(f\)` tel que `\(Y = f(X_1, X_2, X_3, \ldots, X_p)\)` - Plusieurs variables *explicatives* - Exemple avec `\(p=2\)` : `\(Y = b_0 + b_1 X_1 + b_2 X_2\)` - Recherche de l'hyper-plan minimisant la distance entre les points et celui-ci - Evaluer la force de la liaison entre `\(Y\)` et chacun des `\(X_i\)` - Etablir une *hiérarchie* entre ces différentes liaisons --- ### Régression multiple - Utilisation de la régression multiple - Eliminer le biais éventuellement créé par d'autre variables - Améliorer l'estimation de nouvelles valeurs en réduisant les intervalles de confiance - Ajustement au sens des moindres carrés - Test de nullité du coefficient pour chaque variable explicative - Test de nullité du coefficient de corrélation globale `\(R^2\)` --- ### Exemple - données `wine`
--- ### Exemple - données `wine` - Modèle cherché : $$ Alcohol = a + b_1 \times MalicAcid + b_2 \times ColorIntensity + b_3 \times Magnesium $$
- Qualité du modèle : `\(R^2\)` = 0.3263256 --- ### Exemple - données `wine` <img src="seance6-reglog_files/figure-html/wine-model1-pred-obs-1.png" style="display: block; margin: auto;" /> --- ### Suppression de facteurs - Importance des facteurs différents - Si coefficient `\(b_i\)` considéré comme nul, enlever `\(X_i\)` - Faire aussi intervenir la connaissance métier - Omission de variables exogènes entraînant du biais - Tirage aléatoire - Exemple avec suppression des variables avec un coefficient `\(b_i\)` nul --- ### Choix du *bon* modèle - Obtenir le modèle le plus proche de la réalité - `\(R^2\)` le plus proche de 1 possible - Simple à interpréter (pas trop de variables) - Critère de choix du modèle ( `\(AIC\)` par exemple - d'autres existent) $$ AIC(m) = -2L(m) + 2 \nu(m) $$ - Plusieurs possibilités pour optimiser le critère à chaque étape - **Entrée** (ou *forward*) : ajout de variable - **Sortie** (ou *backward*) : suppression de variable - **Pas à pas** (ou *stepwise*) : ajout et suppression de variables jusqu'à stabilisation --- ### Exemple - données `wine` - Modèle complet (en enlevant la variable `class` bien évidemment)
--- ### Exemple - données `wine` - Modèle obtenu après sélection pas à pas
--- ### Modèle linéaire - Régression multiple - Interprétation des coefficients `\(b_i\)` - Variation de `\(Y\)` = `\(b_i\)` `\(\times\)` Variation de `\(X_i\)` - *Toute chose étant égale par ailleurs* - Colinéarité - Corrélation (très) importante entre deux variables explicatives - Coefficients des varaibles impactées entre eux - Faire attention et à éviter au maximum - Interaction - Prise en compte des effets conjoints - Pas facile à interpréter mais potentiellement avec un effet très important --- ### Modèle linéaire général - Limitations du modèle linéaire - Non prise en compte de variables qualitatives - Possibilité si ordinale = considérée comme quantitative - mais peut mener à des conclusions erronées - Solution adoptée - Introduction de variables muettes (0-1) - Prise en compte dans le calcul - Pour `\(X_i=1\)`, variation de `\(b_i\)` --- ### Variable muette - Variable muette `\(D\)` = variable binaire (prenant la valeur 0 ou 1) - Equation de la droite de régression inchangée $$ Y = b_0 + b_1 X + b_2 D $$ - Variation lorsque `\(D=1\)` de `\(b_2\)` - Les valeurs de `\(Y\)` pour les objets pour lesquels `\(D=1\)` sont globalement différente d'un niveau `\(b_2\)` par rapport à celles des objets pour lesquels `\(D=0\)` - Deux droites de régression (parallèles) - Pour le groupe `\(D=0\)` : `\(Y = b_0 + b_1 X\)` - Pour le groupe `\(D=1\)` : `\(Y = (b_0 + b_2) + b_1 X\)` --- ### Variable muette à plusieurs catégories - Binaire : traitement vs absence de traitement - Ternaire : traitement 1, traitement 2 et absence de traitement - Créer deux variables muettes `\(D_1\)` et `\(D_2\)` - `\(D_1=1\)` si Traitement 1 et `\(D_1=0\)` sinon - `\(D_2=1\)` si Traitement 2 et `\(D_2=0\)` sinon - Codage disjonctif partiel - Equation : `\(Y = b_0 + b_1 X + b_2 D_1 + b_3 D_2\)` - Pour le groupe `\(D=0\)` : `\(Y = b_0 + b_1 X\)` - Pour le groupe `\(D=1\)` : `\(Y = (b_0 + b_2) + b_1 X\)` - Pour le groupe `\(D=2\)` : `\(Y = (b_0 + b_3) + b_1 X\)` --- ### Pentes différentes - Extension au cas de droites avec des pentes différentes - Variable muette pas suffisante (droites non parallèles) - Introduction de la variable `\(D \times X\)` (interaction) - Equation de la droite de régression $$ Y = b_0 + b_1 X + b_2 D + b_3 D X $$ - Pour le groupe `\(D=0\)` : `\(Y = b_0 + b_1 X\)` - Pour le groupe `\(D=1\)` : `\(Y = (b_0 + b_2) + (b_1 + b_3) X\)` --- ### Non-linéarité et logarithmes - Pourquoi ? - Modèle linéaire valable si linéarité en `\(b\)` - Modèle multiplicatif - Exemple de modèle $$ Y = b_0 {X_1}^{b_1} {X_2}^{b_2}$$ - Transformation de l'équation pour la rendre linéaire en `\(b\)` $$ log(Y) = log(b_0) + b_1 log(X_1) + b_2 log(X_2) $$ --- class: center, middle, section ## Régression logistique --- ### Régression logistique - Pourquoi ? - Adaptation aux variables expliquées qualitatives - Cas d'une variable binaire `\(Y\)` - Recherche de la probabilité `\(\pi\)` que `\(Y=1\)` (comprise entre 0 et 1) - Modèle linéaire inutilisable dans un tel cas (car valeur pouvant être en dehors de `\([0;1]\)`) - Transformation la plus utilisée : fonction logit $$ logit(\pi) = log \left( \frac{\pi}{1-\pi} \right) = b_0 + b_1 X_1 + \ldots + b_p X_p $$ $$ \pi(X_1,\ldots,X_p) = \frac{exp(b_0 + b_1 X_1 + \ldots + b_p X_p)}{1 + exp(b_0 + b_1 X_1 + \ldots + b_p X_p)}$$ --- ### Régression logistique - Alors que `\(logit(\pi)\)` peut prendre n'importe quelle valeur, `\(\pi \in [0,1]\)` toujours - A partir du coefficient `\(b_i\)`, calcul de l'odd-ratio `\(exp(b_i)\)` - Odd-ratio : *chance* que `\(Y\)` prenne la valeur 1 lorsque `\(X_i\)` augmente de 1 - *Toute chose étant égale par ailleurs* - Estimation par le maximum de vraisemblance $$ L = \prod_j P(Y(j) = 1 / X(j))^{Y(j)} \times (1 - P(Y(j) = 1 / X(j)))^{1 - Y(j)} $$ - Affectation de la valeur 1 si `\(P(Y/X) > 0.5\)` - Modulation possible en fonction des probabilités a priori des modalités --- ### Apprentissage supervisé - Cadre globale, dans lequel se place la régression (entre autres) - Plusieurs exemples - Apprendre les règles d'estimation de la valeur d'une variable (qualitative ou quantitative) - *Professeur* indiquant les erreurs, pour permettre de s'améliorer - But : élargir ces règles sur de nouvelles données - Ne pas apprendre par coeur - Vérification des résultats sur d'autres données - Variables quantitatives : erreurs ( `\(R^2\)` ) - Variables qualitatives : matrice de confusion (taux d'erreur) --- ### Exemple - données `adult` - Niveau de salaire (plus ou moins de 50K$) en fonction du nombre d’heures par semaine
--- ### Exemple - données `adult` - Niveau de salaire (plus ou moins de 50K$) en fonction du nombre d’heures par semaine
--- ### Exemple - données `adult` - Matrice de confusion, (avec seuil de décision à 0.5) - prédit en lignes et observé en colonnes
--- ### Exemple - données `adult` - Et avec le modèle complet
--- ### Exemple - données `adult` - Matrice de confusion, (avec seuil de décision à 0.5) - prédit en lignes et observé en colonnes
--- ### Vrai/faux positifs/négatifs | | Observé = 0 | Observé = 1 | |-|:-:|:-:| | Prédit = 0 | `\(n_{VN}\)` | `\(n_{FN}\)` | | Prédit = 1 | `\(n_{FP}\)` | `\(n_{VP}\)` | #### Détail - `\(VN\)` : Vrais négatifs (prédit 0 et observé 0) - `\(FN\)` : Faux négatifs (prédit 0 et observé 1) - `\(FP\)` : Faux positifs (prédit 1 et observé 0) - `\(VP\)` : Vrais positifs (prédit 1 et observé 1) --- ### Précision, Recall, Sensibilité, Spécificité 3 critères de *qualité* de la prédiction - *Precision* (ou précision) - Proportion de 1 correctement prédit par rapport à tous les 1 prédits - `\(Precision = \frac{n_{VP}}{n_{VP} + n_{FP}}\)` - Ce que nous prédisons comme vrai est-il bien vrai ? - ¨*Sensitivity* ou *Recall* (ou sensibilité) - Proportion de 1 correctement prédit par rapport à tous les 1 observés - `\(Sensibilite = \frac{n_{VP}}{n_{FN} + n_{VP}}\)` - Prédisons nous bien tous les cas positifs ? - *Specificity* (ou spécificité) - Proportion de 0 correctement prédit par rapport à tous les 0 observés - `\(Specificite = \frac{n_{VN}}{n_{VN}+n_{FP}}\)` - Prédisons nous bien tous les cas négatifs ? --- ### Précision, Recall, Sensibilité, Spécificité
--- ### Représentations graphiques Quelques représentations graphiques usuelles - ROC - Precision/Recall - Sensitivity/Specificity - Lift - *Performance* --- ### Courbe ROC - Taux de vrai positif vs Taux de faux positif <img src="seance6-reglog_files/figure-html/adult-model2-ROC-1.png" style="display: block; margin: auto;" /> --- ### Courbe Precision/Recall - Précision (Nb de vrai positifs sur Nb positifs prédits) vs Taux de vrai positif <img src="seance6-reglog_files/figure-html/adult-model2-PR-1.png" style="display: block; margin: auto;" /> --- ### Courbe Sensitivity / Specificity - Sensibilité vs Spécificité - Taux de vrai positif vs Taux de vrai négatif <img src="seance6-reglog_files/figure-html/adult-model2-sens-spec-1.png" style="display: block; margin: auto;" /> --- ### Courbe Lift - Lift (Taux de vrai positifs sur Taux de prédictions positives) vs Taux de prédictions positives <img src="seance6-reglog_files/figure-html/adult-model2-lift-1.png" style="display: block; margin: auto;" /> --- ### Courbe de *Performance* - Taux de vrai positifs vs Taux de prédictions positives - Pour 40 % des prédits considérés positifs, on aura 89 % des positifs <img src="seance6-reglog_files/figure-html/wine-model3-perf-1.png" style="display: block; margin: auto;" />