Apakah kita masih perlu melakukan pemilihan fitur saat menggunakan algoritma Regularisasi?

20

Saya punya satu pertanyaan berkenaan dengan kebutuhan untuk menggunakan metode pemilihan fitur (Acak fitur nilai pentingnya hutan atau metode pemilihan fitur Univariat dll) sebelum menjalankan algoritma pembelajaran statistik.

Kami tahu untuk menghindari overfitting, kami dapat menerapkan penalti regularisasi pada vektor bobot.

Jadi jika saya ingin melakukan regresi linier, maka saya bisa memperkenalkan L2 atau L1 atau bahkan parameter regularisasi net. Untuk mendapatkan solusi yang jarang, penalti L1 membantu dalam pemilihan fitur.

Lalu apakah masih diperlukan untuk melakukan pemilihan fitur sebelum menjalankan regresi regularisasi L1 seperti Lasso ?. Secara teknis Lasso membantu saya mengurangi fitur dengan penalti L1 lalu mengapa pemilihan fitur diperlukan sebelum menjalankan algo?

Saya membaca sebuah artikel penelitian yang mengatakan bahwa melakukan Anova maka SVM memberikan kinerja yang lebih baik daripada menggunakan SVM saja. Sekarang pertanyaannya adalah: SVM secara inheren melakukan regularisasi menggunakan norma L2. Untuk memaksimalkan margin, meminimalkan norma vektor bobot. Jadi ia melakukan regularisasi dalam fungsi objektifnya. Maka secara teknis algoritma seperti SVM tidak boleh diganggu dengan metode pemilihan fitur ?. Tetapi laporan itu masih mengatakan melakukan pemilihan Fitur Univariat sebelum SVM normal lebih kuat.

Adakah yang punya pikiran?

Baktaawar
sumber
Satu pertanyaan yang akan saya ajukan adalah bagaimana cara regularisasi SVM bekerja dengan metode kernel? Reg norma L2 bergantung pada input yang dinormalisasi. Namun jika Anda menggunakan kernel (mis. Polinomial) maka input efektif Anda (yaitu polinomial powers) tidak lagi dinormalisasi.
seanv507

Jawaban:

17

Pemilihan fitur kadang-kadang meningkatkan kinerja model yang diregulasi, tetapi dalam pengalaman saya itu umumnya membuat kinerja generalisasi lebih buruk. Alasan untuk ini adalah bahwa semakin banyak pilihan yang kita buat mengenai model kita (termasuk nilai-nilai parameter, pilihan fitur, pengaturan parameter-hyper, pilihan kernel ...), semakin banyak data yang perlu kita buat pilihan ini andal. Secara umum kami membuat pilihan-pilihan ini dengan meminimalkan beberapa kriteria yang dievaluasi pada set data yang terbatas, yang berarti bahwa kriteria tersebut pasti memiliki varian yang tidak nol. Akibatnya, jika kita meminimalkan kriteria terlalu agresif, kita dapat menyesuaikannya, yaitu kita dapat membuat pilihan yang meminimalkan kriteria karena fitur yang bergantung pada sampel tertentu yang dievaluasi, daripada karena akan menghasilkan peningkatan kinerja yang tulus.

Sekarang SVM adalah perkiraan penerapan terikat pada kinerja generalisasi yang tidak tergantung pada dimensi, jadi pada prinsipnya, kita dapat mengharapkan kinerja yang baik tanpa pemilihan fitur, asalkan parameter regularisasi dipilih dengan benar. Sebagian besar metode pemilihan fitur tidak memiliki "jaminan" kinerja seperti itu.

Untuk metode L1, saya pasti tidak akan repot dengan pemilihan fitur, karena kriteria L1 umumnya efektif dalam memangkas fitur. Alasan efektif adalah karena menginduksi pemesanan di mana fitur masuk dan keluar dari model, yang mengurangi jumlah pilihan yang tersedia dalam memilih fitur, dan karenanya kurang rentan terhadap pemasangan berlebihan.

Alasan terbaik untuk pemilihan fitur adalah untuk mengetahui fitur mana yang relevan / penting. Alasan terburuk untuk pemilihan fitur adalah untuk meningkatkan kinerja, untuk model yang diatur, umumnya itu membuat segalanya menjadi lebih buruk. Namun, untuk beberapa set data, ini dapat membuat perbedaan besar, jadi hal terbaik yang harus dilakukan adalah mencobanya dan menggunakan skema evaluasi kinerja yang kuat dan tidak bias (mis. Validasi silang bersarang) untuk mengetahui apakah Anda adalah salah satu dari set data tersebut.

Dikran Marsupial
sumber
Apa yang Anda maksud dengan valdiasi lintas bersarang? Apakah ini menerapkan validasi k-fold cross N kali?
yasin.yazici
5

jβ^j=.0001β^j=0

Namun, masih ada alasan untuk sepenuhnya menghapus variabel.

  1. Terkadang tujuannya bukan akurasi prediksi tetapi penjelasan dari fenomena dunia. Terkadang Anda ingin tahu variabel apa yang dilakukan dan tidak memengaruhi variabel dependen tertentu. Dalam situasi semacam ini, model pelit adalah cara yang disukai untuk memahami dan menafsirkan
  2. β^j
  3. Alasan komputasi - model dengan variabel yang lebih sedikit umumnya berjalan lebih cepat dan Anda tidak perlu menyimpan data untuk variabel-variabel asing tersebut.
TrynnaDoStat
sumber
2
Hai TrynnaDoStat, saya sangat setuju dengan poin Anda 1 dan 3. Tapi argumen 2 tidak benar-benar mencapai sasaran. Jika Anda melakukan pemilihan fitur dengan set data yang sama, Anda juga memiliki risiko untuk memilih set fitur yang salah. Karena satu variabel acak mungkin berkorelasi baik dengan variabel sasaran dalam data.
gstar2002
β^j
0

Saya tidak berpikir overfitting adalah alasan bahwa kami membutuhkan pemilihan fitur di tempat pertama. Faktanya, overfitting adalah sesuatu yang terjadi jika kita tidak memberikan data yang cukup kepada model kita, dan pemilihan fitur semakin mengurangi jumlah data yang kita lewati algoritma kita.

Saya lebih suka mengatakan bahwa pemilihan fitur diperlukan sebagai langkah preprocessing untuk model yang tidak memiliki kekuatan untuk menentukan pentingnya fitur pada mereka sendiri, atau untuk algoritma yang menjadi jauh lebih efisien jika mereka harus melakukan bobot penting ini sendiri. .

Ambil contoh algoritma tetangga terdekat k-terdekat berdasarkan jarak Euclidean. Itu akan selalu melihat semua fitur memiliki bobot yang sama atau penting untuk klasifikasi akhir. Jadi, jika Anda memberikan 100 fitur tetapi hanya tiga di antaranya yang relevan untuk masalah klasifikasi Anda, maka semua suara dari fitur tambahan ini akan sepenuhnya menghilangkan informasi dari tiga fitur penting, dan Anda tidak akan mendapatkan prediksi yang berguna. Jika Anda menentukan fitur-fitur penting sebelumnya dan hanya mengirimkannya ke pengklasifikasi, itu akan bekerja lebih baik (belum lagi lebih cepat).

Di sisi lain, lihatlah pengelompokan hutan acak. Saat pelatihan, secara otomatis akan menentukan fitur mana yang paling berguna dengan menemukan pemisahan optimal dengan memilih dari subset dari semua fitur. Karena itu, akan jauh lebih baik dalam menyaring 97 fitur yang tidak berguna untuk menemukan tiga yang bagus. Tentu saja, itu masih akan berjalan lebih cepat jika Anda melakukan seleksi sebelumnya, tetapi kekuatan klasifikasinya biasanya tidak akan terlalu menderita dengan memberikannya banyak fitur tambahan, bahkan jika mereka tidak relevan.

Akhirnya, lihatlah jaringan saraf. Sekali lagi, ini adalah model yang memiliki kekuatan untuk mengabaikan fitur yang tidak relevan, dan pelatihan dengan backpropagation biasanya akan menyatu untuk menggunakan fitur yang menarik. Namun, diketahui bahwa algoritma pelatihan standar bertemu lebih cepat jika input "diputihkan", yaitu, diskalakan ke varian unit dan dengan korelasi silang yang dihapus (LeCun et al, 1998) . Oleh karena itu, meskipun Anda tidak benar-benar perlu melakukan pemilihan fitur, itu dapat membayar dalam hal kinerja murni untuk melakukan preprocessing dari data input.

Jadi secara ringkas, saya akan mengatakan pemilihan fitur kurang berhubungan dengan overfitting dan lebih dengan meningkatkan kekuatan klasifikasi dan efisiensi komputasi dari metode pembelajaran. Berapa banyak yang dibutuhkan tergantung banyak pada metode yang dimaksud.

cfh
sumber
3
(1) Saya tidak setuju dengan proposisi pertama Anda. Pemilihan fitur tidak mengurangi jumlah data tetapi mengurangi jumlah fitur. Jumlah instance (sampel) tetap sama, dan dapat membantu overfitting karena, pengklasifikasi memerlukan lebih sedikit parameter (jika itu adalah model parametrik) agar sesuai dengan data. Lebih sedikit parameter berarti lebih sedikit kekuatan representasi, jadi lebih kecil kemungkinannya untuk memakai berlebihan. (2) Apa jenis algoritma pemilihan fitur yang Anda sebutkan untuk digunakan sebelum KNN? Bagaimana ia mengetahui fitur mana yang lebih efektif?
yasin.yazici
@ yasin.yazici: Katakanlah Anda melakukan klasifikasi digit tulisan tangan dan Anda membuang semua kecuali piksel paling kiri atas. Bukankah Anda hanya mengurangi jumlah data yang Anda miliki?
cfh
@chf Tidak, ini hanya mengurangi sejumlah fitur. Jangan bilang dataset adalah MNIST ada 784 fitur untuk setiap sampel dan 60000 sampel. Jika Anda membuang sebagian fitur Anda, Anda masih memiliki 60000 sampel.
yasin.yazici
@ yasin.yazici: Maksud saya adalah, jumlah sampel tidak sama dengan jumlah data. Data adalah seluruh matriks "sampel x fitur".
cfh
Pemilihan fitur dapat (dan seringkali akan) sesuai. Jika Anda menggunakan pelajar yang diatur dan tidak peduli tentang pentingnya fitur, maka, kecuali jika Anda memiliki banyak data dan skema validasi yang kuat, saya tidak melihat banyak gunanya untuk pemilihan fitur.
Firebug
0

Saya pikir jika Anda tidak memiliki jumlah titik data yang cukup untuk mengoptimalkan parameter, Anda dapat melakukan pemilihan fitur untuk menghapus beberapa variabel. Tetapi saya tidak akan menyarankan melakukan terlalu banyak karena Anda dapat kehilangan sinyal yang ingin Anda modelkan.

Plus mungkin ada fitur-fitur tertentu yang tidak Anda inginkan dalam model Anda berdasarkan pada pemahaman bisnis yang mungkin ingin Anda hapus.

DeepakML
sumber
0

Dalam kasus laso, preprocessing data untuk menghapus fitur gangguan sebenarnya cukup umum. Untuk makalah baru-baru ini membahas cara untuk melakukan ini, silakan lihat Tes Skrining Xiang et al untuk Masalah Lasso . Motivasi umum yang disebutkan dalam makalah yang saya lihat adalah mengurangi beban komputasi dalam menghitung solusi.

pengguna795305
sumber