Comment mettre en œuvre l'analyse discriminante linéaire dans R?

Cet article vous expliquera ce qu'est l'analyse discriminante linéaire et vous donnera également une démonstration détaillée à l'aide du langage de programmation R.

L'analyse discriminante linéaire est une technique d'apprentissage automatique très populaire utilisée pour résoudre des problèmes de classification. Dans cet article, nous essaierons de comprendre l'intuition et les mathématiques derrière cette technique. Un exemple de mise en œuvre de LDA dans R est également fourni.



Alors commençons alors



Hypothèse d'analyse discriminante linéaire

L'analyse discriminante linéaire est basée sur les hypothèses suivantes:

  • La variable dépendante Oui est discret. Dans cet article, nous supposerons que la variable dépendante est binaire et prend des valeurs de classe {+1, -1} . La probabilité qu'un échantillon appartienne à la classe +1 , c'est à dire P (Y = +1) = p . Par conséquent, la probabilité qu'un échantillon appartienne à la classe -un est 1 p .



  • La (les) variable (s) indépendante (s) X proviennent de distributions gaussiennes. La moyenne de la distribution gaussienne dépend de l'étiquette de classe Oui . c'est-à-dire si Oui je = +1 , puis la moyenne de X je est & # 120583 +1 , sinon c'est & # 120583 -un . La variance & # 120590 2 est le même pour les deux classes. Mathématiquement parlant, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) et X | (Y = -1) ~ N (& # 120583 -un , & # 120590 2 ) , où N désigne la distribution normale.

Avec ces informations, il est possible de construire une distribution conjointe P (X, Y) pour la variable indépendante et dépendante. Par conséquent, LDA appartient à la classe des Modèles de classificateurs génératifs . Un classificateur génératif étroitement lié est l'analyse discriminante quadratique (QDA). Il est basé sur toutes les mêmes hypothèses de LDA, sauf que les variances de classe sont différentes.

Continuons avec l'article Analyse Discriminante Linéaire et voyons

Intuition

Considérons les distributions gaussiennes conditionnelles de classe pour X étant donné la classe Oui . La figure ci-dessous montre les fonctions de densité des distributions. Dans cette figure, si Y = +1 , puis la moyenne de X vaut 10 et si Y = -1 , la moyenne est de 2. La variance est de 2 dans les deux cas.

intuition - Analyse de discrimination linéaire - Edureka

Supposons maintenant une nouvelle valeur de X nous est donné. Permet simplement de le désigner comme X je . La tâche consiste à déterminer l'étiquette de classe la plus probable pour cela X je , c'est à dire. Oui je . Pour simplifier, supposons que la probabilité p de l'échantillon appartenant à la classe +1 est le même que celui d'appartenir à une classe -un , c'est à dire. p = 0,5 .

Intuitivement, il est logique de dire que si X je est plus proche de & # 120583 +1 que c'est à & # 120583 -un , alors il est plus probable que Oui je = +1 . Plus formellement, Oui je = +1 si:

| x je - & # 120583 +1 |<|x je - & # 120583 -un |

pivot et unpivot dans SQL

Normalisation des deux côtés par l'écart type:

| x je - & # 120583 +1 | / & # 120590<|x je - & # 120583 -un | / & # 120590

Équerrage des deux côtés:

(X je - & # 120583 +1 ) 2 / & # 120590 2 <(x je - & # 120583 -un ) 2 / & # 120590 2

X je 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x je & # 120583 +1 / & # 120590 2 je 2 / & # 120590 2 + & # 120583 -un 2 / & # 120590 2 - 2 x je & # 120583 -un / & # 120590 2

2 x je (& # 120583 -un - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -un 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x je (& # 120583 -un - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -un 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

L'expression ci-dessus est de la forme bx je + c> 0 b = -2 (& # 120583 -un - & # 120583 +1 ) / & # 120590 2 et c = (& # 120583 -un 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Il est évident que la forme de l'équation est linéaire , d'où le nom Analyse Discriminante Linéaire.

Continuons avec l'article sur l'analyse discriminante linéaire et voyons,

Description mathématique de LDA

La dérivation mathématique de l'expression pour LDA est basée sur des concepts tels que Règle de Bayes et Classificateur optimal Bayes . Les lecteurs intéressés sont encouragés à en savoir plus sur ces concepts. Une façon de dériver l'expression peut être trouvée Ici .

Nous fournirons l'expression directement pour notre cas spécifique où Oui prend deux cours {+1, -1} . Nous étendrons également l'intuition montrée dans la section précédente au cas général où X peut être multidimensionnel. Disons qu'il y a à variables indépendantes. Dans ce cas, la classe signifie & # 120583 -un et & # 120583 +1 seraient des vecteurs de dimensions k * 1 et la matrice de variance-covariance & # 120622 serait une matrice de dimensions k * k .

c ++ java python

La fonction classifiante est donnée comme

Y = h (X) = signe (b T X + c)

Où,

b = -2 & # 120622 -un (& # 120583 -un - & # 120583 +1 )

c = & # 120583 -un T & # 120622 -un & # 120583 -un - & # 120583 -un T & # 120622 -un & # 120583 -un {-2 ln (1-p) / p}

La fonction signe renvoie +1 si l'expression b T x + c> 0 , sinon il retourne -un . Le terme logique naturel dans c est présente pour tenir compte du fait que les probabilités de classe n'ont pas besoin d'être égales pour les deux classes, c'est-à-dire p pourrait être n'importe quelle valeur entre (0, 1), et pas seulement 0,5.

Apprentissage des paramètres du modèle

Étant donné un ensemble de données avec N points de données (X un , Y un ), (X 2 , Y 2 ),… (X n , Y n ) , nous devons estimer p, & # 120583 -un , & # 120583 +1 et & # 120622 . Une technique d'estimation statistique appelée Estimation de vraisemblance maximale est utilisé pour estimer ces paramètres. Les expressions des paramètres ci-dessus sont données ci-dessous.

& # 120583 +1 = (1 / N +1 ) * & # 120506 i: yi = + 1 X je

& # 120583 -un = (1 / N -un ) * & # 120506 i: yi = -1 X je

p = N +1 / N

& # 120622 = (1 / N) * & # 120506je = 1: N (X je - & # 120583 je ) (X je - & # 120583 je ) T

N +1 = nombre d'échantillons où y je = +1 et N -un = nombre d'échantillons où y je = -1 .

Avec les expressions ci-dessus, le modèle LDA est complet. On peut estimer les paramètres du modèle en utilisant les expressions ci-dessus et les utiliser dans la fonction de classificateur pour obtenir l'étiquette de classe de toute nouvelle valeur d'entrée de variable indépendante X .

Continuons avec l'article Analyse Discriminante Linéaire et voyons

Exemple en R

Le code suivant génère un jeu de données factice avec deux variables indépendantes X1 et X2 et une variable dépendante Oui . Pour X1 et X2 , nous allons générer un échantillon à partir de deux distributions gaussiennes multivariées avec des moyennes & # 120583 -un = (2, 2) et & # 120583 +1 = (6, 6) . 40% des échantillons appartiennent à la classe +1 et 60% appartiennent à la classe -un , donc p = 0,4 .

library (ggplot2) library (MASS) library (mvtnorm) #Variance Matrice de covariance pour échantillon gaussien bivarié aléatoire var_covar = matrix (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Échantillons gaussiens bivariés aléatoires pour la classe + 1 Xplus1<- rmvnorm(400, mean = c(6, 6), sigma = var_covar) # Random bivariate gaussian samples for class -1 Xminus1 <- rmvnorm(600, mean = c(2, 2), sigma = var_covar) #Samples for the dependent variable Y_samples <- c(rep(1, 400), rep(-1, 600)) #Combining the independent and dependent variables into a dataframe dataset <- as.data.frame(cbind(rbind(Xplus1, Xminus1), Y_samples)) colnames(dataset) <- c('X1', 'X2', 'Y') dataset$Y <- as.character(dataset$Y) #Plot the above samples and color by class labels ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y)) 

Dans la figure ci-dessus, les points bleus représentent des échantillons de la classe +1 et les rouges représentent l'échantillon de la classe -un . Il y a un certain chevauchement entre les échantillons, c'est-à-dire que les classes ne peuvent pas être complètement séparées par une simple ligne. En d'autres termes, ils ne sont pas parfaitement séparable linéairement .

Nous allons maintenant former un modèle LDA en utilisant les données ci-dessus.

#Trainer le modèle LDA en utilisant le jeu de données ci-dessus lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Production:

Probabilités antérieures des groupes:

-Onze

0,6 0,4

Groupe signifie:

X1 X2

-1 1,928108 2,010226

1 5,961004 6,015438

Coefficients des discriminants linéaires:

system.exit (0) peut être utilisé pour terminer le programme.

LD1

X1 0,5646116

X2 0,5004175

Comme on peut le voir, les moyennes de classe apprises par le modèle sont (1.928108, 2.010226) pour la classe -un et (5.961004, 6.015438) pour la classe +1 . Ces moyennes sont très proches des moyennes de classe que nous avions utilisées pour générer ces échantillons aléatoires. La probabilité a priori pour le groupe +1 est l'estimation du paramètre p . La b vecteur est les coefficients discriminants linéaires.

Nous allons maintenant utiliser le modèle ci-dessus pour prédire les étiquettes de classe pour les mêmes données.

# Prédiction de la classe pour chaque échantillon de l'ensemble de données ci-dessus à l'aide du modèle LDA y_pred<- predict(lda_model, newdata = dataset)$class #Adding the predictions as another column in the dataframe dataset$Y_lda_prediction <- as.character(y_pred) #Plot the above samples and color by actual and predicted class labels dataset$Y_actual_pred <- paste(dataset$Y, dataset$Y_lda_prediction, sep=',') ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y_actual_pred))

Dans la figure ci-dessus, les échantillons violets proviennent de la classe +1 qui ont été classés correctement par le modèle LDA. De même, les échantillons rouges sont de classe -un qui ont été classés correctement. Les bleus sont de la classe +1 mais ont été classés incorrectement comme -un . Les verts sont de classe -un qui ont été mal classés comme +1 . Les erreurs de classification se produisent parce que ces échantillons sont plus proches de la moyenne de l'autre classe (centre) que de leur moyenne de classe réelle.

Cela nous amène à la fin de cet article, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. La formation Data Analytics with R d'Edureka vous aidera à acquérir une expertise dans la programmation R, la manipulation de données, l'analyse de données exploratoire, la visualisation de données, l'exploration de données, la régression, l'analyse des sentiments et l'utilisation de R Studio pour des études de cas réelles sur le commerce de détail, les médias sociaux.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de cet article et nous vous répondrons dans les plus brefs délais.