Чи мають для лінійних класифікаторів більші коефіцієнти важливіші характеристики?


15

Я програмний інженер, який працює над машинним навчанням. З мого розуміння, лінійна регресія (наприклад, OLS) та лінійна класифікація (наприклад, логістична регресія та SVM) роблять прогноз на основі внутрішнього добутку між тренованими коефіцієнтами та змінними характеристик x :шх

у^=f(шх)=f(iшiхi)

Моє питання: Після того , як модель була навчена (тобто, після того, як коефіцієнти вже, можливо вирахувано), це той випадок, коли коефіцієнти будуть більше для художніх змінних , які є більш важливими для моделі більш точно передбачити?шi

Іншими словами, я запитую, чи можна відносні величини коефіцієнтів використовувати для вибору ознак , просто упорядкувавши змінні за значенням коефіцієнта, а потім вибравши ознаки з найвищими коефіцієнтами? Якщо цей підхід є дійсним, то чому він не згадується для вибору особливостей (поряд із методами обгортки та фільтру тощо).

Причина, яку я прошу, це тому, що я натрапив на дискусію щодо регуляризації L1 проти L2 . Є розмиття, яке говорить:

Вибір вбудованої функції часто згадується як корисна властивість норми L1, якої немає у нормі L2. Це насправді результат L1-норми, яка має тенденцію до отримання розріджених коефіцієнтів (пояснено нижче). Припустимо, що модель має 100 коефіцієнтів, але лише 10 мають ненульові коефіцієнти, це фактично говорить про те, що "інші 90 предикторів марні при прогнозуванні цільових значень".

Читаючи між рядками, я б припустив, що якщо коефіцієнт близький до 0, то змінна характеристика з цим коефіцієнтом повинна мати невелику прогнозовану потужність.

EDIT : Я також застосовую z-масштабування до моїх числових змінних.


1
Зауважимо, що код, що лежить в основі аналізу LASSO (L1-норма) та регресія хребта (L2-норма), повинен попередньо масштабувати змінні предиктора перед аналізом, навіть якщо код потім перетворює коефіцієнти назад у початкові змінні шкали. Ті, хто використовує код, який не має масштабу, закінчується проблемами, зазначеними у відповіді від @josliber, чи роблять вони OLS, LASSO чи ridge.
EdM

3
Я думаю, що варто щось згадати, коли ви розмірковуєте над тим, що намагаєтеся висловити фразою "тоді змінна характеристика з цим коефіцієнтом повинна мати невелику прогностичну силу", ви можете точно викласти, що це насправді означає? Хоча я виявив досвід, що поняття "сила прогнозування" індивідуальної змінної в багатовимірній моделі взагалі не погоджується на концептуальній основі.
Метью Друрі

4
Я думаю, що помилка в такому мисленні полягає в тому, що ви, мабуть, не обмежуєтесь створенням однієї змінної моделі. Якщо ви є, і хочете забезпечити модель з найкращою точністю, вони впевнені, що це розумно робити. Якщо ви цього не зробите, тобто якщо ви збираєтеся створити багатоваріантну модель, то, як відповідає @EdM, концепція змінної важливості дуже, дуже слизька і не має міцної концептуальної основи. Зовсім не очевидно, що сила передбачення в універсальній моделі повинна розглядатися як доречна в багатоваріантній обстановці.
Метью Друрі

1
@MatthewDrury: Я не впевнений, чому ви робите велику справу з багатофункціональних можливостей. Існує ціле поле "вибору функції" (наприклад, методи обгортання), яке існує; Ви припускаєте, що в цьому полі немає міцної концептуальної основи?
stackoverflowuser2010

1
@ stackoverflowuser2010 Так, на мою думку, я, мабуть, непересічний, але це був би дещо точний опис моєї точки зору.
Метью Друрі

Відповіді:


24

Зовсім ні. Величина коефіцієнтів безпосередньо залежить від шкал, вибраних для змінних, що є дещо довільним рішенням моделювання.

Щоб побачити це, розглянемо лінійну регресійну модель, яка передбачає ширину пелюстки райдужної оболонки (у сантиметрах), враховуючи її довжину пелюстки (у сантиметрах):

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

Наша модель досягає скоригованого значення R ^ 2 0,9266 і присвоює змінній Petal.Length значення коефіцієнта 0,415755.

Однак вибір Petal.Length у сантиметрах був досить довільним, і ми могли замість цього визначити змінну в метрах:

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

Звичайно, це насправді ніяк не впливає на встановлену модель - ми просто призначили Petal.Length.Meters (41,57554) на 100 разів більший коефіцієнт, ніж ми зробили Petal.Length (0,415755). Усі інші властивості моделі (скоригована R ^ 2, t-статистика, p-значення тощо) ідентичні.

Як правило, при встановленні регульованих лінійних моделей спочатку потрібно нормалізувати змінні (наприклад, мати середнє значення 0 та одиницю дисперсії), щоб уникнути переваги одних змінних перед іншими на основі вибраних шкал.

Припускаючи нормалізовані дані

Навіть якщо ви нормалізували всі змінні, змінні з більш високими коефіцієнтами все ще можуть бути не настільки корисними для прогнозів, оскільки незалежні змінні рідко встановлюються (мають низьку дисперсію). Як приклад, розглянемо набір даних із залежною змінною Z та незалежними змінними X та Y, що приймають бінарні значення

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)

За побудовою коефіцієнт для Y приблизно вдвічі більший за коефіцієнт для X, коли обидва використовуються для прогнозування Z за допомогою лінійної регресії:

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

Тим не менш, X пояснює більше дисперсії у Z, ніж Y (лінійна регресійна модель, що прогнозує Z з X, має значення R ^ 2 0,2065, тоді як модель лінійної регресії, що прогнозує Z з Y, має значення 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

проти:

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

Справа мультиколінеарності

Третій випадок, коли великі значення коефіцієнта можуть вводити в оману, був би у випадку значної багатоколінеарності між змінними. Як приклад, розглянемо набір даних, де X і Y сильно корелюються, але W не дуже корелює з іншими двома; ми намагаємось передбачити 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

Ці величини в значній мірі мають однакове середнє значення (0) і дисперсію (~ 1), а лінійна регресія призначає набагато більші значення коефіцієнта (в абсолютній величині) для X (приблизно 15) і Y (приблизно -16), ніж для W ( приблизно 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

І все-таки серед трьох змінних в моделі W є найважливішим: якщо ви вилучите W з повної моделі, R ^ 2 падає з 0,833 до 0,166, тоді як якщо ви випадаєте з X або Y, R ^ 2 практично не змінюється.


1
(+1) Я вважаю, що це хороша відповідь, і це потрібно зробити. З іншого боку, я вважаю, що можна багато сказати навіть тоді, коли змінні були стандартизовані (а значить, і без одиниць), тому є місце для ще кількох відповідей.
Метью Друрі

Дякую за відповідь. Хоча ваш текст тривалий, він не дуже ретельний, тому що ви робите висновки з невеликих синтетичних даних. Також R ^ 2 характерний для лінійної регресії. Я вважаю, що більш підходящим показником помилок є RMSE, або точність / F1 для проблем класифікації.
stackoverflowuser2010

1
Але, якщо ви масштабуєте дані в останньому прикладі, ви маєте на увазі, що єдиною значущою змінною є W
marcodena

11

"Важливість функції" - це дуже слизька концепція, навіть коли всі прогнози були пристосовані до загальної шкали (що саме по собі є нетривіальною проблемою у багатьох практичних програмах, що включають категоричні змінні або перекошені розподіли). Тож якщо ви уникнете проблем із масштабуванням, зазначених у відповіді @josliber, або проблеми з дисперсією із низьким рівнем прогнозування, порушеної @dsaxton, у вас все ще виникають додаткові проблеми.

Наприклад, більш корисною мірою важливості ознаки може бути відношення її коефіцієнта до оціночної похибки його коефіцієнта. Високий коефіцієнт з великою оцінною помилкою не обов'язково буде корисним для прогнозів. Тож коефіцієнт поодинці, навіть у попередньо розробленій ситуації, не є гарним посібником до "важливості".

Тим не менш, прогноктор може бути важливим, навіть якщо відношення його коефіцієнта до похибки є низьким (тобто воно не є "статистично значущим"). Лінійні моделі забезпечують можливість врахування декількох змінних предиктора одночасно, тому включення "несуттєвого" прогноктора в модель може поліпшити загальну ефективність, що забезпечується комбінованою колекцією прогнозів.

Крім того, спроби вибору "важливих" змінних прогнозника, як правило, сильно залежать від конкретного зразка даних і часто не поширюються на подальші вибірки, особливо якщо змінні є кореляційними. Ви можете переконатися в цьому, повторивши вибір функцій на кількох зразках завантажувального пристрою одного і того ж набору даних. У цій відповіді Френк Харрелл показує, як використовувати свій rmsпакет у R для визначення важливості функції рейтингу, і в цій відповіді зазначає, як використовувати завантажувальний інструмент, щоб отримати інтервали довіри для рангів. Завантаження даних може служити обережністю для тих, хто надає занадто велике значення "важливості функції".

Це питання майже 3 років тому, на яке вказував @amoeba, також детально розкриває труднощі, що мають важливе значення в моделях множинної регресії.


Коефіцієнт розрахункової помилки. Це відомий як "стандартизований коефіцієнт"?
HelloWorld

@StudentT " стандартизований коефіцієнт " - це коефіцієнт регресії, коли незалежні та залежні змінні масштабуються так, щоб вони мали одиничну дисперсію. Це не включає інформації про оцінну помилку в коефіцієнті. Я описую співвідношення - квадратний корінь статистики Вальда, що використовується Гарреллом як міра змінної важливості в першому моєму посиланні.
EdM

6

На додаток до попередньої відповіді, сам коефіцієнт також не вдається зафіксувати, наскільки мінливий показник, який має прогноз, що має великий вплив на те, наскільки він корисний при прогнозуванні. Розглянемо просту модель

Е(Yi)=α+βХi

де Хi є Бернуллі(p)випадкова величина. Приймаючиp0 ми також можемо надіслати корисність цього прогноктора до нуля, але коефіцієнт завжди буде β.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.