Divulgation complète: ce sont des devoirs. J'ai inclus un lien vers l'ensemble de données ( http://www.bertelsen.ca/R/logistic-regression.sav )
Mon objectif est de maximiser la prédiction des défaillants dans cet ensemble de données.
Chaque modèle que j'ai trouvé jusqu'à présent prédit> 90% des non-défaillants, mais <40% des défaillants, ce qui rend l'efficacité de la classification globale ~ 80%. Je me demande donc s'il y a des effets d'interaction entre les variables? Dans une régression logistique, outre le test de chaque combinaison possible, existe-t-il un moyen d'identifier les effets d'interaction potentiels? Ou encore un moyen d'augmenter l'efficacité de la classification des défaillants.
Je suis coincé, toute recommandation serait utile dans votre choix de mots, de code R ou de syntaxe SPSS.
Mes variables principales sont décrites dans l'histogramme et le diagramme de dispersion suivants (à l'exception de la variable dichotomique)
Une description des variables primaires:
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)
Les variables supplémentaires ne sont que des transformations de ce qui précède. J'ai également essayé de convertir quelques-unes des variables continues en variables catégorielles et de les implémenter dans le modèle, pas de chance là-bas.
Si vous souhaitez l'insérer dans R, rapidement, le voici:
## R Code
df <- read.spss(file="http://www.bertelsen.ca/R/logistic-regression.sav", use.value.labels=T, to.data.frame=T)
la source
Réponses:
Dans des ensembles de données non équilibrés tels que celui-ci, vous pouvez généralement améliorer les performances de classification en vous éloignant de l'utilisation d'une probabilité ajustée de 0,5 comme point de coupure pour classer les cas en défaillants et non-défaillants. Par exemple, j'obtiens des taux de classification corrects de 0,88 et 0,58 avec un point de coupure de 0,4 pour un glm avec toutes les interactions de second ordre. (Ce qui conduit probablement à un sur-ajustement et semble avoir des problèmes de classement, mais c'est une autre histoire.)
Code:
sortie partielle:
la source
Je ne suis pas un expert en régression logistique, mais n'est-ce pas simplement un problème de données déséquilibrées? Vous avez probablement beaucoup plus de non-défaillants que de défaillants, ce qui peut modifier la prédiction pour mieux gérer une classe plus grande. Essayez d'éliminer certains non-défaillants et voyez ce qui se passe.
la source
Dans la régression logistique, les distributions très asymétriques des variables de résultats (où il y a beaucoup plus de non-événements aux événements ou vice versa), le point de coupure ou le déclencheur de probabilité doit être ajusté, mais il n'aura pas beaucoup d'effet sur la classification globale efficacité. Cela restera toujours à peu près le même, mais vous sous-classifiez actuellement les événements, car la probabilité de «chance» dans un tel ensemble de données vous rendra toujours plus susceptible de classer en non-événements. Cela doit être ajusté. En fait, dans une telle situation, il n'est pas rare de voir l'efficacité globale de la classification diminuer, car elle était auparavant gonflée par un mauvais calcul dû au hasard.
Pensez-y de cette façon, si vous avez un événement où 90% ne le font pas et 10% le font, alors si vous mettez tout le monde dans le groupe "ne le faites pas", vous obtenez automatiquement 90% de raison, et que était sans même essayer, juste un pur hasard, gonflé par l'asymétrie de sa distribution.
La question des interactions n'est pas liée à cette asymétrie et devrait être motivée par la théorie. Vous améliorerez très probablement toujours la classification en ajoutant des termes supplémentaires, y compris en ajoutant simplement des interactions, mais vous le faites en sur-adaptant souvent le modèle. Il faut ensuite revenir en arrière et pouvoir interpréter cela.
Matt P Data Analyst, University of Illinois Urbana Champaign
la source
Vous pourriez simplement essayer d'inclure tous les effets d'interaction. Vous pouvez ensuite utiliser la régression logistique régularisée L1 / L2 pour minimiser le sur-ajustement et profiter de toutes les fonctionnalités utiles. J'aime vraiment le paquet glmnet de Hastie / Tibshirani (http://cran.r-project.org/web/packages/glmnet/index.html).
la source
Je sais que votre question porte sur la régression logistique et comme il s'agit d'une affectation aux devoirs, votre approche peut être limitée. Cependant, si vous vous intéressez aux interactions et à l'exactitude de la classification, il peut être intéressant d'utiliser quelque chose comme CART pour modéliser cela.
Voici du code R pour produire l'arborescence de base. J'ai mis rpart en vrac sur le cadre de données enire ici. Peut-être pas la meilleure approche sans quelques connaissances préalables et une méthode de validation croisée:
Je ne sais pas exactement comment produire la table de classification. Cela ne devrait pas être trop difficile à partir des valeurs prédites de l'objet modèle et des valeurs d'origine. Quelqu'un a des conseils ici?
la source
predict
méthode de prédiction,table(originalClasses,predictedClasses)
de construction de table. J'ai essayé RF (généralement il a une précision comme dans un panier sur-équipé, mais pas de sur-ajustement) et le résultat n'était pas beaucoup mieux queglm
.