Bedeuten größere Koeffizienten für lineare Klassifikatoren wichtigere Merkmale?


15

Ich bin ein Software-Ingenieur, der am maschinellen Lernen arbeitet. Nach meinem Verständnis bilden lineare Regression (wie OLS) und lineare Klassifikation (wie logistische Regression und SVM) eine Vorhersage auf der Grundlage eines inneren Produkts zwischen trainierten Koeffizienten und Merkmalsvariablen :wx

y^=f(wx)=f(iwixi)

Meine Frage lautet: Nachdem das Modell trainiert wurde ( nachdem die Koeffizienten berechnet wurden), ist es der Fall, dass die Koeffizienten für Merkmalsvariablen größer sind, die für das Modell wichtiger sind, um eine genauere Vorhersage zu treffen?wi

Mit anderen Worten, ich frage mich, ob die relativen Größen der Koeffizienten für die Merkmalsauswahl verwendet werden können, indem einfach die Variablen nach Koeffizientenwert sortiert und dann die Merkmale mit den höchsten Koeffizienten ausgewählt werden. Wenn dieser Ansatz gültig ist, warum wird er dann nicht für die Featureauswahl angegeben (zusammen mit Wrapper- und Filtermethoden usw.)?

Der Grund, warum ich das frage, ist, dass ich auf eine Diskussion über L1 vs. L2 Regularisierung gestoßen bin . Es gibt einen Klappentext, der besagt:

Die eingebaute Merkmalsauswahl wird häufig als nützliche Eigenschaft der L1-Norm erwähnt, was die L2-Norm nicht tut. Dies ist eigentlich ein Ergebnis der L1-Norm, die dazu neigt, spärliche Koeffizienten zu erzeugen (siehe unten). Angenommen, das Modell hat 100 Koeffizienten, aber nur 10 von ihnen haben Koeffizienten ungleich Null. Dies bedeutet effektiv, dass "die anderen 90 Prädiktoren bei der Vorhersage der Zielwerte unbrauchbar sind".

Wenn man zwischen den Zeilen liest, würde ich vermuten, dass die Merkmalsvariable mit diesem Koeffizienten eine geringe Vorhersagekraft haben muss, wenn ein Koeffizient nahe bei 0 liegt.

BEARBEITEN : Ich wende auch Z-Skalierung auf meine numerischen Variablen an.


1
Beachten Sie, dass der Code, der LASSO-Analysen (L1-Norm) und Ridge-Regressionsanalysen (L2-Norm) zugrunde liegt, die Prädiktorvariablen vor der Analyse vorskalieren sollte, auch wenn der Code die Koeffizienten dann zurück in die ursprünglichen Variablenskalen transformiert. Diejenigen, die Code verwenden, der nicht vorskaliert ist, haben am Ende die in der Antwort von @josliber angegebenen Probleme, unabhängig davon, ob sie OLS, LASSO oder Ridge verwenden.
EdM

3
Ich denke, etwas Erwähnenswertes ist, wenn Sie darüber nachdenken, was mit dem Ausdruck "dann muss die Merkmalsvariable mit diesem Koeffizienten eine geringe Vorhersagekraft haben" gemeint ist, können Sie dann genau darlegen, was das wirklich bedeutet? Ich habe jedoch die Erfahrung gemacht, dass das Konzept der "Vorhersagekraft" einer einzelnen Variablen in einem multivariaten Modell keine allgemein vereinbarte konzeptionelle Grundlage hat.
Matthew Drury

4
Ich denke, der Fehler bei dieser Art des Denkens ist, dass Sie sich wahrscheinlich nicht darauf beschränken, ein Modell mit einer Variablen zu erstellen. Wenn Sie es sind und Sie ein Modell mit der besten Genauigkeit bereitstellen möchten, ist dies eine vernünftige Sache. Wenn dies nicht der Fall ist, dh wenn Sie ein multivariates Modell erstellen möchten, ist das Konzept von variabler Bedeutung, wie @EdM antwortet, sehr, sehr rutschig und es fehlt eine solide konzeptionelle Grundlage. Es ist keineswegs offensichtlich, dass die Vorhersagekraft in einem univariaten Modell in einem multivariaten Umfeld als relevant angesehen werden sollte.
Matthew Drury

1
@MatthewDrury: Ich bin mir nicht sicher, warum Sie aus Multi-Features eine große Sache machen. Es gibt ein ganzes Feld der "Merkmalsauswahl" (z. B. Wrapper-Methoden). schlagen Sie vor, dass in diesem Bereich eine feste konzeptionelle Grundlage fehlt?
Stackoverflowuser2010

1
@ stackoverflowuser2010 Yah, ich bin meiner Meinung nach wahrscheinlich ein Ausreißer, aber das wäre eine ziemlich genaue Beschreibung meiner Perspektive.
Matthew Drury

Antworten:


24

Überhaupt nicht. Die Größe der Koeffizienten hängt direkt von den für die Variablen gewählten Maßstäben ab, was eine etwas willkürliche Modellierungsentscheidung ist.

Betrachten Sie dazu ein lineares Regressionsmodell, das die Blütenblattbreite einer Iris (in Zentimetern) anhand ihrer Blütenblattlänge (in Zentimetern) vorhersagt:

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

Unser Modell erreicht einen angepassten R ^ 2-Wert von 0,9266 und weist der Variablen Petal.Length den Koeffizientenwert 0,415755 zu.

Die Wahl, Petal.Length in Zentimetern zu definieren, war jedoch ziemlich willkürlich, und wir hätten stattdessen die Variable in Metern definieren können:

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

Dies hat natürlich keine wirklichen Auswirkungen auf das angepasste Modell. Wir haben Petal.Length.Meters (41.57554) einfach einen 100-fach größeren Koeffizienten zugewiesen als Petal.Length (0.415755). Alle anderen Eigenschaften des Modells (angepasste R ^ 2, t-Statistiken, p-Werte usw.) sind identisch.

Im Allgemeinen werden beim Anpassen von regulierten linearen Modellen zunächst Variablen normalisiert (z. B. mit Mittelwert 0 und Einheitsvarianz), um zu vermeiden, dass einige Variablen aufgrund der ausgewählten Skalen anderen vorgezogen werden.

Angenommen, normalisierte Daten

Auch wenn Sie alle Variablen normalisiert haben, sind Variablen mit höheren Koeffizienten für Vorhersagen möglicherweise nicht so nützlich, da die unabhängigen Variablen nur selten festgelegt werden (geringe Varianz). Betrachten Sie als Beispiel einen Datensatz, bei dem die abhängige Variable Z und die unabhängigen Variablen X und Y Binärwerte annehmen

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)

Konstruktionsbedingt ist der Koeffizient für Y ungefähr doppelt so groß wie der Koeffizient für X, wenn beide verwendet werden, um Z über eine lineare Regression vorherzusagen:

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

Dennoch erklärt X mehr die Varianz in Z als in Y (das lineare Regressionsmodell, das Z mit X vorhersagt, hat einen R ^ 2-Wert von 0,2065, während das lineare Regressionsmodell, das Z mit Y vorhersagt, einen R ^ 2-Wert von 0,0511 hat):

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

gegen:

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

Der Fall der Multi-Kollinearität

Ein dritter Fall, in dem große Koeffizientenwerte täuschen könnten, wäre der Fall einer signifikanten Multi-Kollinearität zwischen Variablen. Betrachten Sie als Beispiel einen Datensatz, bei dem X und Y stark korreliert sind, W jedoch nicht stark mit den beiden anderen korreliert ist. Wir versuchen, Z vorherzusagen:

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

Diese Variablen haben so ziemlich den gleichen Mittelwert (0) und die gleiche Varianz (~ 1), und die lineare Regression weist X (ungefähr 15) und Y (ungefähr -16) viel höhere Koeffizientenwerte zu als W (ungefähr -16). ungefähr 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

Dennoch ist unter den drei Variablen im Modell W die wichtigste: Wenn Sie W aus dem vollständigen Modell entfernen, sinkt der R ^ 2-Wert von 0,833 auf 0,166, während der R ^ 2-Wert praktisch unverändert bleibt, wenn Sie X oder Y fallen lassen.


1
(+1) Ich halte dies für eine gute Antwort, und auf diesen Punkt muss hingewiesen werden. Andererseits glaube ich, dass es auch dann viel zu sagen gibt, wenn die Variablen standardisiert wurden (und daher ohne Einheiten sind), sodass noch ein paar Antworten möglich sind.
Matthew Drury

Danke für die Antwort. Das Schreiben ist zwar lang, aber nicht sehr gründlich, da Sie aus kleinen synthetischen Daten Schlussfolgerungen ziehen. Auch R ^ 2 ist spezifisch für die lineare Regression. Ich glaube, die geeignetere Fehlermetrik ist RMSE oder Genauigkeit / F1 für Klassifizierungsprobleme.
Stackoverflowuser2010

1
ABER wenn Sie die Daten im letzten Beispiel skalieren, haben Sie festgestellt, dass die einzige signifikante Variable W
marcodena

11

"Feature-Wichtigkeit" ist ein sehr schlüpfriges Konzept, selbst wenn alle Prädiktoren auf eine gemeinsame Skala eingestellt wurden (was in vielen praktischen Anwendungen, die kategoriale Variablen oder verzerrte Verteilungen beinhalten, ein nicht triviales Problem darstellt). Wenn Sie also die in der Antwort von @josliber angegebenen Skalierungsprobleme oder das von @dsaxton aufgeworfene Problem der Varianz niedriger Prädiktoren vermeiden, haben Sie immer noch zusätzliche Probleme.

Ein nützlicheres Maß für die Merkmalsbedeutung kann beispielsweise das Verhältnis seines Koeffizienten zum geschätzten Fehler seines Koeffizienten sein. Ein hoher Koeffizient mit einem großen geschätzten Fehler wäre für Vorhersagen nicht unbedingt hilfreich. Die Koeffizientengröße allein ist also selbst in der vorskalierten Situation kein guter Hinweis auf "Wichtigkeit".

Dennoch kann ein Prädiktor wichtig sein, selbst wenn das Verhältnis von Größe zu Fehler seines Koeffizienten niedrig ist (dh er ist nicht "statistisch signifikant"). Lineare Modelle bieten die Möglichkeit, mehrere Prädiktorvariablen gleichzeitig zu berücksichtigen. Durch die Aufnahme eines "nicht signifikanten" Prädiktors in ein Modell kann die Gesamtleistung der kombinierten Sammlung von Prädiktoren verbessert werden.

Darüber hinaus sind Versuche, "wichtige" Prädiktorvariablen auszuwählen, in der Regel stark von der jeweiligen Datenstichprobe abhängig und erstrecken sich häufig nicht gut auf weitere Stichproben, insbesondere wenn die Variablen korreliert sind. Sie können sich davon überzeugen, indem Sie die Funktionsauswahl für mehrere Bootstrap-Beispiele desselben Datensatzes wiederholen. Frank Harrell zeigt in dieser Antwort , wie sein rmsPaket in R für die Rangfolge der wichtigen Funktionen verwendet wird, und stellt in dieser Antwort fest, wie der Bootstrap verwendet wird, um Konfidenzintervalle für die Ränge zu ermitteln. Bootstrapping kann als Vorsichtsmaßnahme für diejenigen dienen, die der Funktion "Feature-Wichtigkeit" zu viel Bedeutung beimessen.

Diese Frage von vor fast drei Jahren, auf die @amoeba hingewiesen hat, geht auch ausführlich auf Schwierigkeiten mit Merkmalsbedeutung in mehreren Regressionsmodellen ein.


Verhältnis des geschätzten Fehlers. Ist dies als "standardisierter Koeffizient" bekannt?
SmallChess

@StudentT Ein " standardisierter Koeffizient " ist ein Regressionskoeffizient, wenn die unabhängigen und abhängigen Variablen alle so skaliert wurden, dass sie eine Einheitsvarianz aufweisen. Dies beinhaltet keine Information über den geschätzten Fehler im Koeffizienten. Das Verhältnis, das ich beschreibe, ist die Quadratwurzel der Wald-Statistik, die Harrell im ersten meiner Links als Maß variabler Wichtigkeit verwendet.
EdM

6

Nur um die vorherige Antwort zu ergänzen, erfasst der Koeffizient selbst nicht, wie viel Variabilität ein Prädiktor aufweist, was einen großen Einfluss darauf hat, wie nützlich er für Prognosen ist. Betrachten Sie das einfache Modell

E(Y.ich)=α+βXich

Xich(p)p0 wir können die Nützlichkeit dieses Prädiktors auch auf Null setzen, aber der Koeffizient wird es immer sein β.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.