Divulgação completa: Este é o dever de casa. Incluí um link para o conjunto de dados ( http://www.bertelsen.ca/R/logistic-regression.sav )
Meu objetivo é maximizar a previsão de inadimplentes neste conjunto de dados.
Todos os modelos apresentados até agora prevêem> 90% dos não-infratores, mas <40% dos inadimplentes, tornando a eficiência da classificação geral ~ 80%. Então, eu me pergunto se existem efeitos de interação entre as variáveis. Dentro de uma regressão logística, além de testar cada combinação possível, existe uma maneira de identificar possíveis efeitos de interação? Ou, alternativamente, uma maneira de aumentar a eficiência da classificação dos inadimplentes.
Estou empacado, qualquer recomendação seria útil na sua escolha de palavras, código R ou sintaxe SPSS.
Minhas variáveis primárias são descritas no seguinte histograma e gráfico de dispersão (com exceção da variável dicotômica)
Uma descrição das variáveis primárias:
age: Age in years
employ: Years with current employer
address: Years at current address
income: Household income in thousands
debtinc: Debt to income ratio (x100)
creddebt: Credit card debt in thousands
othdebt: Other debt in thousands
default: Previously defaulted (dichotomous, yes/no, 0/1)
ed: Level of education (No HS, HS, Some College, College, Post-grad)
Variáveis adicionais são apenas transformações dos itens acima. Também tentei converter algumas das variáveis contínuas em variáveis categóricas e implementá-las no modelo, sem sorte lá.
Se você deseja colocá-lo no R, rapidamente, aqui está:
## R Code
df <- read.spss(file="http://www.bertelsen.ca/R/logistic-regression.sav", use.value.labels=T, to.data.frame=T)
fonte
Respostas:
Em conjuntos de dados desequilibrados como esse, geralmente é possível melhorar o desempenho da classificação, deixando de usar uma probabilidade ajustada de 0,5 como ponto de corte para classificar os casos em inadimplentes e não inadimplentes. Por exemplo, recebo taxas de classificação corretas de 0,88 e 0,88 com um ponto de corte de 0,4 para um glm com todas as interações de segunda ordem. (O que provavelmente leva ao excesso de ajustes e parece ter alguns problemas de classificação, mas isso é outra história.)
Código:
saída parcial:
fonte
Não sou especialista em regressão logística, mas não é apenas um problema de dados desequilibrados? Provavelmente você tem muito mais não-inadimplentes do que inadimplentes, o que pode mudar a previsão para lidar melhor com a classe maior. Tente expulsar alguns não-infratores e ver o que acontece.
fonte
Na regressão logística, distribuições altamente distorcidas de variáveis de resultado (onde há muito mais eventos a eventos ou vice-versa), o ponto de corte ou o gatilho de probabilidade precisam ser ajustados, mas não terão muito efeito na classificação geral eficácia. Isso sempre permanecerá aproximadamente o mesmo, mas atualmente você está subclassificando eventos, pois a probabilidade de "chance" nesse conjunto de dados sempre aumentará a probabilidade de classificação em não-eventos. Isso precisa ser ajustado para. De fato, em tal situação, não é incomum ver a eficiência geral da classificação diminuir, pois ela foi inflada anteriormente por erros de cálculo devido ao acaso.
Pense desta maneira: se você tiver um evento em que 90% não o faça e 10% o faça, se você colocar todos no grupo "não faça", você automaticamente acertará 90%, e isso foi sem sequer tentar, apenas puro acaso, inflado pela distorção de sua distribuição.
A questão das interações não está relacionada a essa distorção e deve ser impulsionada pela teoria. Provavelmente, você sempre melhorará a classificação adicionando termos adicionais, incluindo simplesmente a adição de interações, mas isso é feito com excesso de ajuste no modelo. Você precisa voltar e ser capaz de interpretar isso.
Matt P Analista de dados, Universidade de Illinois Urbana Champaign
fonte
Você pode apenas tentar incluir todos os efeitos de interação. Você pode usar a regressão logística regularizada L1 / L2 para minimizar o excesso de ajuste e tirar proveito de quaisquer recursos úteis. Eu realmente gosto do pacote glmnet de Hastie / Tibshirani (http://cran.r-project.org/web/packages/glmnet/index.html).
fonte
Sei que sua pergunta é sobre regressão logística e, como é uma tarefa de casa, sua abordagem pode ser restrita. No entanto, se o seu interesse estiver nas interações e na precisão da classificação, pode ser interessante usar algo como CART para modelar isso.
Aqui está um código R para produzir a árvore básica. Soltei o rpart no quadro de dados completo aqui. Talvez não seja a melhor abordagem sem conhecimento prévio e um método de validação cruzada:
Não sei ao certo como produzir a tabela de classificação. Não deve ser muito difícil dos valores previstos do objeto de modelo e dos valores originais. Alguém tem alguma dica aqui?
fonte
predict
método de previsão,table(originalClasses,predictedClasses)
para construção de tabela. Eu tentei RF (geralmente tem precisão, como no CART com excesso de equipamento, mas sem excesso de ajuste) e o resultado não foi muito melhor do queglm
.