Haruskah saya menambahkan fitur perbedaan baru (z = x1-x2) ke dalam model?

Aug 17 2020

Baru-baru ini, saya memikirkan pertanyaan ini: haruskah saya menambahkan fitur baru berdasarkan perbedaan fitur mentah?

Pengaturan

Misalkan saya memiliki 50k data dan 20 fitur dan ini adalah tugas regresi. Dalam praktik ilmu data, kami biasanya menambahkan fitur baru berdasarkan fitur mentah. Namun, saya tidak tahu kapan kita harus menambahkan fitur baru z (z = x1 - x2) ke dalam model kita .

Pikiran saya

Inilah pemahaman saya: karena fitur akan dibuang ke dalam model, jadi apakah fitur berfungsi dengan baik bergantung pada fitur dan model.

Mari kita ambil regresi linier sebagai contoh:

head(mtcars)
fit1 = lm(mpg~ cyl+disp +hp +vs, data = mtcars)
summary(fit1)$adj.r.squared

data_add = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp)
fit2 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add)
summary(fit2)$adj.r.squared
summary(fit2)

add_noise <- function(n){
  res = NULL
  for(i in 1:n){
    data_add_noise = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp + rnorm(nrow(mtcars),0,1))
    fit3 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add_noise)
    res = c(res,summary(fit3)$adj.r.squared)
  }  
  return(mean(res))
}
add_noise(10000)

Keluaran:

> summary(fit1)$adj.r.squared [1] 0.7359967 > summary(fit2)$adj.r.squared
[1] 0.7359967
> add_noise(10000)
[1] 0.7359121

Dalam regresi linier, jika kita memasukkan z = x1-x2 ke dalam model kita, kita akan mendapatkan matriks desain tunggal, yang berarti R tidak akan menggunakan z untuk menyesuaikan koefisien. Dengan kata lain, fitur baru z tidak akan meningkatkan performa model kami.

Jika kita menggunakan z = x1- x2 + rnorm (n = 1, mean = 0, sd = 1) ke dalam model kita, kita akan menurunkan kinerja model kita karena kita memperkenalkan noise tambahan ke dalam model kita.

Namun, jika kita menggunakan model lgbm / xgboost / rf, karena model pohon membagi node berdasarkan informasi gain / rasio perolehan informasi / ketidakmurnian gini, fitur baru kita z = x1 - x2 dapat membantu kinerja model kita.

Ringkasan

Apakah kita harus menambahkan fitur perbedaan baru kita (z = x1- x2) ke dalam model kita tergantung pada model yang kita gunakan. Saya akan sangat berterima kasih melihat ide lain!

Jawaban

5 Sycorax Aug 17 2020 at 20:26

Karakteristik yang menentukan dari model linier adalah model tersebut linier. Ini berarti hasilnya$y$dimodelkan sebagai fungsi linier dari fitur bersuara$x_1, x_2$.

$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon $$

Misalkan kita menambahkan fitur tanpa suara $x_3=x_1 - x_2$. Jika kita melihat bagaimana model ini diekspresikan, jelaslah bahwa ini tidak ada bedanya dengan model asli kita.$$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2)+ \epsilon \\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2+ \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon \\ \end{align}$$ Dengan kata lain, koefisien pada $x_3$ tidak teridentifikasi dalam model ini karena merupakan kombinasi linier dari $x_1$ dan $x_2$.

Contoh Anda menggunakan kebisingan $x_3 = x_1 - x_2 + \eta$untuk menghindari non-identifikasi. Namun, ini berarti menambahkan koefisien untuk kebisingan tersebut$\eta$: $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2 + \eta) + \epsilon\\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2 + {\beta}_3\eta + \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 \eta + \epsilon \\ \end{align}$$

Dengan kata lain, kebisingan $\eta$adalah fitur ketiga yang disediakan untuk model. Kebisingan dianggap tidak berhubungan dengan$y$, jadi kita tahu bahwa efek sebenarnya dari $\eta$ di $y$nol; termasuk$\eta$ kemungkinan besar akan merusak prediksi kapan pun $\hat{\beta}_3 \neq 0$.

Kesimpulan : jangan menambahkan$x_1-x_2+\eta$ ke model regresi linier karena tidak memiliki informasi baru tentang $y$.


Model ansambel pohon (hutan acak, xgboost) adalah nonlinier: untuk setiap pemisahan biner, simpul anak menghasilkan fungsi konstan yang berbeda. Efek dari banyak pemisahan biner tersebut adalah untuk membagi ruang fitur menjadi sejumlah persegi panjang yang selaras dengan sumbu, masing-masing dengan perkiraan yang berbeda.

Banyak pemisahan biner yang disejajarkan dengan sumbu dapat mendekati batas kompleks dengan menggunakan bentuk yang lebih sederhana. Contoh klasiknya adalah mempertimbangkan tugas klasifikasi biner dengan batas keputusan linier yang sempurna$x_1 - x_2 > c$. Ini bermanifestasi sebagai perpecahan diagonal . Jelaslah bahwa pemisahan sejajar sumbu tunggal tidak dapat mendekati diagonal dengan baik, tetapi banyak pemisahan selaras sumbu, Anda dapat membuat bentuk "anak tangga" yang dapat mendekati diagonal secara sembarangan dengan baik . Demikian juga, hal yang sama berlaku untuk mendekati hubungan seperti logaritma, kuadrat, sinusoid, dll.

Di sisi lain, menambahkan fitur $x_1 - x_2$ ke kumpulan fitur dapat meningkatkan model karena pemisahan biner akan dapat memulihkan secara tepat $x_1 - x_2 > c$. Rekayasa fitur semacam ini dapat meningkatkan model jika Anda mengetahui sebelumnya bahwa fitur ini berguna. Di sisi lain, inti dari penggunaan model lanjutan seperti hutan acak atau pohon yang didorong adalah untuk memulihkan fungsi yang berguna saat kita tidak tahu persis bagaimana semua fitur terkait dengan hasil.

Kesimpulan : menambahkan$x_1 - x_2$ dapat meningkatkan model jika $x_1 - x_2 > c$ penting untuk $y$.

Informasi lebih lanjut: Konsekuensi penambahan kolom fitur yang diubah untuk hutan dan laso acak?