Cours de statistiques M2 L’analyse discriminante Alain Paris [email protected] Septembre 2016 1 Plan • Introduction : que sont les données ? • Analyse discriminante : cas n individus >> p variables && données complètes – Généralités – Exemple : iris de Fisher : • • • • Représentations Manova & tests d’hypothèses AFD décisionnelle et prédictions des inconnus Bibliothèque ade4 • Analyse discriminante : cas n individus >> p variables && données incomplètes – Bibiothèques ropls et mixOmics – L’analyse canonique : une autre manière de faire l’AFD • Les données en grandes dimensions : cas n individus < ou << p variables && données incomplètes ou incomplètes – AFD +/- OSC – OPLS-DA – SDA +/- OSC • Conclusions 2 Plan • Introduction : que sont les données ? • Analyse discriminante : cas n individus >> p variables && données complètes – Généralités – Exemple : iris de Fisher : • • • • Représentations Manova & tests d’hypothèse AFD décisionnelle et prédictions des inconnus Bibliothèque ade4 • Analyse discriminante : cas n individus >> p variables && données incomplètes – Bibiothèques ropls et mixOmics – L’analyse canonique : une autre manière de faire l’AFD • Les données en grandes dimensions : cas n individus < ou << p variables && données incomplètes ou incomplètes – AFD +/- OSC – OPLS-DA – SDA +/- OSC • Conclusions 3 Que sont les données ? 4 Analyses statistiques multivariées : aspects généraux • Structure des données – Tableau Y : 1 ou q facteurs (ou 1 variable de groupe) – Tableau X : p (a priori) variables indépendantes mesurées sur n individus (souvent n << p) • Objectif stratégique du data mining : – Trouver les données aberrantes (outliers) à l’intérieur des groupes d’individus construits a priori – Trouver une structure cachée d’organisation des individus en sous-groupes – Révéler des contrastes “plausibles” existant entre les groupes d’individus construits a priori 5 Organisation générale & processing des données Individuals (n) n statistical individuals n1 biological individuals Ind 1 . . . . . j . . . . n Table X Table Y1 Table Y2 p independent variables m dependent variables r controlled variables mz1..mzi...mzp ...….mzi,1…… …….………… ...…………….. ...…………….. ...……………. ……..……….. ..…..mzi,j....… ...…………….. ...…………….. ...…………….. ...…………….. ..…..mzi,n…… PCA HCA MDS desc1...desck...descm NA desck,1 descm,1 . . . . . . . . . . . . . . . desc1,j desck,j descm,j . . . . . . . . NA . . . desc1,ndesck,n descm,n OLS, Multiple, PLS, Lasso regression PLS2 regression / CCA fac1....facl….facr 1 …… a……..0 1 …….a……..0 ...…………….. ...…………….. ...……………. 1……..c…….3 2……..a....….0 ...…………….. ...…………….. ...…………….. ...…………….. 2……..c……..3 MANOVA Groups Time (# q dummy variables) Date t0 . . . . . tt . . . . tT ANOVA, Mixed-effect models LDA, SDA, PLS-DA Grp G1 G1 . . . . Gi . . . . Gq 6 Abréviations PCA: Principal Component Analysis // Analyse en Composantes Principales (ACP) HCA: Hierarchical Cluster Analysis // Classification Hiérarchique MDS: multidimensional scaling // Analyse de positionnement multidimensionnel OLS regression; Ordinary Least Squares regression // Régression par moindres carrés (ordinaires) Multiple regression // Régression multiple Lasso : least absolute shrinkage and selection operator // Contraction et sélection des paramètres d’une régression PLS1/PLS2 regression: Partial Least square (1/2) regression // Régression par moindres carrés partiels de type 1 ou 2 CCA: Canonical Correlation Analysis // Analyse (de corrélation) canonique MANOVA: Multivariate Analysis of Variance // Analyse de variance multivariée ANOVA: Analysis of Variance // Analyse de variance Mixed Effect Models // Analyse de variance à effets mixtes LDA: Linear Discriminant Analysis // Analyse linéaire discriminante SDA: Shrinkage Discriminant Analysis // Analyse discriminante régularisée (O)PLS-DA: Partial Least Squares-Discriminant Analysis // Analyse discriminante par moindres carrés partiels 7 L’analyse factorielle discriminante (AFD, ALD // FDA, DA, LDA, QDA) • L’AFD : généralités – Une méthode pour mettre en évidence les liaisons entre un caractère qualitatif à expliquer (Y) et un ensemble de caractères quantitatifs explicatifs (X) AFD descriptive. – Quelques exemples : • Clients d'une banque classés en « bons » ou « mauvais » payeurs ou « ayant fait faillite » (Y) et indicateurs de gestion (X) • Cursus universitaire (Y) d'un ensemble d'élèves et notes en terminale (X) • Groupes cliniques et empreintes métaboliques urinaires par RMN 8 Data processing : l’analyse discriminante Table X Names Independent Identification variables (p) variable (n) V0.605 0.19024 0.20149 0.2612 0.21294 0.2007 0.4733 V0.555 0.2703 0.19493 0.29168 0.2313 0.26312 0.49825 V0.535 0.2243 0.17071 0.20215 0.23013 0.24222 0.5754 V0.505 0.17701 0.07033 0.1464 0.19539 0.26558 0.49363 Indiv M01 M02 M03 M04 M25 M26 0.27168 0.72928 0.16033 0.17639 0.48545 0.25077 0.36819 0.19074 0.18908 0.2856 0.14187 0.1731 0.55058 0.5679 0.38684 0.21281 0.26633 0.27671 0.54425 0.33494 0.28832 0.49734 0.21561 0.29383 0.41691 0.54199 0.19308 0.22975 0.30401 0.26072 0.5251 0.53773 0.25284 0.22915 0.19452 0.21972 0.37625 0.47908 0.22423 0.15987 0.26842 0.22755 0.56146 0.40941 0.23421 0.36865 0.12 0.24517 M27 M28 M49 M50 M51 M52 M01 M02 M03 M04 M25 M26 0.19054 0.16659 0.51784 0.24527 0.17779 0.2111 0.24016 0.20576 0.52871 0.29241 0.22034 0.41146 0.2844 0.21604 0.68798 0.34372 0.18726 0.24182 0.21697 0.33566 0.58655 0.27031 0.24962 0.29641 M27 M28 M49 M50 M51 M52 weight 58 47 36 44 59 NA _ 59 47 54 82 47 62 50 68 56 47 58 64 41 33 73 62 76 64 n statistical individuals n1 biological individualsTable Table Y Dependent variables (q) Y Controlled variables Groups Table Y (t) Dummy variables (t) Morris.NEntrance Porsolt.Lat.Resig1 Sexe Dose Slaughter Date group Dummy.group.1 Dummy.group.2 Dummy.group.3 Dummy.group.4 15 95 F 0 a 0 F00 1 0 0 0 14 89 F 0 a 0 F00 1 0 0 0 15 57 F 0 a 0 F00 1 0 0 0 13 95 F 0 a 0 F00 1 0 0 0 18 58 F 0 b 0 F00 1 0 0 0 NA _ 41 F 0 b 0 F00 1 0 0 0 18 53 F 0 b 0 F00 1 0 0 0 15 56 F 0 b 0 F00 1 0 0 0 16 76 F 0 c 0 F00 1 0 0 0 18 89 F 0 c 0 F00 1 0 0 0 18 70 F 0 c 0 F00 1 0 0 0 18 43 F 0 c 0 F00 1 0 0 0 21 76 F 0 a 1 F10 0 1 0 0 12 93 F 0 a 1 F10 0 1 0 0 15 56 F 0 a 1 F10 0 1 0 0 13 239 F 0 a 1 F10 0 1 0 0 18 60 F 0 b 1 F10 0 1 0 0 15 66 F 0 b 1 F10 0 1 0 0 17 151 F 0 b 1 F10 0 1 0 0 8 131 F 0 b 1 F10 0 1 0 0 18 321 F 0 c 1 F10 0 1 0 0 11 80 F 0 c 1 F10 0 1 0 0 9 382 F 0 c 1 F10 0 1 0 0 6 559 F 0 c 1 F10 0 1 0 0 LDA (CA) 9 Plan • Introduction : que sont les données ? • Analyse discriminante : cas n individus >> p variables && données complètes – Généralités – Exemple : iris de Fisher : • • • • Représentations Manova & tests d’hypothèse AFD décisionnelle et prédictions des inconnus Bibliothèque ade4 • Analyse discriminante : cas n individus >> p variables && données incomplètes – Bibiothèques ropls et mixOmics – L’analyse canonique : une autre manière de faire l’AFD • Les données en grandes dimensions : cas n individus < ou << p variables && données incomplètes ou incomplètes – AFD +/- OSC – OPLS-DA – SDA +/- OSC • Conclusions 10 L’analyse factorielle discriminante • Une approche prédictive, l’AFD décisionnelle – L‘AFD crée, pour chaque classe, une fonction de décision – L’observation x inconnue est affectée à la classe dont la fonction de décision prend la valeur la plus élevée : • L‘analyse discriminante permet de générer des règles d'affectation et de calculer les probabilités d'appartenance à chaque classe pour chaque observation a posteriori • Possibilité de validation croisée, en séparant l’échantillon en deux blocs : – avec un échantillon d’apprentissage pour créer le modèle et élaborer les règles de décisions ou d’affectation – un second échantillon, l’échantillon-test, pour estimer les performances du modèle 11 L’analyse factorielle discriminante • L’AFD : généralités – Différentiation de plusieurs groupes d'individus (Y), et distinction de ces groupes avec les seuls caractères quantitatifs de X qui le permettent – L’AFD : méthode supervisée, puisque réalisée avec des connaissances a priori sur les caractéristiques des individus – Méthode géométrique # multivariate-ANOVA (MANOVA) : • Tests de significativité des distances entre groupes • Tests de significativité des axes factoriels • Explication de la construction des composantes 12 L’analyse factorielle discriminante • L’AFD : – Objectif : • Réduire, comme en ACP, le nombre de dimensions des données, en projetant les individus sur des axes déformant le moins possible la réalité, en prenant en compte la structuration en groupes de la population totale des individus – Principe : • Recherche des nouvelles variables, dites « composantes discriminantes » (LD), obtenues à partir des combinaisons linéaires des variables originales (# MANOVA à une voie) 13 L’analyse factorielle discriminante • L’AFD : – Critère de détermination des nouvelles variables : Séparation optimale des projections des sous-nuages • Equivalent à une ACP sur les barycentres des groupes Résultats : • Les directions factorielles discriminantes successives sont alors déterminées, tandis que des graphiques (plans factoriels) permettent de visualiser les individus ou les variables expliquant la construction des axes • – – Algorithme : • Maximiser la distance inter-groupe à partir des barycentres et minimiser la distance entre individus intra-groupe 14 L’analyse factorielle discriminante • L’AFD : – Décomposition de la matrice d'inertie V du nuage : V = W + B • W est appelée matrice d'inertie intra-classe, dispersion des individus à l’intérieur d’un groupe • B est appelée matrice d'inertie inter-classe, dispersion entre les groupes – Le pouvoir discriminant de la direction u est meilleur si l'inertie inter-classe B est grande, ce qui équivaut à une inertie intra-classe W faible – Chercher les valeurs propres telles que : avec u vecteur propre de V-1*B 3 groupes [min(k-1 groupes, p variables) axes discriminants] 15 L’analyse factorielle discriminante : un exemple -glucose Les profils métaboliques Lactate + threonine lipids glucose, amino acids -glucose alanine threonine choline lipids creatinine lactate lysine Val Gln, Glu Glu lipids Gln 5.5 5.0 4.5 4.0 3.5 3.0 2.5 lysine 2.0 1.5 1.0 0.5 0.0 Empreinte obtenue sur sérum humain par 1H NMR à 600,13 MHz 16 ppm L’analyse factorielle discriminante (AFD) : un exemple AFD : Application à la métabonomique (# ACP sur les barycentres) J16 J14 J9 J7 J21 T3A.standard T2B.standard T2A.standard J2 T1B.standard Ain 93 T1A.standard 5 J0 T3A.nitrate T3A.virus T3A.Temoins T3A.Sans T3A.Bt T2B.virus T2B.Temoins T2B.nitrate T2B.Bt T2B.Sans T2A.Bt T2A.nitrate T2A.virus T2A.Sans T2A.Temoins T0B.standard T0A.standard T-1 J-1 0 LD2 (10.1%) (10.3%) LD2 10 Global metabolic exploration toward a structuring of the metabolic information AFD sur 189 variables T1B.Bt T1B.virus T1B.Temoins T1B.Sans T1B.nitrate T1A.Sans T1A.Bt T1A.nitrate T1A.virus T1A.Temoins T0A.Sans T0A.Bt Maize-based -5 T0B.Sans T0B.Bt T0B.Temoins T0B.nitrate T0B.virus T0A.nitrate T0A.Temoins T0A.virus -10 J21 J16 J9 J14 dietJ9 J7 Diet transition J0 -20 J2 • 4 séries de rats nourris par un régime à base de pommes de terre (n = 192) • 2 séries de rats nourris par un régime à base de maïs (n = 96) Potato-based diet -10 0 10 LD1 (76.4%) LD1 (72.1%) 17al, non publié) (Paris et 8 x 288 = 2304 empreintes LDA with 8 x 3 = 24 groupes L’AFD - un exemple historique : les iris de Fisher • Un peu d’histoire : 1875 : Régression linéaire de Francis Galton 1896 : Formule du coefficient de corrélation de Karl Pearson 1900 : Distribution du Χ² de Karl Pearson 1931 : Généralisation du test de Student de Hotelling 1936 : Relations entre 2 sets de variables de Hotelling 1936 : Analyse discriminante de Fisher et Mahalanobis 1941 : Analyse factorielle des correspondances de Guttman 1943 : Réseaux de neurones de Mc Culloch et Pitts 1944 : Régression logistique de Joseph Berkson 1958 : Perceptron de Rosenblatt 1962 : Analyse des correspondances de Benzécri 1964 : Arbre de décision AID de Sonquist et Morgan 1965 : Méthode des centres mobiles de E. W. Forgy 1967 : Méthode des k-means de Mac Queen 1972 : Modèle linéaire généralisé de Nelder et Wedderburn 1975 : Algorithmes génétiques de Holland 1975 : Méthode de classement DISQUAL de Gilbert Saporta 1980 : Arbre de décision CHAID de KASS 1983 : Régression PLS de Herman et Svante Wold 1984 : Arbre CART de Breiman, Friedman, Olshen, Stone 1986 : Perceptron multicouches de Rumelhart et McClelland 1989 : Réseaux de T. Kohonen (cartes autoadaptatives) vers 1990 : Apparition du concept de data mining 1991 : Méthode MARS de Jerome H. Friedman 1993 : Arbre C4.5 de J. Ross Quinlan 1996 : Bagging (Breiman) et Boosting (FreundShapire) 1998 : Support Vector Machines (SVM) de Vladimir Vapnik 2001 : Forêts aléatoires de L. Breiman 2005 : Méthode elastic net de Zhou et Hastie d’après Tuffery, 2010 18 L’AFD - un exemple historique : les iris de Fisher ou de Anderson… Iris setosa I. versicolor I. virginica Un peu d’histoire : Edgar Anderson (1935). "The irises of the Gaspé Peninsula". Bulletin of the American Iris Society. 59: 2–5. Edgar Anderson (1936). "The species problem in Iris". Annals of the Missouri Botanical Garden. 23 (3): 457–509. JSTOR 2394164. Ronald A. Fisher (1936). "The use of multiple measurements in taxonomic problems". Annals of Eugenics. 7 (2): 179–188. doi:10.1111/j.1469-1809.1936.tb02137.x. 19 L’AFD - un exemple historique : les iris de Fisher • Un peu d’histoire : str(iris) # 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... spiris <- unclass(iris$Species) pairs(iris[1:4], main = "Les iris de Fisher -- 3 espèces", pch = c(21, 25, 24)[spiris], bg = c("red", "green3", "blue")[spiris], las = 1, gap = 0, labels = c("Longueur\nSépale", "Largeur\nSépale", "Longueur\nPétale", "Largeur\nPétale")) X <- iris[,1:4] Y <- iris[,5] 20 Les iris de Fisher : les données 21 Les iris de Fisher : structuration de la variance 22 Les iris de Fisher : structuration de la variance # pca pca_1 <- princomp(iris[1:4]) plot(pca_1) names(pca_1) # [1] "sdev" "loadings" "center" "scale" "n.obs" "scores" "call" pca_1$sdev # Comp.1 Comp.2 Comp.3 Comp.4 # 2.049 0.491 0.279 0.154 pca_1$sdev/(sum(pca_1$sdev)) # Comp.1 Comp.2 Comp.3 Comp.4 # 0.689 0.165 0.094 0.052 23 Les iris de Fisher : structuration de la variance plot(pca_1$scores[,1], pca_1$scores[,2], type="n", xlab="PC1", ylab="PC2") points(pca_1$scores[,1], pca_1$scores[,2], pch=14+as.numeric(as.factor(iris[,5])), cex=1.15, col=1+as.numeric(as.factor(iris[,5]))) mean_pc1 <- tapply(pca_1$scores[,1], iris[,5], mean) mean_pc2 <- tapply(pca_1$scores[,2], iris[,5], mean) points(mean_pc1, mean_pc2, pch=20+as.numeric(as.factor(levels(as.factor(iris[,5])))), cex=3.5, bg=1+as.numeric(as.factor(levels(as.factor(iris[,5])))) ) title(main="PCA sur iris de Fisher, plan 1 x 2") 24 Les iris de Fisher : structuration de la variance library(ellipse) lines(ellipse(x=pca_1$scores[as.numeric(as.factor(iris[,5]))==1,1:2], scale = c(sd(pca_1$scores[as.numeric(as.factor(iris[,5]))==1,1]), sd(pca_1$scores[as.numeric(as.factor(iris[,5]))==1,2])), centre = c(mean_pc1[1], mean_pc2[1]), level = 0.95, t = sqrt(qchisq(0.95, 1)), which = c(1, 2), npoints = 100), col=1+as.numeric(as.factor(levels(as.factor(iris[,5]))))[1], lty=1, lwd=1.15 ) lines(ellipse(x=pca_1$scores[as.numeric(as.factor(iris[,5]))==2,1:2], scale = c(sd(pca_1$scores[as.numeric(as.factor(iris[,5]))==2,1]), sd(pca_1$scores[as.numeric(as.factor(iris[,5]))==2,2])), centre = c(mean_pc1[2], mean_pc2[2]), level = 0.95, t = sqrt(qchisq(0.95, 1)), which = c(1, 2), npoints = 100), col=1+as.numeric(as.factor(levels(as.factor(iris[,5]))))[2], lty=1, lwd=1.15 ) lines(ellipse(x=pca_1$scores[as.numeric(as.factor(iris[,5]))==3,1:2], scale = c(sd(pca_1$scores[as.numeric(as.factor(iris[,5]))==3,1]), sd(pca_1$scores[as.numeric(as.factor(iris[,5]))==3,2])), centre = c(mean_pc1[3], mean_pc2[3]), level = 0.95, t = sqrt(qchisq(0.95, 1)), which = c(1, 2), npoints = 100), col=1+as.numeric(as.factor(levels(as.factor(iris[,5]))))[3], lty=1, lwd=1.15 ) 25 Les iris de Fisher : structuration de la variance versicolor virginica setosa 26 Les iris de Fisher : analyse linéaire discriminante (LDA) • Objectif : – Explication d’une variable qualitative Y à m modalités {τ1, …,τm} par p variables quantitatives Xj , j = 1, …, p observées sur un même échantillon Ω de taille n – On dispose d’un nouvel individu indi sur lequel on a observé les Xj mais pas Y – Il s’agit de décider de la modalité τl de Y de ce nouvel individu indi : problème d’affectation • Exemple des iris de Fisher : – dim(X) = c(150, 4) – length(Y) = 150 27 Les iris de Fisher : analyse linéaire discriminante (LDA) setosa versicolor virginica 28 Les iris de Fisher : analyses discriminantes linéaire et quadratique (LDA, QDA) et prédictions • La règle de Bayes d’affectation d’un individu indi à un groupe donné : – Calcul d’une probabilité a posteriori tenant compte de : • La probabilité empirique a priori • Du vecteur moyenne des classes • De la matrice de variance-covariance des classes • La définition des zones frontières pour la décision d’affectation d’un individu inconnu indi à un groupe donné : – Ligne de niveau de probabilité nulle – Définition à partir d’une grille couvrant le plan factoriel 29 Les iris de Fisher : analyses discriminantes linéaire et quadratique (LDA, QDA) et prédictions • Hétéroscédasticité : matrices de variance-covariance différentes – Dans le cas général, il n’y a pas d’hypothèse supplémentaire sur la loi de x. Alors les matrices Σl sont fonction de la classe l : Analyse discriminante quadratique – Les probabilités a priori πl sont supposées connues mais il faut estimer les moyennes μl et les covariances Σl en maximisant la vraisemblance – On obtient la moyenne empirique de x dans la classe l pour l’échantillon d’apprentissage et on estime Σl par la matrice de covariance empirique S*Rl – Beaucoup de paramètres à évaluer : approche peu robuste 30 Les iris de Fisher : analyses discriminantes linéaire et quadratique (LDA, QDA) et prédictions • Homoscédasticité : matrices de variance-covariance égales – On suppose dans ce cas que les lois de chaque classe partagent la même structure de covariance : Σl = Σ – Le critère à maximiser devient l qui est linéaire en x : Analyse discriminante linéaire. Les moyennes μl sont estimées par gl et Σ est estimée par la matrice de covariance intra empirique – Si de plus, les probabilités πl sont égales, après estimation le critère s’écrit Fdl = – Fdl : fonctions de classification ou fonctions discriminantes : on retrouve alors le critère issu de l’analyse factorielle décisionnelle qu’il faut maximiser 31 Les iris de Fisher : analyse linéaire discriminante (LDA) et prédictions # Analyse Lineaire Discriminante library(MASS) lda_1 <- lda(X,Y) names(lda_1) # [1] "prior" "counts" "means" "scaling" "lev" pred_lda_1 <- predict(lda_1, X) names(pred_lda_1) # [1] "class" "posterior" "x" "svd" "N" "call" plot(pred_lda_1$x[,1], pred_lda_1$x[,2], type="n", xlab="LD1", ylab="LD2") points(pred_lda_1$x[,1], pred_lda_1$x[,2], pch=14+as.numeric(as.factor(iris[,5])), cex=1.15, col=1+as.numeric(as.factor(iris[,5]))) title(main="LDA sur iris de Fisher, plan 1 x 2") mean_ld1 <- tapply(pred_lda_1$x[,1], iris$Species, mean) mean_ld2 <- tapply(pred_lda_1$x[,2], iris$Species, mean) points(mean_ld1, mean_ld2, bg=1+as.numeric(as.factor(levels(as.factor(iris[,5])))), cex=3.5, pch=20 + as.numeric(as.factor(levels(as.factor(iris[,5])))) ) 32 Les iris de Fisher : analyse linéaire discriminante (LDA) et prédictions # dessin des zones de confiance a 95% pour chaque groupe library(ellipse) # groupes 1 et 2 lines(ellipse(x=pred_lda_1$x[as.numeric(as.factor(iris[,5]))==1,1:2], scale = c(sd(pred_lda_1$x[as.numeric(as.factor(iris[,5]))==1,1]), sd(pred_lda_1$x[as.numeric(as.factor(iris[,5]))==1,2])), centre = c(mean_ld1[1], mean_ld2[1]), level = 0.95, t = sqrt(qchisq(0.95, 1)), which = c(1, 2), npoints = 100), col=1+as.numeric(as.factor(levels(as.factor(iris[,5]))))[1], lty=1, lwd=1.15 ) lines(ellipse(x=pred_lda_1$x[as.numeric(as.factor(iris[,5]))==2,1:2], scale = c(sd(pred_lda_1$x[as.numeric(as.factor(iris[,5]))==2,1]), sd(pred_lda_1$x[as.numeric(as.factor(iris[,5]))==2,2])), centre = c(mean_ld1[2], mean_ld2[2]), level = 0.95, t = sqrt(qchisq(0.95, 1)), which = c(1, 2), npoints = 100), col=1+as.numeric(as.factor(levels(as.factor(iris[,5]))))[2], lty=1, lwd=1.15 ) # groupe 3 y_3 <- pred_lda_1$x[as.numeric(as.factor(iris[,5]))==3,2] x_3 <- pred_lda_1$x[as.numeric(as.factor(iris[,5]))==3,1] lm_lda_1_3 <- lm(y_3 ~ + x_3) summary(lm_lda_1_3) line1 <- ellipse(x= lm_lda_1_3, scale = c(sd(pred_lda_1$x[as.numeric(as.factor(iris[,5]))==3,2]), sd(pred_lda_1$x[as.numeric(as.factor(iris[,5]))==3,1])), level = 0.95, npoints = 100) lines(line1[,1]+mean_ld1[3], line1[,2]+mean_ld2[3], col=4) 33 Les iris de Fisher : analyse linéaire discriminante (LDA) et prédictions # dessin des zones de confiance a 95% pour chaque groupe names(lda_1) # [1] "prior" "counts" "means" "scaling" "lev" "svd" "N" "call" # coefficients des equations discriminantes : lda_1$scaling # LD1 LD2 # Sepal.Length 0.8293776 0.02410215 # Sepal.Width 1.5344731 2.16452123 # Petal.Length -2.2012117 -0.93192121 # Petal.Width -2.8104603 2.83918785 cor(w1, pred_lda_1$x[,1:2] ) # LD1 LD2 # LD1 1.000000e+00 7.800857e-16 # LD2 8.244826e-16 1.000000e+00 # loadings cor(iris[,1:4], predict(lda_1, iris[,1:4])$x[,1:2]) # LD1 LD2 # Sepal.Length -0.7918878 0.21759312 # Sepal.Width 0.5307590 0.75798931 # Petal.Length -0.9849513 0.04603709 # Petal.Width -0.9728120 0.22290236 # scores pred_lda_1$x # ebouli des valeurs propres (distribution de l'information selon les axes) lda_1$svd/sum(lda_1$svd) # autre manière de calculer les scores # [1] 0.9139467 0.0860533 w1 <- as.matrix(iris[,1:4])%*%lda_1$scaling[,1:2] # proportion de trace lda_1$svd^2/sum(lda_1$svd^2) # [1] 0.991212605 0.008787395 # verification 34 Les iris de Fisher : analyse linéaire discriminante (LDA) et prédictions setosa versicolor virginica 35 Les iris de Fisher : analyse linéaire discriminante (LDA) et manova # manova iris <- as.data.frame(iris) head(iris) fit <- manova(as.matrix(iris[,1:4]) ~ Species , iris) summary.aov(fit) # Response Sepal.Length : # # Species # Residuals Df 2 147 Sum Sq 63.212 38.956 Mean Sq 31.606 0.265 F value 119.26 Pr(>F) < 2.2e-16 *** Sum Sq 11.345 16.962 Mean Sq 5.6725 0.1154 F value 49.16 Pr(>F) < 2.2e-16 *** Sum Sq 437.10 27.22 Mean Sq 218.551 0.185 F value 1180.2 Pr(>F) < 2.2e-16 *** Sum Sq 80.413 6.157 Mean Sq 40.207 0.042 F value 960.01 Pr(>F) < 2.2e-16 *** # Response Sepal.Width : # # Species # Residuals Df 2 147 # Response Petal.Length : # # Species # Residuals Df 2 147 # Response Petal.Width : # # Species # Residuals Df 2 147 36 Les iris de Fisher : analyse linéaire discriminante (LDA) et manova summary(fit) # Df Pillai approx F num Df den Df # Species 2 1.1919 53.466 8 290 # Residuals 147 # --# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Pr(>F) < 2.2e-16 *** λi = corrélation canonique au carré (valeurs propres) Trace de Pillai [ sum(lda_ade4_1$eig) ] summary(fit, test = "Wilks") # ANOVA table of Wilks' lambda # Df Wilks approx F # Species 2 0.023439 199.15 # Residuals 147 num Df 8 den Df 288 Pr(>F) < 2.2e-16 *** Λ de wilks [ prod(1-lda_ade4_1$eig) ] λi = corrélation canonique au carré Plus le Λ (Wilks) est faible, meilleure est la discrimination 37 Les iris de Fisher : analyse linéaire discriminante (LDA) et manova • Lambda L de Wilks p L = |W|/ |T| = |W-1T| = i |W| = det(W) 1 i : valeur propre de W-1T [ avec i = 1/(1+i ) et i : valeur propre de W-1B ] W : matrice de covariance intra groupe (p x p) B : matrice de covariance inter groupe (p x p) T : matrice de covariance totale (p x p) p variables (matrices W et T de rang plein) • Sous hypothèse de multinormalité et d'égalité des matrices de covariances, on peut montrer que -[ n - (p+k)/2 - 1 ] Ln(L) où • n est le nombre total d'observations. • p est le nombre de variables. • k est le nombre de groupes. est approximativement distribuée suivant une loi Khi2 avec p(k-1) degrés de liberté 38 Les iris de Fisher : analyse linéaire discriminante (LDA) et manova Suite Lambda L de Wilks • Conséquences : – Possibilité de tester la signification des valeurs propres i successives – (n-k) λ Q est approximativement distribué suivant une loi Khi22 avec (p+k-2q) degrés de liberté. On vérifie successivement si la 1ère (q=1) valeur propre est significative, puis la 2nde (q=2), et ainsi de suite H0 : les vecteurs propres q+1, q+2 .... k-1 n'ajoutent rien à la discrimination des k groupes H1 : non H0 k-1 -[ n - (p+k)/2 - 1] Ln(L*) avec L* = i q+1 est approximativement distribué selon une loi Khi2 avec (p-q)(k-q-1) degrés de liberté 39 Les iris de Fisher : analyse linéaire discriminante (LDA) et manova summary(fit, test = "Wilks") # ANOVA table of Wilks' lambda # Df Wilks approx F num Df den Df # Species 2 0.023439 199.15 8 288 # Residuals 147 # --# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 manov_fit <- summary(fit) names(manov_fit) # [1] "row.names" "SS" "Eigenvalues" "stats" manov_fit$Eigenvalues # [,1] [,2] [,3] # 32.19193 0.285391 7.483773e-15 gamma <- 1/(1+manov_fit$Eigenvalues) gamma # [1] 0.03012781 0.7779734 L <- prod(gamma) L # [1] 0.02343863 1 Pr(>F) < 2.2e-16 *** [,4] -2.449876e-15 1 40 Les iris de Fisher : analyse linéaire discriminante (LDA), manova et test de Wilks summary(fit, test = "Wilks") # ANOVA table of Wilks' lambda # Df Wilks approx F # Species 2 0.023439 199.15 # Residuals 147 num Df 8 den Df 288 Pr(>F) < 2.2e-16 *** # test de significativite de la valeur L de Wilks (0.023439) # -[ n - (p+k)/2 - 1 ] Ln(L) n <- 150 ; p <- 4 ; k <- 3 valQ <- -(n-(p+k)/2 - 1)*log(L) # [1] 546.1153 # degres de liberte : df=p*(k-1) 1 - pchisq(q=valQ, df=p*(k-1)) # [1] 0 41 Les iris de Fisher : analyse linéaire discriminante (LDA) et manova, autres tests summary(fit, test="Hotelling-Lawley") # Df Hotelling-Lawley # Species 2 32.477 # Residuals 147 approx F 580.53 num Df 8 den Df 286 Pr(>F) < 2.2e-16 *** Trace de Hotelling-Lawley [ sum(lda_ade4_1$eig/(1-lda_ade4_1$eig)) ] summary(fit, test="Roy") # Df Roy # Species 2 32.192 # Residuals 147 approx F 1167 num Df 4 den Df 145 Pr(>F) < 2.2e-16 *** La plus grande valeur propre µ1 [ max(lda_ade4_1$eig/(1-lda_ade4_1$eig)) ] 42 Les iris de Fisher : analyse linéaire discriminante (LDA), quelques calculs d’algèbre linéaire library(DiscriMiner) # Centrer les donnees centeredData <- scale(iris[,1:4], scale = FALSE) Y <- iris[,5] # Generating Scatter matrices B <- betweenCov(variables = iris[,1:4], group = Y) W <- withinCov(variables = iris[,1:4], group = Y) # Trouver les vecteurs propres (Eigen vectors) ev <- eigen(solve(W) %*% B)$vectors # Creer les projections sur la 1er axe discriminant projectedPoints_1 <- centeredData %*% ev[,1] %*% t(ev[,1]) projectedPoints_2 <- centeredData %*% ev[,2] %*% t(ev[,2]) plot(projectedPoints_1[,1], projectedPoints_2[,1], col=1+as.numeric(as.factor(Y)), type="n", xlab="LD1", ylab="LD2") points(projectedPoints_1[,1], projectedPoints_2[,1], col=1+as.numeric(as.factor(Y)), cex=0.85, pch=14+as.numeric(as.factor(Y))) # calcul de W-1*B W1 <- solve(W, tol=1e-25) eigen(W1%*%B)$values[1:2] # [1] 32.191929 0.285391 Tot <- totalCov(variables= iris[,1:4], div_by_n = FALSE) eigen(W1%*%Tot)$values[1:2] - 1 # [1] 32.191929 0.285391 # manov_fit$Eigenvalues[1:2] # [1] 32.191929 0.285391 1/(1+manov_fit$Eigenvalues[1:2]) # [1] 0.03012781 0.77797337 (1/(1+eigen(W1%*%B)$values[1:2])) # [1] 0.03012781 0.77797337 (1/(1+eigen(W1%*%B)$values[1])) * (1/(1+eigen(W1%*%B)$values[2])) # [1] 0.02343863 43 Les iris de Fisher : analyse linéaire discriminante (LDA), quelques calculs d’algèbre linéaire 44 Les iris de Fisher : analyse linéaire discriminante (LDA) prédiction des inconnus – AFD décisionnelle # prediction des inconnus library(MASS) data("iris3") tr <- sample(1:50, 25) train <- rbind(iris3[tr,,1], iris3[tr,,2], iris3[tr,,3]) test <- rbind(iris3[-tr,,1], iris3[-tr,,2], iris3[-tr,,3]) cl <- factor(c(rep("s",25), rep("c",25), rep("v",25))) z <- lda(train, cl) pred_1 <- predict(z, test)$class cl[cl!=pred_1] # [1] v v Levels: c s v # taux de mal-classes length(cl[cl!=pred_1])/length(cl) # [1] 0.02666667 # tableau de classement ou matrice de confusion table(cl, pred_1) # pred_1 cl c s v # c 25 0 0 # s 0 25 0 # v 2 0 23 45 Les iris de Fisher : analyse linéaire discriminante (LDA) avec ade4 library(ade4) lda_ade4_1 <- discrimin(dudi.pca(as.data.frame(iris[,1:4]), scannf=FALSE), fac=as.factor(iris[,5]), scannf = FALSE, nf=2) plot(lda_ade4_1) names(lda_ade4_1) # [1] "eig" "nf" "fa" "li" "va" "cp" "gc" "call" w1 <- lda_ade4_1$eig # [1] 0.9698722 0.2220266 w1/sum(w1) # [1] 0.8137202 0.1862798 w2 <- w1/(1-w1) w2 # [1] 32.191929 0.285391 w2/sum(w2) # [1] 0.991212605 0.008787395 lda_1$svd^2/sum(lda_1$svd^2) # [1] 0.991212605 0.008787395 46 Les iris de Fisher : analyse linéaire discriminante (LDA) avec ade4 47 Les iris de Fisher : analyse linéaire discriminante (LDA) avec ade4 # poids canoniques ou coef. dans l'eq. discriminante lda_ade4_1$fa # # Sepal.Length # Sepal.Width # Petal.Length # Petal.Width DS1 DS2 0.1200150 0.01772302 0.1168775 0.83778380 -0.6790443 -1.46087856 -0.3743571 1.92176982 # scores lda_ade4_1$li lda_ade4_1$li # # Sepal.Length # Sepal.Width # Petal.Length # Petal.Width DS1 DS2 -0.7918878 0.21759312 0.5307590 0.75798931 -0.9849513 0.04603709 -0.9728120 0.22290236 lda_ade4_1$cp # # RS1 # RS2 # RS3 # RS4 DS1 -0.98150333 -0.10661589 0.15007521 0.05255188 DS2 0.0362021 -0.8347066 -0.4609640 0.2991094 dudi_1 <- dudi.pca(as.data.frame(iris[,1:4]), scannf=TRUE, nf=4) # lda_ade4_1$va correlation entre variables et names(dudi_1) scores lda_ade4_1$va # # Sepal.Length # Sepal.Width # Petal.Length # Petal.Width CS1 -0.7918878 0.5307590 -0.9849513 -0.9728120 # equivalent a lda_ade4_1$va cor(iris[,1:4], lda_ade4_1$li) CS2 0.21759312 0.75798931 0.04603709 0.22290236 # [1] "tab" "cw" "lw" "eig" "rank" "nf" "c1" "li" "co" "l1" "call" t(cor(lda_ade4_1$li, dudi_1$l1)) # equivalent a lda_ade4_1$cp # # RS1 # RS2 # RS3 # RS4 DS1 -0.98150333 -0.10661589 0.15007521 0.05255188 DS2 0.0362021 -0.8347066 -0.4609640 0.2991094 48 Plan • Introduction : que sont les données ? • Analyse discriminante : cas n individus >> p variables && données complètes – Généralités – Exemple : iris de Fisher : • • • • Représentations Manova & tests d’hypothèse AFD décisionnelle et prédictions des inconnus Bibliothèque ade4 • Analyse discriminante : cas n individus >> p variables && données incomplètes – Bibiothèques ropls et mixOmics – L’analyse canonique : une autre manière de faire l’AFD • Les données en grandes dimensions : cas n individus < ou << p variables && données incomplètes ou incomplètes – AFD +/- OSC – OPLS-DA – SDA +/- OSC • Conclusions 49 L’analyse discriminante avec données manquantes • AFD conventionnelle : – Retrait des lignes concernées – Diminution de la puissance statistique • Possibilité avec la régression PLS (PLS2) – Sous R : • library(ropls) • library(mixOmics) – Simca 50 Les iris de Fisher : analyse discriminante avec opls (PLS-DA, OPLS-DA) library(ropls) data("iris") X <- iris[,1:4] Y <- iris[,5] oplsda_1 <- opls(X,Y, orthoI = 0) # PLS-DA # 150 samples x 4 variables and 1 response # standard scaling of predictors and response(s) # R2X(cum) R2Y(cum) Q2(cum) RMSEE # Total 0.995 0.586 0.566 0.307 dev.off(2) # dev.off(which = dev.cur()) pre 3 ort 0 pR2Y 0.05 pQ2 0.05 plot(oplsda_1, typeVc = 'x-score') plot(oplsda_1, typeVc = 'x-loading') # "outlier", "predict-train", "xy-score", "xy-weight" # une limitation de opls oplsda_2 <- opls(X,Y, orthoI = 1) # Error: OPLS-DA only available for binary classification (use PLS-DA for multiple classes) # pas de correction orthogonal du signal 51 Les iris de Fisher : analyse linéaire avec opls (PLS-DA) 52 Les iris de Fisher : analyse linéaire avec opls (PLS-DA) 53 Les iris de Fisher : analyse linéaire avec opls (PLS-DA) 54 Les iris de Fisher : analyse linéaire avec mixOmics (PLS-DA) – données complètes / incomplètes # analyse plsda sur donnees completes library(mixOmics) data("iris") X <- iris[,1:4] Y <- iris[,5] plsda_1 <- plsda(X,Y, ncomp=2) plotIndiv(plsda_1, col=1 + as.numeric(as.factor(Y)), ellipse = TRUE, ellipse.level=0.95) # analyse plsda sur donnees completes X1 <- X X1[sample(1:150,10),1] <- NA X1[sample(1:150,10),2] <- NA X1[sample(1:150,10),3] <- NA X1[sample(1:150,10),4] <- NA plsda_2 <- plsda(X1,Y, ncomp=2) plotIndiv(plsda_2, col=1 + as.numeric(as.factor(Y)), ellipse = TRUE, ellipse.level=0.95) plotVar(plsda_2, comp=c(1,2)) 55 Les iris de Fisher : analyse linéaire avec mixOmics (PLS-DA) – données complètes – score plot versicolor setosa virginica 56 Les iris de Fisher : analyse linéaire avec mixOmics (PLS-DA) – données manquantes – score plot versicolor setosa virginica 57 Les iris de Fisher : analyse linéaire avec mixOmics (PLS-DA) – données manquantes – loading plot 58 Les iris de Fisher : analyse linéaire discriminante (LDA) et corrélations canoniques ou pouvoir discriminant α = /(1+) avec , valeur propre de W-1B : – Ce rapport α exprime la proportion de la variabilité totale imputable aux différences entre les barycentres des groupes. – Cette quantité est analogue au R2 en régression. On définit α comme le coefficient de corrélation canonique ou pouvoir discriminant – Ceci fait référence à une manière de réaliser l’analyse discriminante à partir de l’analyse canonique 59 L’analyse linéaire discriminante (LDA) et l’analyse canonique 60 L’analyse canonique (AC) • Sur le plan théorique, l’AC est la méthode centrale de la statistique descriptive multidimensionnelle : – Généralisation d’autres méthodes : • la régression linéaire simple ou multiple / l’ANOVA • l’analyse factorielle discriminante [un des deux groupes de variables est remplacé par les indicatrices d’une variable qualitative] • le MANOVA [p variables et k facteurs] • l’analyse factorielle des correspondances [chacun des deux groupes est remplacé par les indicatrices d’une variable qualitative] – Généralisations de l’AC [g groupes de variables quantitatives et qu’elles permettent de retrouver] : • l’analyse des correspondances multiples [l’ACM, en remplaçant chaque groupe par les indicatrices d’une variable qualitative] • l’ACP [en ne mettant qu’une seule variable quantitative dans chaque groupe] (d’après Ph. Besse) 61 L’analyse canonique : principe Tableau Y Tableau Z (Bry, 1996) 62 Les iris de Fisher : analyse linéaire discriminante par l’analyse canonique library(mixOmics) data("iris") X <- iris[,1:4] Y <- iris[,5] # fonction "indicatrice" pour preparer la table des indicatrices Y1 <- indicatrice(data.frame(Y=Y,fact=Y), nom.fac="fact" ) # ne garder que 2 indicatrices (k-1 groupes) Y1 <- Y1[,3:4] Y1 <- apply(Y1, 2, as.numeric) rcc_1 <- rcc(X, Y1, ncomp=2) names(rcc_1) # [1] "call" "X" "Y" "ncomp" [5] "method" "cor" "loadings" "variates" # [9] "names" "lambda" "explained_variance" plotIndiv(rcc_1, comp=c(1,2), group=Y, col.per.group=1 + as.numeric(as.factor(Y)), ellipse = TRUE, ellipse.level=0.95, legend=TRUE, legend.title="Species", X.label="LD1", Y.label="LD2" ) plotVar(rcc_1, comp=c(1,2), legend=TRUE ) 63 Les iris de Fisher : analyse linéaire discriminante par l’analyse canonique 64 Plan • Introduction : que sont les données ? • Analyse discriminante : cas n individus >> p variables && données complètes – Généralités – Exemple : iris de Fisher : • • • • Représentations Manova & tests d’hypothèse AFD décisionnelle et prédictions des inconnus Bibliothèque ade4 • Analyse discriminante : cas n individus >> p variables && données incomplètes – Bibiothèques ropls et mixOmics – L’analyse canonique : une autre manière de faire l’AFD • Les données en grandes dimensions : cas n individus < ou << p variables && données incomplètes ou incomplètes – AFD +/- OSC – OPLS-DA – SDA +/- OSC • Conclusions 65 L’analyse discriminante décisionnelle : les problèmes de classification quand n individus << p variables • Performance des méthodes de classification : – Avec ou sans correction orthogonale des données – Nécessité de procéder à une sélection / pseudo-sélection des variables – LDA, QDA, PLS-DA, LASSO/Elastic-Net, SDA (Ahdesmäki & Strimmer, 2009) • Validation par bootstrap (n = 1000) et calcul des intervalles de confiance des taux de prédiction : exemple des anomalies endocriniennes sur une cohorte de cyclistes 66 Shrinkage discriminant analysis, SDA (Ahdesmäki & Strimmer, 2009) • Introduction d’un estimateur des corrélations P, variances V and proportions a priori k utilisant une régularisation de type James-Stein • Prédicteurs de la distance δ-transformée de Mahalanobis : k pool k( x) V P x 2 T ˆ ˆ ˆ • Sachant un estimateur 1 ,, p (par exemple un 1 / 2 1 / 2 estimateur empirique) et une estimation cible donnée ˆ target (choisie par le statisticien), l’estimation régularisée de James~ Stein : ˆ target 1 ˆ est la combination linéaire qui relie ˆ et ˆ target • est calculé par validation croisée pour minimiser l’erreur quadratique moyenne (mean squared error, MSE, ou carré moyen des erreurs) 67 LDA et correction orthogonale du signal (OSC) présélection des variables RMN du 1H par ANOVA [ lm(Xi ~ factor) ] : max(p vars) = 30-35% du nombre d’individus OSC = 0 OSC = 1 Concentrations en testostérone dans le sérum de cyclistes : 1/0/-1 68 SDA et correction orthogonale du signal (OSC) OSC = 0 OSC = 1 Concentrations en testostérone dans le sérum de cyclistes : 1/0/-1 69 SDA et correction orthogonale du signal (OSC) : les performances Bootstrap : n = 1000 (Paris et al, non publié) 70 Conclusions : Quelques éléments à retenir • La discrimination : – une ACP sur barycentres – L’interprétation des cartes factorielles • L ’Analyse Linéaire Discriminante : – Approche simplifiée du problème de la discrimination (variances intragroupes constantes) : • Règle empirique : nombre limite de variables (p _var_sel ) < 0,3 * nombre d’individus (n_ind) • Diagrammes (trop) schématiques • Données manquantes non gérées – Performances du « classifieur » à évaluer • L’(O)PLS-DA : – Approche plus respectueuse de la structure de la variance intra- et intergroupe : • Possibilité de correction orthogonale des données • Pas de sélection a priori des variables (gestion des variables colinéaires) • Gestion des données manquantes • L’ICDA (en développement) : – Analyse en composantes indépendantes (ICA) supervisée – Recherche de composantes spécifiques (modules) d’une perturbation71 donnée ou d’une classe de perturbations Quelques liens et références • http://maths.cnam.fr/IMG/pdf/Analyse_discriminante-Nov2010.pdf (P.L. Gonzalez) • https://fr.wikipedia.org/wiki/Analyse_discriminante_lin%C3%A9aire (Wikipédia) • https://pbil.univ-lyon1.fr/R/pdf/tdr63.pdf (A.B. Dufour, D. Chessel, J.R. Lobry) • http://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-m-app-add.pdf (Ph. Besse) • https://www.google.fr/search?q=analyse+discriminante+lin%C3%A9aire+t enenhaus&ie=utf-8&oe=utf-8&client=firefoxb&gfe_rd=cr&ei=LvziV_6VAuHt8werk7HADw (M. Tenenhaus) • http://cedric.cnam.fr/~saporta/discriminante.pdf (G. Saporta) • http://data.mining.free.fr/cours/Predictives.PDF (S. Tufféry) • http://www.isys.ucl.ac.be/etudes/cours/linf2275/07cours1.pdf (C. Decaestecker, M. Saerens) • http://www.dagnelie.be/stpres.html (P. Dagnélie) 72