Czy w przypadku klasyfikatorów liniowych większe współczynniki implikują ważniejsze cechy?

15

Jestem inżynierem oprogramowania zajmującym się uczeniem maszynowym. Z mojego zrozumienia, regresja liniowa (taka jak OLS) i klasyfikacja liniowa (taka jak regresja logistyczna i SVM) przewidują na podstawie iloczynu wewnętrznego między wyuczonymi współczynnikami a zmiennymi funkcji :wx

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

Moje pytanie brzmi: po wytrenowaniu modelu (to znaczy po współczynników ), czy to jest tak, że współczynniki będą większe dla zmiennych cech, które są ważniejsze dla modelu w celu dokładniejszego przewidywania?wi

Innymi słowy, pytam, czy względne wielkości współczynników można wykorzystać do wyboru cech, po prostu porządkując zmienne według wartości współczynnika, a następnie wybierając cechy o najwyższych współczynnikach? Jeśli to podejście jest poprawne, to dlaczego nie jest wspomniane przy wyborze funkcji (wraz z metodami otoki i filtrów itp.).

Pytam o to, ponieważ natrafiłem na dyskusję na temat regularyzacji L1 vs. L2 . Jest taki napis, który mówi:

Wbudowany wybór funkcji jest często wymieniany jako użyteczna właściwość normy L1, czego nie ma w normie L2. Jest to faktycznie wynik normy L1, która ma tendencję do wytwarzania rzadkich współczynników (wyjaśnionych poniżej). Załóżmy, że model ma 100 współczynników, ale tylko 10 z nich ma niezerowe współczynniki, co skutecznie mówi, że „pozostałe 90 predyktorów jest bezużyteczne w przewidywaniu wartości docelowych”.

Czytając między wierszami, zgaduję, że jeśli współczynnik jest bliski 0, to zmienna charakterystyczna o tym współczynniku musi mieć małą moc predykcyjną.

EDYCJA : Stosuję również skalowanie Z do moich zmiennych numerycznych.

stackoverflowuser2010
źródło
1
Należy zauważyć, że kod leżący u podstaw analiz LASSO (norma L1) i regresji kalenicowej (norma L2) powinien wstępnie przeskalować zmienne predykcyjne przed analizą, nawet jeśli kod następnie przekształci współczynniki z powrotem w oryginalne skale zmiennych. Ci, którzy używają kodu, który nie jest wstępnie skalowany, kończą się problemami wskazanymi w odpowiedzi z @josliber, niezależnie od tego, czy wykonują OLS, LASSO, czy grzbiet.
EdM
3
Myślę, że warto wspomnieć o tym, kiedy zastanawiasz się nad tym, co próbujesz wyrazić wyrażeniem „wtedy zmienna funkcji o tym współczynniku musi mieć niewielką moc predykcyjną”, czy możesz precyzyjnie określić, co to naprawdę oznacza? Doświadczyłem jednak, że pojęcie „mocy predykcyjnej” zmiennej indywidualnej w modelu wielowymiarowym zasadniczo nie jest zgodne z podstawami koncepcyjnymi.
Matthew Drury
4
Myślę, że błędem w tego rodzaju myśleniu jest to, że prawdopodobnie nie jesteś ograniczony do stworzenia modelu jednej zmiennej. Jeśli tak, i chcesz dostarczyć model o najlepszej dokładności, to na pewno jest to rozsądna rzecz. Jeśli tak nie jest, tj. Jeśli zamierzasz stworzyć model wielowymiarowy, to, jak odpowiada @EdM, koncepcja o zmiennym znaczeniu jest bardzo, bardzo śliska i nie ma solidnych podstaw koncepcyjnych. Nie jest wcale oczywiste, że moc predykcyjna w modelu jednoczynnikowym powinna być postrzegana jako istotna w ustawieniu wielowymiarowym.
Matthew Drury
1
@MatthewDrury: Nie jestem pewien, dlaczego robisz tak wiele z wielu funkcji. Istnieje całe pole „wyboru funkcji” (np. Metody opakowania); sugerujesz, że w tym polu brakuje solidnych podstaw koncepcyjnych?
stackoverflowuser2010
1
@ stackoverflowuser2010 Tak, moim zdaniem prawdopodobnie jestem odstającym, ale byłby to dość dokładny opis mojej perspektywy.
Matthew Drury

Odpowiedzi:

24

Ani trochę. Wielkość współczynników zależy bezpośrednio od skal wybranych dla zmiennych, co jest dość arbitralną decyzją modelowania.

Aby to zobaczyć, rozważ model regresji liniowej przewidujący szerokość płatka tęczówki (w centymetrach) na podstawie jego długości płatka (w centymetrach):

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

Nasz model osiąga skorygowaną wartość R ^ 2 wynoszącą 0,9266 i przypisuje wartość współczynnika 0,415755 do zmiennej Płatek.

Jednak wybór zdefiniowania Płatka. Długość w centymetrach był dość arbitralny i zamiast tego moglibyśmy zdefiniować zmienną w metrach:

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

Oczywiście nie wpływa to w żaden sposób na dopasowany model - po prostu przypisaliśmy Petal.Length.Mength (41.57554) o 100x większy współczynnik niż do Petal.Length (0.415755). Wszystkie pozostałe właściwości modelu (skorygowane R ^ 2, statystyki t, wartości p itp.) Są identyczne.

Zasadniczo przy dopasowywaniu znormalizowanych modeli liniowych najpierw znormalizuje się zmienne (na przykład, aby uzyskać średnią 0 i wariancję jednostkową), aby uniknąć faworyzowania niektórych zmiennych nad innymi na podstawie wybranych skal.

Zakładając znormalizowane dane

Nawet jeśli znormalizowałeś wszystkie zmienne, zmienne o wyższych współczynnikach mogą nadal nie być tak przydatne w przewidywaniach, ponieważ zmienne niezależne są rzadko ustawiane (mają niską wariancję). Jako przykład rozważmy zestaw danych ze zmienną zależną Z i zmiennymi niezależnymi X i Y przyjmującymi wartości binarne

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)

Z założenia współczynnik Y jest z grubsza dwa razy większy niż współczynnik X, gdy oba są używane do przewidywania Z za pomocą regresji liniowej:

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

Mimo to X wyjaśnia więcej wariancji w Z niż Y (model regresji liniowej przewidujący Z z X ma wartość R ^ 2 0,2065, podczas gdy model regresji liniowej przewidujący Z z Y ma wartość 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

przeciw:

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

Przypadek wielokolinearności

Trzeci przypadek, w którym duże wartości współczynników mogą wprowadzać w błąd, byłby w przypadku znacznej wielokoliniowości między zmiennymi. Jako przykład rozważmy zestaw danych, w którym X i Y są silnie skorelowane, ale W nie jest silnie skorelowane z pozostałymi dwoma; próbujemy przewidzieć 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

Zmienne te mają prawie taką samą średnią (0) i wariancję (~ 1), a regresja liniowa przypisuje znacznie wyższe wartości współczynników (w wartości bezwzględnej) X (około 15) i Y (około -16) niż W ( około 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

Jednak wśród trzech zmiennych w modelu W najważniejsze jest: Jeśli usuniesz W z pełnego modelu, R ^ 2 spadnie z 0,833 do 0,166, podczas gdy jeśli upuścisz X lub Y, R ^ 2 jest praktycznie niezmienione.

josliber
źródło
1
(+1) Myślę, że to dobra odpowiedź i należy o tym powiedzieć. Z drugiej strony uważam, że jest wiele do powiedzenia nawet wtedy, gdy zmienne zostały znormalizowane (a zatem nie zawierają jednostek), więc jest miejsce na kilka dodatkowych odpowiedzi.
Matthew Drury
Dziękuję za odpowiedź. Chociaż pisanie jest długie, nie jest bardzo dokładne, ponieważ wyciągasz wnioski z małych syntetycznych danych. Ponadto R ^ 2 jest specyficzny dla regresji liniowej. Uważam, że bardziej odpowiednią miarą błędu jest RMSE lub dokładność / F1 w przypadku problemów z klasyfikacją.
stackoverflowuser2010
1
ALE jeśli
skalujesz
11

„Znaczenie cech” jest bardzo śliskim pojęciem, nawet gdy wszystkie predyktory zostały dostosowane do wspólnej skali (co samo w sobie jest nietrywialnym problemem w wielu praktycznych zastosowaniach obejmujących zmienne kategorialne lub skośne rozkłady). Jeśli więc unikniesz problemów skalowania wskazanych w odpowiedzi przez @josliber lub problemu niskiej wariancji predyktorów podniesionego przez @dsaxton, nadal będziesz mieć dodatkowe problemy.

Na przykład bardziej użyteczną miarą znaczenia cechy może być stosunek jej współczynnika do oszacowanego błędu jego współczynnika. Wysoki współczynnik z dużym szacowanym błędem niekoniecznie byłby pomocny w prognozach. Zatem sam współczynnik wielkości, nawet w sytuacji wstępnie skalowanej, nie jest dobrym przewodnikiem po „znaczeniu”.

Niemniej jednak predyktor może być ważny, nawet jeśli jego stosunek wielkości do błędu jest niski (tj. Nie jest „statystycznie istotny”). Modele liniowe zapewniają możliwość jednoczesnego uwzględnienia wielu zmiennych predykcyjnych, więc włączenie predyktora „nieistotnego” do modelu może poprawić ogólną wydajność zapewnianą przez połączony zbiór predyktorów.

Co więcej, próby wybrania „ważnych” zmiennych predykcyjnych są w dużej mierze zależne od konkretnej próbki danych i często nie rozciągają się dobrze na kolejne próbki, szczególnie jeśli zmienne są skorelowane. Możesz to zobaczyć sam, powtarzając wybór funkcji na wielu próbkach ładowania tego samego zestawu danych. Frank Harrell, w tej odpowiedzi pokazuje, jak używać swojego rmspakietu w R do rangowania ważności funkcji, i zauważa w tej odpowiedzi, jak używać bootstrap, aby uzyskać przedziały ufności dla szeregów. Bootstrapping może być ostrzeżeniem dla tych, którzy przywiązują zbyt dużą wagę do „ważności funkcji”.

To pytanie z prawie 3 lat temu, na które zwrócił uwagę @amoeba, również zawiera szczegółowe informacje na temat trudności związanych z istotnością funkcji w modelach regresji wielokrotnej.

EdM
źródło
Współczynnik błędu szacunkowego. Czy jest to znane jako „znormalizowany współczynnik”?
HelloWorld,
@StudentT „ znormalizowany współczynnik ” to współczynnik regresji, gdy wszystkie zmienne niezależne i zależne zostały skalowane w celu uzyskania wariancji jednostkowej. Nie obejmuje to informacji o szacowanym błędzie współczynnika. Stosunek, który opisuję, jest pierwiastkiem kwadratowym ze statystyki Walda wykorzystanej przez Harrella jako miary o zmiennym znaczeniu w pierwszym z moich linków.
EdM,
6

Aby dodać do poprzedniej odpowiedzi, sam współczynnik również nie uchwycił, jak zmienna wykazuje predyktor, co ma duży wpływ na to, jak przydatne jest w prognozowaniu. Rozważ prosty model

mi(Yja)=α+βXja

gdzie Xja jest Bernoulli(p)zmienna losowa. Biorącp0 możemy również wysłać użyteczność tego predyktora do zera, ale współczynnik zawsze będzie β.

dsaxton
źródło