Untuk pengklasifikasi linier, apakah koefisien yang lebih besar menyiratkan fitur yang lebih penting?

15

Saya seorang insinyur perangkat lunak yang sedang mengerjakan pembelajaran mesin. Dari pemahaman saya, regresi linier (seperti OLS) dan klasifikasi linier (seperti regresi logistik dan SVM) membuat prediksi berdasarkan produk dalam antara koefisien terlatih dan variabel fitur x :wx

y^=f(wx)=f(sayawsayaxsaya)

Pertanyaan saya adalah: Setelah model telah dilatih (yaitu, setelah koefisien telah dihitung), apakah kasus bahwa koefisien akan lebih besar untuk variabel fitur yang lebih penting bagi model untuk memprediksi lebih akurat?wsaya

Dengan kata lain, saya bertanya apakah besaran relatif koefisien dapat digunakan untuk pemilihan fitur dengan hanya memesan variabel dengan nilai koefisien dan kemudian memilih fitur dengan koefisien tertinggi? Jika pendekatan ini valid, lalu mengapa tidak disebutkan untuk pemilihan fitur (bersama dengan metode wrapper dan filter, dll.).

Alasan saya menanyakan hal ini adalah karena saya menemukan diskusi tentang regularisasi L1 vs L2 . Ada uraian yang mengatakan:

Pemilihan fitur bawaan sering disebutkan sebagai properti berguna dari norma L1, yang tidak dimiliki oleh norma L2. Ini sebenarnya adalah hasil dari norma-L1, yang cenderung menghasilkan koefisien jarang (dijelaskan di bawah). Misalkan model memiliki 100 koefisien tetapi hanya 10 dari mereka memiliki koefisien nol, ini secara efektif mengatakan bahwa "90 prediktor lainnya tidak berguna dalam memprediksi nilai target".

Membaca yang tersirat, saya akan menebak bahwa jika koefisien mendekati 0, maka variabel fitur dengan koefisien tersebut harus memiliki daya prediksi yang kecil.

EDIT : Saya juga menerapkan penskalaan z untuk variabel numerik saya.

stackoverflowuser2010
sumber
1
Perhatikan bahwa kode yang mendasari analisis LASSO (norma-L1) dan regresi ridge (norma-L2) harus melakukan pra-skala variabel prediktor sebelum dianalisis, bahkan jika kode tersebut kemudian mengubah koefisien kembali ke skala variabel asli. Mereka yang menggunakan kode yang tidak melakukan pra-skala berakhir dengan masalah yang dicatat dalam jawaban dari @ josliber apakah mereka melakukan OLS, LASSO, atau ridge.
EdM
3
Saya pikir sesuatu yang layak disebutkan adalah, ketika Anda merenungkan apa yang ingin diungkapkan oleh frasa "maka variabel fitur dengan koefisien tersebut harus memiliki sedikit daya prediksi", dapatkah Anda menjelaskan apa yang sebenarnya dimaksud? Saya telah menemukan pengalaman bahwa konsep "kekuatan prediktif" dari variabel individu dalam model multivariat tidak secara umum menyetujui landasan konseptual.
Matthew Drury
4
Saya pikir kesalahan dalam pemikiran semacam itu adalah bahwa Anda mungkin tidak terbatas pada menghasilkan model satu variabel. Jika ya, dan Anda ingin memberikan model dengan akurasi terbaik, mereka yakin, itu adalah hal yang wajar untuk dilakukan. Jika Anda tidak, yaitu jika Anda akan menghasilkan model multivariat, maka, seperti jawaban @ EDM, konsep pentingnya variabel sangat, sangat licin, dan tidak memiliki landasan konseptual yang kuat. Sama sekali tidak jelas bahwa kekuatan prediktif dalam model univariat harus dilihat sebagai relevan dalam pengaturan multivariat.
Matthew Drury
1
@MatthewDrury: Saya tidak yakin mengapa Anda menghasilkan banyak fitur. Ada seluruh bidang "pemilihan fitur" (misalnya metode pembungkus) yang ada; apakah Anda menyarankan bahwa bidang ini tidak memiliki landasan konseptual yang kuat?
stackoverflowuser2010
1
@ stackoverflowuser2010 Yah, saya mungkin outlier menurut saya di sini, tapi itu akan menjadi deskripsi yang agak akurat dari perspektif saya.
Matthew Drury

Jawaban:

24

Tidak semuanya. Besarnya koefisien tergantung langsung pada skala yang dipilih untuk variabel, yang merupakan keputusan pemodelan agak sewenang-wenang.

Untuk melihat ini, pertimbangkan model regresi linier yang memprediksi lebar kelopak iris (dalam sentimeter) dengan panjang kelopak (dalam sentimeter):

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

Model kami mencapai nilai R ^ 2 yang disesuaikan dari 0,9266 dan memberikan nilai koefisien 0,415755 ke variabel Petal.Length.

Namun, pilihan untuk mendefinisikan Petal. Panjang dalam sentimeter cukup arbitrer, dan kita bisa mendefinisikan variabel dalam meter:

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

Tentu saja, ini tidak benar-benar mempengaruhi model yang dipasang dengan cara apa pun - kami hanya menetapkan koefisien 100x lebih besar untuk Petal. Panjang (41,57554) daripada yang kami lakukan untuk Petal. Panjang (0,415755). Semua sifat lain dari model (disesuaikan R ^ 2, t-statistik, nilai-p, dll) adalah identik.

Secara umum ketika memasang model linier yang teratur, pertama-tama orang akan menormalkan variabel (misalnya, memiliki mean 0 dan varians unit) untuk menghindari lebih menyukai beberapa variabel daripada yang lain berdasarkan skala yang dipilih.

Dengan asumsi Data Normalisasi

Bahkan jika Anda telah menormalkan semua variabel, variabel dengan koefisien yang lebih tinggi mungkin masih tidak berguna dalam prediksi karena variabel independen jarang ditetapkan (memiliki varian rendah). Sebagai contoh, pertimbangkan dataset dengan variabel dependen Z dan variabel bebas X dan Y yang mengambil nilai biner

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)

Dengan konstruksi, koefisien untuk Y kira-kira dua kali lebih besar dari koefisien untuk X ketika keduanya digunakan untuk memprediksi Z melalui regresi linier:

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

Namun, X menjelaskan lebih banyak varians dalam Z daripada Y (model regresi linier yang memprediksi Z dengan X memiliki nilai R ^ 2 0,2065, sedangkan model regresi linier yang memprediksi Z dengan Y memiliki nilai 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

melawan:

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

Kasus Multi-Collinearity

Kasus ketiga di mana nilai-nilai koefisien besar bisa menipu adalah dalam kasus multi-collinearity yang signifikan antara variabel. Sebagai contoh, pertimbangkan dataset di mana X dan Y sangat berkorelasi tetapi W tidak berkorelasi tinggi dengan dua lainnya; kami mencoba memprediksi 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

Variabel-variabel ini memiliki rata-rata (0) dan varians (~ 1) yang sama, dan regresi linier memberikan nilai koefisien yang jauh lebih tinggi (dalam nilai absolut) ke X (kira-kira 15) dan Y (kira-kira 16) daripada pada W ( kira-kira 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

Namun, di antara tiga variabel dalam model W adalah yang paling penting: Jika Anda menghapus W dari model penuh, R ^ 2 turun dari 0,833 menjadi 0,166, sedangkan jika Anda menjatuhkan X atau Y, R ^ 2 hampir tidak berubah.

Josliber
sumber
1
(+1) Saya pikir ini adalah jawaban yang bagus, dan poin ini harus dibuat. Di sisi lain, saya percaya ada banyak hal untuk dikatakan bahkan ketika variabel telah distandarisasi (dan karenanya, unit-less), jadi ada ruang untuk beberapa jawaban lagi.
Matthew Drury
Terima kasih atas jawabannya. Meskipun tulisan Anda panjang, itu tidak terlalu menyeluruh karena Anda menarik kesimpulan dari data sintetik kecil. Juga, R ^ 2 khusus untuk regresi linier. Saya percaya metrik kesalahan yang lebih tepat adalah RMSE, atau akurasi / F1 untuk masalah klasifikasi.
stackoverflowuser2010
1
TETAPI jika Anda skala data dalam contoh terakhir, Anda memiliki satu-satunya variabel signifikan adalah W
marcodena
11

"Fitur penting" adalah konsep yang sangat licin bahkan ketika semua prediktor telah disesuaikan dengan skala umum (yang dengan sendirinya merupakan masalah non-sepele dalam banyak aplikasi praktis yang melibatkan variabel kategori atau distribusi miring). Jadi, jika Anda menghindari masalah penskalaan yang ditunjukkan dalam jawaban oleh @josliber atau masalah varians-prediktor rendah yang dimunculkan oleh @dsaxton, Anda masih memiliki masalah tambahan.

Misalnya, ukuran kepentingan fitur yang lebih berguna mungkin adalah rasio koefisien terhadap estimasi kesalahan koefisiennya. Koefisien tinggi dengan perkiraan kesalahan besar tidak selalu membantu dalam prediksi. Jadi besarnya koefisien saja, bahkan dalam situasi pra-skala, bukan panduan yang baik untuk "kepentingan."

Namun demikian, prediktor mungkin penting bahkan jika rasio koefisien besarnya terhadap kesalahan rendah (yaitu, itu tidak "signifikan secara statistik"). Model linier memberikan kemampuan untuk mengambil beberapa variabel prediktor ke dalam akun secara bersamaan, sehingga memasukkan prediktor "tidak signifikan" dalam model dapat meningkatkan kinerja keseluruhan yang disediakan oleh kumpulan prediktor gabungan.

Selain itu, upaya untuk memilih variabel prediktor "penting" cenderung sangat tergantung pada sampel data tertentu dan sering tidak diperluas dengan baik ke sampel lebih lanjut, terutama jika variabel tersebut berkorelasi. Anda dapat melihatnya sendiri dengan mengulangi pemilihan fitur pada beberapa sampel bootstrap dari kumpulan data yang sama. Frank Harrell, dalam jawaban ini menunjukkan bagaimana menggunakan rmspaketnya di R untuk kepentingan fitur peringkat, dan mencatat dalam jawaban ini bagaimana menggunakan bootstrap untuk mendapatkan interval kepercayaan untuk peringkat. Bootstrapping dapat berfungsi sebagai peringatan bagi mereka yang terlalu mementingkan "fitur penting".

Pertanyaan ini dari hampir 3 tahun yang lalu, ditunjukkan oleh @amoeba, juga masuk ke detail yang luas tentang kesulitan dengan kepentingan fitur dalam model regresi berganda.

EdM
sumber
Rasio estimasi kesalahan. Apakah ini dikenal sebagai "koefisien standar"?
HelloWorld
@StudentT " koefisien standar " adalah koefisien regresi ketika semua variabel independen dan dependen telah diskalakan untuk memiliki varian unit. Itu tidak termasuk informasi tentang kesalahan estimasi dalam koefisien. Rasio yang saya jelaskan adalah akar kuadrat dari statistik Wald yang digunakan oleh Harrell sebagai ukuran variabel-penting pada tautan pertama saya.
EdM
6

Hanya untuk menambah jawaban sebelumnya, koefisien itu sendiri juga gagal untuk menangkap berapa banyak variabilitas yang diperlihatkan oleh seorang penaksir, yang memiliki efek besar pada seberapa bermanfaatnya dalam membuat prediksi. Pertimbangkan model sederhana

E(Ysaya)=α+βXsaya

dimana Xsaya adalah Bernoulli(hal)variabel acak. Dengan mengambilhal0 kita dapat mengirim kegunaan prediktor ini ke nol juga, tetapi koefisiennya akan selalu β.

dsaxton
sumber