Per i classificatori lineari, i coefficienti più grandi implicano caratteristiche più importanti?


15

Sono un ingegnere del software che lavora sull'apprendimento automatico. Secondo la mia comprensione, la regressione lineare (come OLS) e la classificazione lineare (come regressione logistica e SVM) fanno una previsione basata su un prodotto interno tra coefficienti addestrati e variabili caratteristica x :wX

y^=f(wX)=f(ΣiowioXio)

La mia domanda è: Dopo che il modello è stato addestrato (che è, dopo i coefficienti già essere calcolata), è il caso che i coefficienti saranno più grandi per le variabili funzionalità che sono più importanti per il modello per prevedere con maggiore precisione?wio

In altre parole, mi chiedo se le magnitudini relative dei coefficienti possono essere utilizzate per la selezione delle caratteristiche semplicemente ordinando le variabili in base al valore del coefficiente e selezionando quindi le caratteristiche con i coefficienti più alti? Se questo approccio è valido, perché non viene menzionato per la selezione delle funzionalità (insieme ai metodi wrapper e filtro, ecc.).

Il motivo per cui lo chiedo è perché mi sono imbattuto in una discussione sulla regolarizzazione L1 vs. L2 . C'è un rumore che dice:

La selezione delle funzioni integrate viene spesso menzionata come una proprietà utile della norma L1, a differenza della norma L2. Questo è in realtà un risultato della norma L1, che tende a produrre coefficienti sparsi (spiegato di seguito). Supponiamo che il modello abbia 100 coefficienti ma solo 10 di essi abbiano coefficienti diversi da zero, ciò sta effettivamente dicendo che "gli altri 90 predittori sono inutili nel predire i valori target".

Leggendo tra le righe, immagino che se un coefficiente è vicino a 0, la variabile caratteristica con quel coefficiente deve avere un potere predittivo scarso.

EDIT : sto anche applicando il ridimensionamento z alle mie variabili numeriche.


1
Si noti che il codice alla base delle analisi LASSO (norma L1) e della regressione della cresta (norma L2) dovrebbe pre-ridimensionare le variabili predittive prima dell'analisi, anche se il codice trasforma nuovamente i coefficienti nelle scale variabili originali. Coloro che usano un codice che non pre-scala finiscono con i problemi indicati nella risposta di @josliber se stanno facendo OLS, LASSO o ridge.
EdM

3
Penso che una cosa degna di nota sia, quando rifletti su ciò che stanno cercando di esprimere con la frase "allora la variabile caratteristica con quel coefficiente deve avere un potere predittivo limitato", puoi esporre con precisione cosa significhi davvero? Ho scoperto, per esperienza, che il concetto di "potere predittivo" di una singola variabile in un modello multivariato non ha generalmente concordato un fondamento concettuale.
Matthew Drury,

4
Penso che l'errore in questo tipo di pensiero sia che probabilmente non sei limitato a produrre un modello a una variabile. Se lo sei, e vuoi fornire un modello con la massima precisione, sono sicuro che è una cosa ragionevole da fare. Se non lo sei, cioè se stai per produrre un modello multivariato, allora, come risponde @EdM, il concetto di importanza variabile è molto, molto scivoloso e manca di una solida base concettuale. Non è affatto ovvio che il potere predittivo in un modello univariato dovrebbe essere considerato rilevante in un contesto multivariato.
Matthew Drury,

1
@MatthewDrury: Non sono sicuro del motivo per cui stai facendo un grosso problema con le funzionalità multiple. Esiste un intero campo di "selezione delle caratteristiche" (ad es. Metodi wrapper); stai suggerendo che in questo campo manca una solida base concettuale?
stackoverflowuser2010

1
@ stackoverflowuser2010 Yah, probabilmente sono un outlier secondo me, ma sarebbe una descrizione un po 'accurata della mia prospettiva.
Matthew Drury,

Risposte:


24

Affatto. L'entità dei coefficienti dipende direttamente dalle scale selezionate per le variabili, che è una decisione di modellizzazione alquanto arbitraria.

Per vedere questo, considera un modello di regressione lineare che prevede la larghezza del petalo di un'iride (in centimetri) data la sua lunghezza del petalo (in centimetri):

summary(lm(Petal.Width~Petal.Length, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  -0.363076   0.039762  -9.131  4.7e-16 ***
# Petal.Length  0.415755   0.009582  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

Il nostro modello raggiunge un valore R ^ 2 aggiustato di 0,9266 e assegna il valore del coefficiente 0,415755 alla variabile Petal.Length.

Tuttavia, la scelta di definire Petal.Length in centimetri era abbastanza arbitraria e avremmo potuto invece definire la variabile in metri:

iris$Petal.Length.Meters <- iris$Petal.Length / 100
summary(lm(Petal.Width~Petal.Length.Meters, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length.Meters, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#                     Estimate Std. Error t value Pr(>|t|)    
# (Intercept)         -0.36308    0.03976  -9.131  4.7e-16 ***
# Petal.Length.Meters 41.57554    0.95824  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

Naturalmente, ciò non influisce in alcun modo sul modello montato: abbiamo semplicemente assegnato un coefficiente 100x più grande a Petal.Length.Meters (41.57554) rispetto a Petal.Length (0.415755). Tutte le altre proprietà del modello (R ^ 2 rettificato, statistiche t, valori p, ecc.) Sono identiche.

Generalmente, quando si adattano modelli lineari regolarizzati, si devono prima normalizzare le variabili (ad esempio, con 0 medio e varianza unitaria) per evitare di favorire alcune variabili rispetto ad altre in base alle scale selezionate.

Supponendo dati normalizzati

Anche se tutte le variabili sono state normalizzate, le variabili con coefficienti più elevati potrebbero non essere altrettanto utili nelle previsioni perché le variabili indipendenti sono raramente impostate (hanno una varianza bassa). Ad esempio, si consideri un set di dati con la variabile dipendente Z e le variabili indipendenti X e Y che assumono valori binari

set.seed(144)
dat <- data.frame(X=rep(c(0, 1), each=50000),
                  Y=rep(c(0, 1), c(1000, 99000)))
dat$Z <- dat$X + 2*dat$Y + rnorm(100000)

Per costruzione, il coefficiente per Y è circa due volte più grande del coefficiente per X quando entrambi sono usati per prevedere Z tramite regressione lineare:

summary(lm(Z~X+Y, data=dat))
# Call:
# lm(formula = Z ~ X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.4991 -0.6749 -0.0056  0.6723  4.7342 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.094793   0.031598   -3.00   0.0027 ** 
# X            0.999435   0.006352  157.35   <2e-16 ***
# Y            2.099410   0.031919   65.77   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.9992 on 99997 degrees of freedom
# Multiple R-squared:  0.2394,  Adjusted R-squared:  0.2394 
# F-statistic: 1.574e+04 on 2 and 99997 DF,  p-value: < 2.2e-16

Tuttavia, X spiega più della varianza in Z di Y (il modello di regressione lineare che prevede Z con X ha valore R ^ 2 0,2065, mentre il modello di regressione lineare che prevede Z con Y ha valore R ^ 2 0,0511):

summary(lm(Z~X, data=dat))
# Call:
# lm(formula = Z ~ X, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.2587 -0.6759  0.0038  0.6842  4.7342 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 1.962629   0.004564   430.0   <2e-16 ***
# X           1.041424   0.006455   161.3   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.021 on 99998 degrees of freedom
# Multiple R-squared:  0.2065,  Adjusted R-squared:  0.2065 
# F-statistic: 2.603e+04 on 1 and 99998 DF,  p-value: < 2.2e-16

contro:

summary(lm(Z~Y, data=dat))
# Call:
# lm(formula = Z ~ Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.0038 -0.7638 -0.0007  0.7610  5.2288 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.09479    0.03529  -2.686  0.00724 ** 
# Y            2.60418    0.03547  73.416  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.116 on 99998 degrees of freedom
# Multiple R-squared:  0.05114, Adjusted R-squared:  0.05113 
# F-statistic:  5390 on 1 and 99998 DF,  p-value: < 2.2e-16

Il caso della multi-collinearità

Un terzo caso in cui valori di coefficienti elevati possono essere ingannevoli sarebbe nel caso di una significativa multi-collinearità tra le variabili. Ad esempio, si consideri un set di dati in cui X e Y sono altamente correlati ma W non è altamente correlato agli altri due; stiamo cercando di prevedere Z:

set.seed(144)
dat <- data.frame(W=rnorm(100000),
                  X=rnorm(100000))
dat$Y <- dat$X + rnorm(100000, 0, 0.001)
dat$Z <- 2*dat$W+10*dat$X-11*dat$Y + rnorm(100000)
cor(dat)
#              W             X             Y          Z
# W 1.000000e+00  5.191809e-05  5.200434e-05  0.8161636
# X 5.191809e-05  1.000000e+00  9.999995e-01 -0.4079183
# Y 5.200434e-05  9.999995e-01  1.000000e+00 -0.4079246
# Z 8.161636e-01 -4.079183e-01 -4.079246e-01  1.0000000

Queste variabili hanno praticamente la stessa media (0) e varianza (~ 1) e la regressione lineare assegna valori di coefficienti molto più alti (in valore assoluto) a X (circa 15) e Y (circa -16) rispetto a W ( circa 2):

summary(lm(Z~W+X+Y, data=dat))
# Call:
# lm(formula = Z ~ W + X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.1886 -0.6760  0.0026  0.6679  4.2232 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  1.831e-04  3.170e-03   0.058    0.954    
# W            2.001e+00  3.172e-03 630.811  < 2e-16 ***
# X            1.509e+01  3.177e+00   4.748 2.05e-06 ***
# Y           -1.609e+01  3.177e+00  -5.063 4.13e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.002 on 99996 degrees of freedom
# Multiple R-squared:  0.8326,  Adjusted R-squared:  0.8326 
# F-statistic: 1.658e+05 on 3 and 99996 DF,  p-value: < 2.2e-16

Tuttavia, tra le tre variabili nel modello W è la più importante: se rimuovi W dal modello completo, R ^ 2 scende da 0,833 a 0,166, mentre se rilasci X o Y R ^ 2 rimane praticamente invariato.


1
(+1) Penso che questa sia una buona risposta, e questo punto deve essere fatto. D'altra parte, credo che ci sia molto da dire anche quando le variabili sono state standardizzate (e sono quindi senza unità), quindi c'è spazio per qualche altra risposta.
Matthew Drury,

Grazie per la risposta. Mentre la tua scrittura è lunga, non è molto approfondita perché stai traendo conclusioni da piccoli dati sintetici. Inoltre, R ^ 2 è specifico per la regressione lineare. Credo che la metrica di errore più appropriata sia RMSE, o accuratezza / F1 per i problemi di classificazione.
stackoverflowuser2010

1
MA se si ridimensionano i dati nell'ultimo esempio, si ha che l'unica variabile significativa è W
marcodena

11

L '"importanza delle caratteristiche" è un concetto molto scivoloso anche quando tutti i predittori sono stati adattati a una scala comune (che di per sé è un problema non banale in molte applicazioni pratiche che coinvolgono variabili categoriche o distribuzioni distorte). Quindi, se si evitano i problemi di ridimensionamento indicati nella risposta da @josliber o il problema della bassa varianza dei predittori sollevato da @dsaxton, si hanno ancora ulteriori problemi.

Ad esempio, una misura più utile di importanza della caratteristica può essere il rapporto tra il suo coefficiente e l'errore stimato del suo coefficiente. Un coefficiente elevato con un errore stimato elevato non sarebbe necessariamente utile nelle previsioni. Quindi la magnitudine dei coefficienti da sola, anche nella situazione pre-ridimensionata, non è una buona guida per "l'importanza".

Tuttavia, un predittore può essere importante anche se il rapporto tra il suo coefficiente di grandezza ed errore è basso (cioè non è "statisticamente significativo"). I modelli lineari offrono la possibilità di prendere in considerazione più variabili predittive contemporaneamente, quindi includere un predittore "non significativo" in un modello può migliorare le prestazioni complessive fornite dalla raccolta combinata di predittori.

Inoltre, i tentativi di selezionare variabili predittive "importanti" tendono ad essere altamente dipendenti dal particolare campione di dati e spesso non si estendono bene ad ulteriori campioni, in particolare se le variabili sono correlate. Puoi vederlo da solo ripetendo la selezione delle funzionalità su più campioni bootstrap dello stesso set di dati. Frank Harrell, in questa risposta mostra come usare il suo rmspacchetto in R per importanza delle funzionalità di classifica, e nota in questa risposta come usare il bootstrap per ottenere intervalli di confidenza per le classifiche. Il bootstrap può essere un avvertimento per coloro che attribuiscono troppa importanza alla "importanza delle funzionalità".

Questa domanda di quasi 3 anni fa, sottolineata da @amoeba, entra anche nei dettagli dettagliati sulle difficoltà con importanza delle caratteristiche in più modelli di regressione.


Rapporto dell'errore stimato. Questo è noto come "coefficiente standardizzato"?
HelloWorld,

@StudentT un " coefficiente standardizzato " è un coefficiente di regressione quando le variabili indipendenti e dipendenti sono state ridimensionate per avere una varianza unitaria. Ciò non include informazioni sull'errore stimato nel coefficiente. Il rapporto che descrivo è la radice quadrata della statistica Wald utilizzata da Harrell come misura di importanza variabile nel primo dei miei collegamenti.
EdM

6

Solo per aggiungere alla risposta precedente, il coefficiente stesso non riesce anche a catturare quanta variabilità mostra un predittore, il che ha un grande effetto su quanto sia utile nel fare previsioni. Considera il modello semplice

E(Yio)=α+βXio

Xio(p)p0β

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.