Introdução
O presente trabalho visa o entendimento e aplicação do método LDA - Linear Discriminant Analysis, tendo como base um exemplo apresentado no livro “Análise Multivariada”, de Hair.
Método LDA
O método LDA - Linear Discriminant Analysis, ou simplesmente Análise Discriminante, é empregado quando se deseja uma forma de classificar o conjunto de dados com base nos grupos presentes na variável resposta.
Ele é considerado um método de classificação, além da redução de dimensionalidade, estando no páreo de outros métodos como Árvores de Decisão, a depender da aplicação desejada. Porém, possui a vantagem de ser simples e ainda assim oferecer resultados robustos em termos de classificação. O método se mostra uma alternativa inicial, um ponto de partida antes da aplicação de outros métodos de classificação mais complexos.
Conjunto de dados
O conjunto de dados HBAT foi utilizado pelo autor e também nesse presente trabalho. Ele visa a classificação das empresas com base na região em que estão localizadas. O grupo 0 se refere às empresas nos USA ou América do Norte. Já o grupo 1 é para as demais empresas, que estão fora dessa região.
Através dos dados das empresas (variáveis independentes), procura-se entender se há diferenças significativas entre os tipos de clientes das duas regiões.
Aplicação do método
A partir daqui, damos início ao tratamento dos dados e à aplicação do método LDA.
Leitura dos dados
Variável dependente (Região): X4 Variáveis independentes: X6 a X18
dados=read.csv2("hbat.csv")
dados$X4=as.factor(dados$X4)
table(dados$X4)
0 1
39 61
Realizando o particionamento dos dados, utilizando a proporção de 60 observações para treino e 40 para teste:
set.seed(201910)
particao=sample(1:100,40)
treino=dados[-particao,-1]
teste=dados[particao,-1]
table(treino$X4)
0 1
22 38
A coluna “ID” foi removida para não influenciar na análise, visto que é apenas um identificador para cada uma das 100 observações.
Além disso, foi escolhida uma seed para garantir que a mesma partição seja obtida em todas as rodadas de aplicação do método.
Como observado, ao final obtivemos 22 observações no grupo referente ao 0 e 38 no grupo referente a 1. Com isso, temos respeitado o mínimo de 20 observações abordado na bibliografia, o que faz com que o método possa ser aplicado sem problemas para a comparação dos dois grupos.
Sobre as suposições do método
No que diz respeito às suposições necessárias para a aplicação do método LDA, podemos nos basear na bibliografia. O texto de apoio afirma que as suposições para esse conjunto de dados foram suficientemente atendidas.
A saber: a diferença nas matrizes de covariância para os dois grupos mostrou significância de 0.011, que é um nível aceitável para o teste considerado (boxM).
Assim, a estimação do modelo discriminante pode ser feita sem preocupações.
Aplicação do LDA
O autor utiliza o LDA-stepwise. Nós não usaremos este método. Vamos utilizar todas as variáveis no método LDA, segundo as orientações da tarefa.
lda_result=lda(X4~.,treino)
lda_resultCall:
lda(X4 ~ ., data = treino)
Prior probabilities of groups:
0 1
0.3666667 0.6333333
Group means:
X1 X2 X3 X5 X6 X7 X8 X9
0 2.318182 0.5000000 0.09090909 0.6363636 8.781818 3.604545 5.895455 5.813636
1 1.868421 0.3684211 0.76315789 0.3684211 7.184211 3.760526 5.013158 5.663158
X10 X11 X12 X13 X14 X15 X16 X17
0 3.818182 6.845455 4.581818 5.859091 6.304545 4.781818 4.404545 3.786364
1 4.318421 5.389474 5.557895 7.642105 5.978947 5.110526 4.497368 5.389474
X18 X19 X20 X21 X22 X23
0 3.968182 7.104545 7.190909 7.777273 61.64545 0.5
1 4.078947 7.013158 7.073684 7.697368 58.49474 0.5
Coefficients of linear discriminants:
LD1
X1 -0.669991340
X2 -0.202025334
X3 2.414912383
X5 2.314469611
X6 -0.561289543
X7 -2.393838105
X8 -0.267283043
X9 0.347712811
X10 0.004189063
X11 -0.641601868
X12 1.940086952
X13 0.304285542
X14 0.526908472
X15 0.338154352
X16 0.575081000
X17 -0.122190666
X18 -0.313722693
X19 -1.959001194
X20 -0.105066430
X21 0.279062201
X22 0.118917263
X23 0.985643099
Acima, podemos visualizar as médias dos grupos (regiões 0 e 1) para cada uma das variáveis explicativas.
As probabilidades a priori são simplesmente as proporções de cada grupo dentro do conjunto de dados de treino (22/60 e 38/60, respectivamente), considerando a partição obtida.
Por último, temos cada um dos coeficientes da função discriminante obtida a princípio. É válido lembrar que não foi utilizada a estratégia stepwise usada pelo autor. Assim sendo, ficamos com uma função discriminante muito grande, com 22 variáveis/coeficientes.
Agora, vamos visualizar um plot com a discriminação dos dois grupos:
plot(lda_result)Nesse modelo discriminante com todas as variáveis, podemos perceber uma boa diferenciação entre os grupos da Região 0 e Região 1. Ou seja, é esperado que ele tenha um bom desempenho quando aplicado para classificar cada uma das regiões, o que será feito mais adiante.
No entanto, só teremos uma real medida do quão bom é o desempenho quando aplicarmos o modelo na partição de teste que foi obtida anteriormente.
Avaliando o modelo
Agora podemos avaliar o desempenho do modelo obtido, com base na partição de teste.
Uma forma pela qual podemos avaliar o modelo quanto à classificação/descriminação é através da medida de acurácia, que nos dá a proporção de observações que foram corretamente classificadas pelo modelo.
Para fazê-lo, é necessário obter a matriz de confusão.
predito=predict(lda_result,teste)
cm=confusionMatrix(predito$class,teste$X4)
cmConfusion Matrix and Statistics
Reference
Prediction 0 1
0 14 5
1 3 18
Accuracy : 0.8
95% CI : (0.6435, 0.9095)
No Information Rate : 0.575
P-Value [Acc > NIR] : 0.002412
Kappa : 0.597
Mcnemar's Test P-Value : 0.723674
Sensitivity : 0.8235
Specificity : 0.7826
Pos Pred Value : 0.7368
Neg Pred Value : 0.8571
Prevalence : 0.4250
Detection Rate : 0.3500
Detection Prevalence : 0.4750
Balanced Accuracy : 0.8031
'Positive' Class : 0
Acima, além de outras medidas que também poderiam ser utilizadas, focamos na medida de acurácia do modelo, que apresentou valor 0.8. Ou seja, 80% das observações na partição de teste foram corretamente classificadas, o que pode ser considerado satisfatório.
Pela matriz de confusão, vemos que 3 observações eram do grupo 0 e foram classificadas como sendo do grupo 1, e 5 observações que eram do grupo 1 foram classificadas como sendo do grupo 0. As demais observações, referentes à diagonal da matriz de confusão, foram corretamente discriminadas.
Assim sendo, em 80% dos casos o modelo obteve sucesso em discriminar corretamente os dois grupos presentes no conjunto de dados, referentes às duas regiões.
Comparação
Para termos um parâmetro de comparação do nosso modelo, vamos verificar o desempenho do modelo empregado pelo autor, tendo em mente que os resultados obtidos aqui podem ser levemente diferentes, graças às partições de treino e teste que não são as mesmas.
Modelo do autor: variáveis X11, X13 e X17
lda_autor=lda(X4~X11+X13+X17,treino)
lda_autorCall:
lda(X4 ~ X11 + X13 + X17, data = treino)
Prior probabilities of groups:
0 1
0.3666667 0.6333333
Group means:
X11 X13 X17
0 6.845455 5.859091 3.786364
1 5.389474 7.642105 5.389474
Coefficients of linear discriminants:
LD1
X11 -0.4186248
X13 0.2532130
X17 0.6734618
Duas observações podem ser feitas: em primeiro lugar, a probabilidade a priori dos grupos se manteve a mesma porque trata-se da mesma partição de treino utilizada anteriormente. Além disso, podemos perceber que as médias dos grupos para essas variáveis são mais distantes entre si, o que não se verificava nas médias dos grupos no modelo obtido inicialmente.
plot(lda_autor) Através do plot, temos a sensação de que os grupos “se misturam”, ou seja, de que a separação não é tão heterogênea quanto aquela que foi observada no modelo completo.
Para entender o desempenho, vamos testar o modelo na partição de teste e obter sua acurácia:
predito_autor=predict(lda_autor,teste)
cm_autor=confusionMatrix(predito_autor$class,teste$X4)
cm_autorConfusion Matrix and Statistics
Reference
Prediction 0 1
0 15 4
1 2 19
Accuracy : 0.85
95% CI : (0.7016, 0.9429)
No Information Rate : 0.575
P-Value [Acc > NIR] : 0.0001956
Kappa : 0.6977
Mcnemar's Test P-Value : 0.6830914
Sensitivity : 0.8824
Specificity : 0.8261
Pos Pred Value : 0.7895
Neg Pred Value : 0.9048
Prevalence : 0.4250
Detection Rate : 0.3750
Detection Prevalence : 0.4750
Balanced Accuracy : 0.8542
'Positive' Class : 0
A acurácia do modelo do autor foi de 0.85, superior ao nosso modelo obtido anteriormente Ou seja, 85% das observações na partição de teste foram corretamente classificadas, o é satisfatório e melhor do que o resultado anterior.
Pela matriz de confusão, vemos que 2 observações eram do grupo 0 e foram classificadas como sendo do grupo 1, e 4 observações que eram do grupo 1 foram classificadas como sendo do grupo 0. As demais observações, referentes à diagonal da matriz de confusão, foram corretamente discriminadas.
Assim sendo, em 85% dos casos o modelo obteve sucesso em discriminar corretamente os dois grupos presentes no conjunto de dados, referentes às duas regiões.
Conclusão
No presente trabalho, o método LDA foi aplicado para a classificação de empresas quanto ao pertencimento a duas regiões: USA/América do Norte ou fora dela.
Através dos resultados obtidos, concluímos que o modelo com todas as variáveis possui menor acurácia do que aquele proposto pelo autor, que foi obtido pelo método stepwise e considera apenas as variáveis independentes X11, X13 e X17. Ou seja, o modelo do autor se mostrou mais eficaz no que diz respeito à discriminação dos dois grupos, com acurácia de 85%.
Assim sendo, a LDA se mostra um bom método para obtenção de modelos de classificação, visto que sua acurácia foi satisfatória. Seu uso, portanto, extrapola a redução de dimensionalidade e possibilita a utilização nas mais diversas aplicações que envolvam classificação.