J'utilise la régression logistique pour la classification binaire. J'ai un ensemble de données volumineuses (se trouve être très déséquilibré: 19: 1). J'utilise donc scikit-learn LogisticRegression()
pour m'entraîner sur 80% de mes données étiquetées, puis j'ai validé avec les 20% restants (j'ai regardé la zone sous ROC ainsi que le rappel de précision parce que les données étaient tellement déséquilibrées; j'ai également utilisé le modèle avec class_weight='auto'
).
Ma question principale est la suivante: une fois que j'ai commencé à générer des prédictions de vecteurs d'entrée non étiquetés (en utilisant predict_proba()
), comment savoir quelles caractéristiques ont le plus contribué à la prédiction de cette entrée particulière ? J'imagine que cela pourrait être différent des «caractéristiques les plus importantes» telles que déterminées en général pour le modèle basé sur les données de formation étiquetées (par exemple, la magnitude du coefficient).
J'avais une idée très basique:
Prenez le produit par composant de mes valeurs d'entité en entrée avec la valeur absolue de mes coefficients d'entité. La caractéristique la plus contributive est alors celle qui correspond à l'entrée avec la plus grande valeur.
Faites (1) mais utilisez des z-scores pour tout (formation et fonctionnalités d'entrée). J'ai pensé que ce serait important parce que je craignais que certaines gammes de fonctionnalités soient très différentes des autres et que le simple fait de prendre des produits ne les capture pas; mais je suppose que les coefficients devraient refléter les plages, alors peut-être que cela n'a pas d'importance.
Toutes les pensées seraient grandement appréciées car je suis nouveau dans ce domaine. Les choses spécifiques à la régression logistique (c.-à-d. Sigmoïde au lieu d'une simple fonction linéaire) et toute référence à la façon de mettre en œuvre des actions spécifiques (par exemple, les transformations) dans scikit-learn seraient grandement appréciées car je fais actuellement un projet avec des données réelles.