Estou usando regressão logística para classificação binária. Eu tenho um grande conjunto de dados (é altamente desequilibrado: 19: 1). Então, eu uso o scikit-learn LogisticRegression()
para treinar 80% dos meus dados rotulados e validado com os outros 20% (observei a área sob ROC e o recall de precisão porque os dados eram muito desequilibrados; também usei o modelo com class_weight='auto'
)
Minha principal pergunta é a seguinte: depois que começo a gerar previsões de vetores de entrada não rotulados (usando predict_proba()
), como posso saber quais dos recursos que mais contribuíram para a previsão dessa entrada específica ? Imagino que isso possa ser diferente das "características mais importantes", conforme determinado em geral para o modelo com base nos dados de treinamento rotulados (por exemplo, magnitude do coeficiente).
Eu tive uma ideia muito básica:
Pegue o produto componente dos meus valores de recurso de entrada com o valor absoluto dos meus coeficientes de recurso. O recurso que mais contribui é o que corresponde à entrada com o maior valor.
Faça (1), mas use z-scores para tudo (recursos de treinamento e entrada). Eu pensei que isso seria importante porque me preocupava que alguns intervalos de recursos pudessem ser muito diferentes dos outros, e apenas levar produtos pode não capturar isso; mas acho que os coeficientes devem refletir intervalos, então talvez isso não importe.
Qualquer pensamento seria muito apreciado, pois sou novo nisso. Coisas específicas da regressão logística (isto é, sigmóide em vez de apenas função linear) e quaisquer referências a como implementar ações específicas (por exemplo, transformações) no scikit-learn serão muito apreciadas, pois na verdade eu estou fazendo um projeto com dados reais.