Técnicas de classificação Análise discriminante & Regressão logística Abraham Laredo Sicsú
Leituras (ênfase em REGRESSÃO LOGÍSTICA) http://www.uk.sagepub.com/burns/website%20mat erial/chapter%2024%20- %20Logistic%20regression.pdf http://sta559s11.pbworks.com/w/file/fetch/3776684 8/IntroLogisticRegressionPengEducResearch.pdf http://data.princeton.edu/wws509/notes/c3.pdf
Análise discriminante Em que grupo de risco classificar o solicitante de crédito? Alto Médio? Baixo 3
Discriminação entre 2 grupos Inadimplente/ adimplente Responde mala direta / não... Bom desempenho/ mau desempenho (representantes comerciais) Churning: Cancelamento voluntário/ não cancelamento (CC).exemplos Gr 1 Gr 2 X 1, X 2,...,X p 4
NPP Travel Agency Grupo 1: Prefere turismo ecológico Grupo 2: Prefere turismo tradicional Dados : arquivo Excel Idade e Renda renda idade grupo 40,00 46 1 57,00 42 1 43,20 54 1 ---- ---- ---- 35,20 52 2 43,20 43 2 28,80 51 2 56,00 44 2 ---- ---- ---- Como classificar um novo cliente em função da idade e renda? veja gráfico seguinte 5
NPP Travel Agency 65 60 55 IDADE 50 45 G1 G2 40 35 30 20 30 40 50 60 70 80 RENDA 6
NPP Travel Agency 65 60 55 G1 G2 IDADE 50 45 40 Linha azul Realidade 35 Classificação Linha VERDE Classificação 30 Grupo 1 20 Grupo 2 Realidade 30 40 50 60 Grupo 70 1 Grupo 802 RENDA Grupo 1 9 3 Grupo 1 Grupo 2 2 10 Grupo 2 7
Formalizando Escore Z= f( X 1, X 2,..., X p ) Z = a 0 + a 1 X 1 + a 2 X 2 +...+a p X p Regra de decisão (Zo : ponto de corte): Z > Z 0 classificar em G 1 Z Z 0 classificar em G 2 8
Análise discriminante desafios Z = a 0 + a 1 X 1 + a 2 X 2 +...+a p X p Que variáveis utilizar? Como selecionar a amostra? Como calcular os pesos? Como definir o ponte de corte Z 0? Que critérios utilizar? 9
Que variáveis utilizar? Confiáveis? Qual a fonte dos dados? Definição operacional conhecida? Quem imputou os dados? Aspectos éticos e legais Poder discriminante? Aceitáveis pelos usuários do modelo? 10
Discussão no Senado Americano (1979) [reprodução parcial em Capone (JM, 1982)] Senador: You feel that you should be allowed to consider race? Mr. Fair: That is correct Senador: Would the same thing be true with religion? Mr. Fair: Yes Senador: Would the same thing be true with age? Mr. Fair: Yes Senador: Ethnic origin? Mr. Fair: Yes... Concordam com Mr. Fair? 11
Que variáveis utilizar? Conclusão Poder preditivo Variável Relação lógica com tema (crédito)? Aceitação: Cultura da empresa Ética 12
Amostragem Como selecionar a amostra? Amostragem aleatória simples Amostragem aleatória estratificada Qual o tamanho da amostra? 13
Amostragem aleatória simples População p 1 = 2 % p 2 = 98 % n= 5000 Amostra n 1 ~ 100 n 2 ~ 4900 Pros? Cons? 14
Amostragem estratificada & probabilidades a priori Grupo 1 p 1 = 5 % Grupo 2 p 2 = 95% n 1 = 500 n 2 =500 Vantagens Problemas? Corrigir taxa de erro! 15
Cálculo dos pesos: Z = a 0 + a 1 X 1 + a 2 X 2 +...+a p X p Análise descriminante clássica Regressão logística 16
Como classificar - três grupos? 4 1 2 3 GPA 3 2 É possível dividir considerando apenas uma reta? 300 400 500 GMAT 600 700 17
Regressão Logística Prof. Abraham Laredo Sicsu
Dados de VENDEDORES VENDEDOR DESEMP ENTREV EXPER IDADE SEX 1 B 7 6 42 MASC 2 B 7 10 36 MASC 3 B 9 10 46 FEM 4 B 9 8 53 MASC 5 B 9 12 53 MASC 6 B 9 16 57 MASC - - - - - - - - - - - - - - - - - - 53 M 7 8 39 MASC 54 M 5 4 40 FEM 55 M 8 11 30 MASC 56 M 7 13 39 FEM 57 M 5 4 40 FEM 58 M 6 8 44 FEM 59 M 5 11 42 FEM 19
Regressão linear múltipla Admita que y=1 para grupo 1 y=0 para o grupo 0 Por que não utilizamos regressão linear múltipla para calcular os pesos? y = β + β X +... + 0 1 1 β p X p 20
Regressão Logística 2 grupos (G 1 ) - Bons Clientes event group ou grupo resposta (G 0 ) Maus Clientes G 1 G 0 Regressão logísticapermite estimar a probabilidade de pertencer a cada grupo Escolha do event group é arbitrária. Software seleciona automaticamente (ordem alfabética ou 1 no caso de 0-1) A escolha não afeta objetivo final. 21
Regressão logística Indivíduo a ser classificado : E =(X 1,...,X p ) P ( G 1 E) = probabilidade de que E G1 P ( G 0 E) = probabilidade de que E G0 P ( G 0 E) = 1 - Pr( G1 E) Odds = P(G P(G 1 2 E) E) = P(G 1 1 P(G E) 1 E) 22
Regressão logística ln Pr(G 1 1 Pr(G E) 1 E) =β 0 +β 1 X 1 +... +β p X p Z =β 0 +β 1 X 1 +... +β p X p Pr(G 1 E) = 1 1+ e Z β b : maximum likelihood estimation 23
Regressão logística Por que regressão logística (REGLOG)? Menos condições de validade que Análise Discriminante Não requer normalidade os erros Não exige homogeneidade de variância Prevê probabilidade diretamente ( entre 0 e 1!!!) Nos caso em que Analise Discriminante vale, a regressão logística funciona bem também. Tem similaridade com regressão linear múltipla 24
Regressão logística 1 P(G1 Z) 0.5 Esta função faz o link entre z e P. recebe o nome de linking function 0-10 -5 0 5 10 Z Para valores de Z muito altos, a probabilidade é praticamente 1 Para valores de Z muito baixos, a probabilidade é praticamente 0 25
Aplicação com R Arquivo VENDEDORES
Output do R DESEMP.B=ifelse(DESEMP="B",1,0) mod1=glm(desemp.b ~ ENTREV + EXPER + IDADE + SEX, family = binomial()) Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -14.33466 3.86803-3.706 0.000211 *** ENTREV 1.18507 0.34739 3.411 0.000646 *** EXPER 0.02626 0.10904 0.241 0.809702 IDADE 0.13983 0.06183 2.261 0.023734 * SEXMASC 0.56778 0.72330 0.785 0.432465 Signif. codes: 0 *** 0.001 ** 0.01 * 0.05. 0.1 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 80.413 on 58 degrees of freedom Residual deviance: 52.081 on 54 degrees of freedom AIC: 62.081 27 Vamos analisar resultados a seguir
Testes Teste de significância da regressão Ho: β ENTREV =0, β IDADE =0, β EXPER =0, β SEXMASC =0 e Ha: pelo menos um desses coeficientes é diferente de zero. LRT= null deviance residual deviance= 80,413-52,081 =28,332 com 4 graus de liberdade O p-value, calculado a partir da distribuiçãoχ 2 com 4 gl é igual 0.00, o que nos leva a rejeitar a hipótese Ho. 28
Teste de ajuste do modelo Ho: modelo se ajusta aos dados (aderência) Ha: modelo não se ajusta aos dados Vamos utilizar o teste de Hosmer & Lemeshow mais utilizado, porem sujeito a críticas Adiante veremos forma mais confiável (Zoyowsky) library(resourceselection) hl = hoslem.test(mod1$y, fitted(mod1), g=10) y é um vetor no mod1 criado pelo próprio R; corresponde ao vetor com a variável resposta Hosmer and Lemeshow goodness of fit (GOF) test X-squared = 2.0605, df = 8, p-value = 0.9791 Valor difere um pouco do calculado pelo STATA 29
Teste de ajuste do modelo 30 Ho: modelo se ajusta aos dados (aderência) Ha: modelo não se ajusta aos dados Vamos utilizar o teste de Zoyowsky library(arules) kp=discretize(pbom, method = 'frequency', categories=5) table(kp,desemp) kp DESEMP B M [0.0623,0.223) 2 10 [0.2233,0.493) 4 8 [0.4934,0.799) 7 5 [0.7985,0.925) 10 2 [0.9251,0.997] 11 0 Classes f P B -médio E(B) O(B) 1 12 0,14 1,7 2 2 12 0,36 4,3 4 3 12 0,65 7,8 7 4 12 0,86 10,3 10 5 11 0,96 10,6 11
Parâmetros do modelo Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -14.33466 3.86803-3.706 0.000211 *** ENTREV 1.18507 0.34739 3.411 0.000646 *** EXPER 0.02626 0.10904 0.241 0.809702 IDADE 0.13983 0.06183 2.261 0.023734 * SEXMASC 0.56778 0.72330 0.785 0.432465 Z = -14,335+ 1,185* ENTREV +0,026*EXPER +0,140*IDADE + 0,568*SEXMASC p i z e = 1+ e z = 1 1+ e z 31
Previsão Jerinelda tirou nota 8 na entrevista, tem 2 anos de experiência, 40 anos de idade e é do sexo feminino. Qual a probabilidade de que tenha um bom desempenho? Z = -14,335+ 1,185* ENTREV +0,026*EXPER +0,140*IDADE + 0,568*SEXMASC p i z e = 1+ e z = 1 1+ e z
Testes (marginal) dos parâmetros Ho: β i = 0 vs. Ha: β i 0 Considerar os p-values associados a cada estimativa Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -14.33466 3.86803-3.706 0.000211 *** ENTREV 1.18507 0.34739 3.411 0.000646 *** EXPER 0.02626 0.10904 0.241 0.809702 IDADE 0.13983 0.06183 2.261 0.023734 * SEXMASC 0.56778 0.72330 0.785 0.432465 Coef (x i ) : o quanto aumenta z para um aumento unitário de x i ENTREV aumenta 1 unidade z aumenta (1.185) 33
Interpretação dos parâmetros odds ENTREV aumenta 1 unidade z aumenta (1.185) z = z +(1.185) e z' = e z + 1,185 = e z e 1,185 e z = e z 3,271 e z = p / (1-p) e z = p / (1-p ) Odds(p ) = 3,271 x Odds(p) Note que o valor de p depende do valor de p Suponha que p = 0,20. Se a nota da entrevista aumenta 1,0 ponto e z = [p/(1-p) ] 3,271 = 0,818 p = 0,818 / 1,818 = 0,450 34
Estimando as probabilidades pbom=predict(mod1, type = "response") pp é a probabilidade do evento resposta (em nosso caso B) 1 2 3 4 5 6 7 8 0.63624 0.45639 0.95373 0.98923 0.99029 0.99498 0.15168 0.87683 9 10 11 12 13 14 15 16 0.98099 0.22333 0.42199 0.58768 0.71313 0.48681 0.70306 0.09080 17 18 19 20 21 22 23 24 0.84331 0.85121 0.94164 0.66605 0.59906 0.86092 0.94946 0.56733 25 26 27 28 29 30 31 32 0.88773 0.83981 0.99054 0.92509 0.99681 0.93558 0.88897 0.83814...
Dotplot das probabilidades library(lattice) dotplot(pbom~desemp, cex=1.1, pch=19, col='red')
Ponto de corte Definir valor K tal que Se P(bom) K classificamos como Bom Se P(bom) < K classificamos como Mau Matriz de classificação estimar erros Como considerar os custos? O correto é estimar erros com amostra teste
Ponto de corte? MAU desempenho BOM desempenho
Ponto de corte library(gmodels) response = as.factor(ifelse( pbom>=0.6,"b","m")) CrossTable(response,DESEMP) DESEMP response B M Row Total ------------- ----------- ----------- ----------- ----------- ----------- B 25 4 29 0.862 0.138 0.492 0.735 0.160 0.424 0.068 ------------- ----------- ----------- ----------- ----------- ----------- M 9 21 30 0.300 0.700 0.508 0.265 0.840 0.153 0.356 ------------- ----------- ----------- ----------- ----------- ----------- Column Total 34 25 59 0.576 0.424 ------------- ----------- ----------- ----------- ----------- ----------- N N / Row Total N / Col Total N / Table Total Erro = (4+9)/59=0,22 Acurácia = 0,78
Estimação da taxa de erro Utilizando amostra original (viesado) Utilizando amostra de validação Cross validation Técnica jacknife (hold-one-out) Desenvolvimento Amostra 50 % 70% da amostra n=10 000 Validação Casos restantes 40
Cross validation Cross validation (k-fold) K=10 é suficiente library(boot) cv.glm(data =vend.final, glmfit = mod1, K = 10)$delta[1] [1] 0.1755817 learn test test test --- --- --- --- --- --- --- --- --- --- test Média dos erros 41
Técnica jacknife (LOOCV - leave-one-out cross-validation) Deixar um indivíduo de fora Calcular os pesos sem esse indivíduo Classificar o indivíduo com a nova fórmula encontrada Repetir para os demais indivíduos Contar o número de acertos / erros ao classificar os indivíduos que ficara de fora #nao colocando o valor de K, R assume que é o LOOCV cv.glm(data = vend.final, glmfit = mod1)$delta[1] [1] 0.1747286 42
Como considerar custos? mc=table(response,desemp) prop.table(mc) DESEMP response B M B 0.4237 0.0678 M 0.1525 0.3559 C(B M)=$150 C(M B)=$200 O custo médio dos erros de classificação será dado por = + onde P(B M) é a probabilidade de mal classificar como B um indivíduo do grupo M P(M B) é a probabilidade de mal classificar como M um indivíduo do grupo B C(B M) é o custo de mal classificar um indivíduo de M C(M B) é o custo de mal classificar um indivíduo de B.
Como considerar probabilidades a priori? mc=table(response,desemp) prop.table(mc) DESEMP response B M B 0.4237 0.0678 M 0.1525 0.3559 π(b)=0,90 π(m)=0,10
Classes de risco library(arules arules) xx=c("0,00 a 0,25","0,25 a 0,75", "0,75 a 1,00") kpbom=discretize(pbom, method = "fixed", categories = c(0,.25,.75,1), labels = xx) class=table(kpbom,desemp) class kpbom DESEMP B M 0,00 a 0,25 3 11 0,25 a 0,75 10 12 0,75 a 1,00 21 2
Seleção de variáveis Por que selecionar variáveis? Vamos analisar a saída do R Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -14.33466 3.86803-3.706 0.000211 *** ENTREV 1.18507 0.34739 3.411 0.000646 *** EXPER 0.02626 0.10904 0.241 0.809702 IDADE 0.13983 0.06183 2.261 0.023734 * SEXMASC 0.56778 0.72330 0.785 0.432465 Poderíamos selecionar no braço ou utilizar o software. Diferentes algoritmos podem dar seleções diferentes
Seleção de variáveis com R step(mod1) Baseado no Akaike Information Criterion (AIC) Quanto menor melhor Start: AIC=62.08 DESEMP_B ~ IDADE + EXPER + ENTREV + SEX Df Deviance AIC - EXPER 1 52.139 60.139 - SEX 1 52.705 60.705 <none> 52.081 62.081 - IDADE 1 58.495 66.495 - ENTREV 1 70.006 78.006 R mostra seleção passo a passo (omitimos aqui) Coefficients: (Intercept Intercept) IDADE ENTREV -13.7276 0.1405 1.1732
48 Amostragem separada Selecionamos de forma separada e independente n 1 indivíduos com y = 1 n 2 indivíduos com y = 0 Probabilidades a priori π 1 e π 2 As probabilidades estimadas devem ser corrigidas! corrigido original π1 n2 b0 = b0 + ln( ) π n Os demais parâmetros serão mantidos 2 1
49 Medidas de Performance
Kolmogorov-Smirnov (KS): A estatística KS consiste na diferença máxima entre as distribuições acumuladas entre bons e maus pagadores Obs. Quanto maior a distância, maior a diferença entre dos dois grupos e melhor o poder discriminatório do modelo. Esta é a medida de avaliação mais utilizada. Não a melhor! 50
Kolmogorov--Smirnov (KS): KS 51
52 0-50 51-100 101-150 151-200 201-250 251-300 301-350 351-400 401-450 451-500 501-550 0 10 20 30 40 50 60 70 90 80 % Bom ACU % MAU ACU 100 Kolmogorov--Smirnov (KS): 551-600 601-650 651-700 701-750 751-800 801-850 851-900 901-950 951-1000
Kolmogorov--Smirnov (KS): library(hmeasure) medidah=hmeasure(vend.final$desemp_b,vend.final$pbom) summary(medidah) H Gini AUC AUCH KS MER MWL 0.5325584 0.7482353 0.8741176 0.9029412 0.6635294 0.1694915 0.1643206 53
Medida KS Valor de KS Para Credit Scoring para Behavioral Scoring KS < 20% Baixo Baixo 20% KS 30% Aceitável Baixo Depende da aplicação Valores ao lado são usuais em risco de crédito 30% KS 40% Boa Baixo / Aceitável 40% KS 50% Excelente Aceitável 50% KS 60% Excelente. Boa 60% KS 70% KS > 70% Excelente. Valores pouco usuais. Excelente. Valores pouco usuais. Excelente Excelente Cuidado: valores de KS dependem da qualidade das variáveis disponíveis Não há milagres... 54
Curva ROC: Definição A curva ROC ou (Receiver Operating Characteristic) se baseia em duas definições: sensitividade e especificidade Sensitividade pode ser entendida como a capacidade de identificar corretamente os maus clientes % maus corretamente classificados Especificidade pode ser entendido como a capacidade de identificar corretamente os bons clientes % bons corretamente classificados Nota: Em geral a característica mais importante de se classificar corretamente é denominada condição positiva. A outra é denominada condição negativa. Sensitividade = % True positive (TP) e Especificidade = % True negative (TN). Em crédito prefere-se não errar ao classificar um mau pagador com bom. 55
Curva ROC: Definição Mau cliente Bom cliente Escore Abaixo do ponto de corte Correto (Sensitividade) Alarme falso (1- Especificidade) Acima do ponto de corte Erro Correto Especificidade Bom modelo -Sensitividade alta -Alarme falso baixo 56
ROC sensitividade (classificação correta) AUROC ROC do modelo de scoring Modelo aleatório Area under ROC 1 especificidade (falso alarme) 57
Curva ROC: library(proc) roc1=roc(desemp_b,pbom) (argumentos nessa ordem) plot(roc1) roc.default(response = DESEMP_B, predictor = pbom) Data: pbom in 25 controls (DESEMP_B 0) < 34 cases (DESEMP_B 1). Area under the curve: 0.8741 58
Curva ROC: valores de referência AUROC Nível de Discriminação Abaixo de 0.5 Não Existe Discriminação De 0.7 a 0.8 Discriminação Aceitável De 0.8 a 0.9 Acima de 0.9 Excelente Discriminação Discriminação acima do comum 59