9

Ho un modello di previsione binario addestrato dall'algoritmo di regressione logistica. Voglio sapere quali caratteristiche (predittori) sono più importanti per la decisione della classe positiva o negativa. So che il parametro coef_ deriva dal pacchetto scikit-learn, ma non so se sia sufficiente per l'importanza. Un'altra cosa è come posso valutare i valori coef_ in termini di importanza per le classi negative e positive. Leggo anche i coefficienti di regressione standardizzati e non so cosa sia.Come trovare l'importanza delle funzionalità per un modello di regressione logistica?

Diciamo che ci sono caratteristiche come dimensioni del tumore, peso del tumore ed ecc. Per prendere una decisione per un caso di test come maligno o non maligno. Voglio sapere quali delle caratteristiche sono più importanti per la previsione maligna e non maligna. Ha senso?

+0

Puoi forse includere un esempio per rendere le cose più concrete? – carlosdc

+0

Diciamo che ci sono caratteristiche come dimensioni del tumore, peso del tumore ed ecc. Per prendere una decisione per un caso di test come maligno o non maligno. Voglio sapere quali delle caratteristiche sono più importanti per la previsione maligna e non maligna. Ha senso? – mgokhanbakal

risposta

17

Una delle opzioni più semplici per avere un'idea dell'influenza di un dato parametro in un modello di classificazione lineare (essendo logistico uno di quelli), è considerare la grandezza del suo coefficiente volte la deviazione standard della corrispondente parametro nei dati.

Considerate questo esempio:

import numpy as np  
from sklearn.linear_model import LogisticRegression 

x1 = np.random.randn(100) 
x2 = 4*np.random.randn(100) 
x3 = 0.5*np.random.randn(100) 
y = (3 + x1 + x2 + x3 + 0.2*np.random.randn()) > 0 
X = np.column_stack([x1, x2, x3]) 

m = LogisticRegression() 
m.fit(X, y) 

# The estimated coefficients will all be around 1: 
print(m.coef_) 

# Those values, however, will show that the second parameter 
# is more influential 
print(np.std(X, 0)*m.coef_) 

Un modo alternativo per ottenere un risultato simile è quello di esaminare i coefficienti del modello di misura su parametri standardizzati:

m.fit(X/np.std(X, 0), y) 
print(m.coef_) 

Si noti che questo è il più semplice approccio e una serie di altre tecniche per trovare l'importanza delle caratteristiche o l'influenza dei parametri (utilizzando valori p, punteggi bootstrap, vari "indici discriminatori", ecc.).

Sono abbastanza sicuro che otterreste risposte più interessanti allo https://stats.stackexchange.com/.

+0

Grazie per la spiegazione. Ancora una cosa, che cosa significa un valore negativo di m.coef_? Significa che è più discriminante per la decisione della classe negativa? La stessa domanda anche per i valori positivi. – mgokhanbakal

+4

Un coefficiente negativo significa che il valore più alto della caratteristica corrispondente spinge la classificazione più verso la classe negativa. –

+0

Grazie per la spiegazione aggiuntiva. – mgokhanbakal