Como implementar a análise discriminante linear em R?



Este artigo explicará o que é análise discriminante linear e também apresentará uma demonstração detalhada usando a linguagem de programação R.

A Análise Discriminante Linear é uma técnica de aprendizado de máquina muito popular usada para resolver problemas de classificação. Neste artigo, tentaremos entender a intuição e a matemática por trás dessa técnica. Um exemplo de implementação de LDA em R também é fornecido.

Então vamos começar





Hipótese de Análise Discriminante Linear

A Análise Discriminante Linear é baseada nas seguintes suposições:

  • A variável dependente Y é discreto. Neste artigo, vamos assumir que a variável dependente é binária e assume valores de classe {+1, -1} . A probabilidade de uma amostra pertencer à classe +1 , ou seja P (Y = +1) = p . Portanto, a probabilidade de uma amostra pertencer à classe -1 é 1-p .



  • As variáveis ​​independentes X vêm de distribuições gaussianas. A média da distribuição gaussiana depende do rótulo da classe Y . ou seja, se Y Eu = +1 , então a média de X Eu é & # 120583 +1 , senão é & # 120583 -1 . A variância & # 120590 2 é o mesmo para ambas as classes. Matematicamente falando, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) e X | (Y = -1) ~ N (& # 120583 -1 , & # 120590 2 ) , Onde N denota a distribuição normal.

    lista de classificação c ++

Com essas informações é possível construir uma distribuição conjunta P (X, Y) para a variável independente e dependente. Portanto, LDA pertence à classe de Modelos Classificadores Gerativos . Um classificador gerador intimamente relacionado é a Análise Discriminante Quadrática (QDA). Baseia-se nas mesmas suposições do LDA, exceto que as variações de classe são diferentes.

Vamos continuar com o artigo Análise Discriminante Linear e ver

Intuição

Considere as distribuições gaussianas condicionais de classe para X dada a aula Y . A figura abaixo mostra as funções de densidade das distribuições. Nesta figura, se Y = +1 , então a média de X é 10 e se Y = -1 , a média é 2. A variância é 2 em ambos os casos.

intuição - Análise de Discriminação Linear - Edureka

Agora suponha um novo valor de X é dado a nós. Vamos apenas denotá-lo como x Eu . A tarefa é determinar o rótulo de classe mais provável para este x Eu , ou seja, Y Eu . Para simplificar, suponha que a probabilidade p da amostra pertencente à classe +1 é o mesmo que pertencer à classe -1 , ou seja, p = 0,5 .

Intuitivamente, faz sentido dizer que se x Eu está mais perto de & # 120583 +1 do que é para & # 120583 -1 , então é mais provável que Y Eu = +1 . Mais formalmente, Y Eu = +1 E se:

| x Eu - & # 120583 +1 |<|x Eu - & # 120583 -1 |

Normalizando ambos os lados pelo desvio padrão:

| x Eu - & # 120583 +1 | / & # 120590<|x Eu - & # 120583 -1 | / & # 120590

Quadrado de ambos os lados:

(x Eu - & # 120583 +1 ) 2 / & # 120590 2 <(x Eu - & # 120583 -1 ) 2 / & # 120590 2

x Eu 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x Eu & # 120583 +1 / & # 120590 2 Eu 2 / & # 120590 2 + & # 120583 -1 2 / & # 120590 2 - 2 x Eu & # 120583 -1 / & # 120590 2

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

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

A expressão acima é da forma bx Eu + c> 0 Onde b = -2 (& # 120583 -1 - & # 120583 +1 ) / & # 120590 2 e c = (& # 120583 -1 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

É evidente que a forma da equação é linear , daí o nome de Análise Discriminante Linear.

Vamos continuar com o artigo Análise Discriminante Linear e ver,

Descrição Matemática de LDA

A derivação matemática da expressão para LDA é baseada em conceitos como Regra de Bayes e Classificador ótimo de Bayes . Os leitores interessados ​​são incentivados a ler mais sobre esses conceitos. Uma maneira de derivar a expressão pode ser encontrada Aqui .

Forneceremos a expressão diretamente para nosso caso específico, onde Y tem duas aulas {+1, -1} . Também estenderemos a intuição mostrada na seção anterior para o caso geral onde X pode ser multidimensional. Digamos que haja para variáveis ​​independentes. Neste caso, a classe significa & # 120583 -1 e & # 120583 +1 seriam vetores de dimensões k * 1 e a matriz de variância-covariância & # 120622 seria uma matriz de dimensões k * k .

A função classificadora é dada como

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

Onde,

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

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

A função de sinal retorna +1 se a expressão b T x + c> 0 , caso contrário, ele retorna -1 . O termo de log natural em c está presente para ajustar o fato de que as probabilidades de classe não precisam ser iguais para ambas as classes, ou seja, p pode ser qualquer valor entre (0, 1) e não apenas 0,5.

Aprendendo os parâmetros do modelo

Dado um conjunto de dados com N Os pontos de dados (x 1 , Y 1 ), (x 2 , Y 2 ), ... (X n , Y n ) , precisamos estimar p, & # 120583 -1 , & # 120583 +1 e & # 120622 . Uma técnica de estimativa estatística chamada Estimativa de Máxima Verossimilhança é usado para estimar esses parâmetros. As expressões para os parâmetros acima são fornecidas a seguir.

& # 120583 +1 = (1 / N +1 ) * & # 120506 i: yi = + 1 x Eu

& # 120583 -1 = (1 / N -1 ) * & # 120506 i: yi = -1 x Eu

p = N +1 / N

array unidimensional em java

& # 120622 = (1 / N) * & # 120506Eu = 1: N (x Eu - & # 120583 Eu ) (x Eu - & # 120583 Eu ) T

Onde N +1 = número de amostras onde y Eu = +1 e N -1 = número de amostras onde y Eu = -1 .

Com as expressões acima, o modelo LDA está completo. Pode-se estimar os parâmetros do modelo usando as expressões acima e usá-los na função classificadora para obter o rótulo da classe de qualquer novo valor de entrada da variável independente X .

Vamos continuar com o artigo Análise Discriminante Linear e ver

Exemplo em R

O código a seguir gera um conjunto de dados fictício com duas variáveis ​​independentes X1 e X2 e uma variável dependente Y . Para X1 e X2 , vamos gerar uma amostra de duas distribuições gaussianas multivariadas com médias & # 120583 -1 = (2, 2) e & # 120583 +1 = (6, 6) . 40% das amostras pertencem à classe +1 e 60% pertencem à classe -1 , Portanto p = 0,4 .

library (ggplot2) library (MASS) library (mvtnorm) #Variance Matriz de covariância para amostra gaussiana bivariada aleatória var_covar = matriz (dados = c (1,5, 0,3, 0,3, 1,5), nrow = 2) # Amostras gaussianas bivariadas aleatórias para 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)) 

Na figura acima, os pontos azuis representam amostras da aula +1 e os vermelhos representam a amostra da aula -1 . Há alguma sobreposição entre as amostras, ou seja, as classes não podem ser separadas completamente com uma linha simples. Em outras palavras, eles não são perfeitamente linearmente separável .

Agora treinaremos um modelo LDA usando os dados acima.

encontre o número máximo na matriz java
#Treine o modelo LDA usando o conjunto de dados acima lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Resultado:

Probabilidades anteriores de grupos:

-onze

0,6 0,4

Grupo significa:

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

Coeficientes de discriminantes lineares:

LD1

X1 0,5646116

X2 0,5004175

Como se pode ver, os meios de aula aprendidos pelo modelo são (1,928108, 2,010226) para a aula -1 e (5.961004, 6.015438) para a classe +1 . Essas médias são muito próximas às médias da classe que usamos para gerar essas amostras aleatórias. A probabilidade anterior para o grupo +1 é a estimativa para o parâmetro p . o b vetor são os coeficientes discriminantes lineares.

Agora usaremos o modelo acima para prever os rótulos de classe para os mesmos dados.

#Predicting a classe para cada amostra no conjunto de dados acima usando o modelo 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))

Na figura acima, as amostras roxas são da classe +1 que foram classificados corretamente pelo modelo LDA. Da mesma forma, as amostras vermelhas são da classe -1 que foram classificados corretamente. Os azuis são da classe +1 mas foram classificados incorretamente como -1 . Os verdes são da classe -1 que foram classificados erroneamente como +1 . As classificações erradas acontecem porque essas amostras estão mais próximas da média da outra classe (centro) do que a média real da classe.

Isso nos leva ao final deste artigo, verifique o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O treinamento de Análise de Dados com R da Edureka o ajudará a ganhar experiência em Programação R, Manipulação de Dados, Análise Exploratória de Dados, Visualização de Dados, Mineração de Dados, Regressão, Análise de Sentimentos e usando R Studio para estudos de caso da vida real em Varejo, Mídia Social.

Tem alguma questão para nós? Mencione isso na seção de comentários deste artigo e entraremos em contato com você o mais breve possível.