Tujuan saya adalah mengklasifikasikan sinyal sensor. Konsep solusi saya sejauh ini adalah: i) Fitur teknik dari sinyal mentah ii) Memilih fitur yang relevan dengan ReliefF dan pendekatan pengelompokan iii) Menerapkan NN, Random Forest dan SVM
Namun saya terjebak dalam dilema. Dalam ii) dan iii), ada hiperparameter seperti k-Neigbours terdekat untuk ReliefF atau panjang jendela, yang di dalamnya sinyal sensor dievaluasi, atau jumlah unit tersembunyi di setiap lapisan NN
Ada 3 Masalah yang saya lihat di sini: 1) Parameter pemilihan fitur tuning akan mempengaruhi kinerja classifier 2) Mengoptimalkan hyperparameters dari classifier akan mempengaruhi pilihan fitur. 3) Mengevaluasi setiap kombinasi konfigurasi yang memungkinkan tidak dapat dilakukan.
Jadi pertanyaan saya adalah: a) Dapatkah saya membuat asumsi penyederhanaan, parameter pemilihan fitur tuning dapat dipisahkan dari parameter tuning classifier? b) Apakah ada solusi lain yang mungkin?
sumber
Jawaban:
Seperti yang telah Anda amati sendiri, pilihan fitur Anda (pemilihan fitur) dapat berdampak pada hyperparameters untuk algoritme Anda yang optimal, dan hyperparameter yang Anda pilih untuk algoritme Anda mungkin berdampak pada pilihan fitur mana yang optimal.
Jadi, ya, jika Anda benar-benar peduli untuk memeras setiap persen kinerja dari model Anda, dan Anda mampu membayar jumlah perhitungan yang diperlukan, solusi terbaik mungkin adalah melakukan pemilihan fitur dan penyetelan hyperparamter "pada saat yang sama". Itu mungkin tidak mudah (tergantung bagaimana Anda melakukan pemilihan fitur). Cara saya membayangkannya bekerja akan seperti memiliki set fitur yang berbeda sebagai kandidat, dan memperlakukan pemilihan satu set fitur dari semua set kandidat sebagai hyperparameter tambahan.
Dalam praktiknya itu mungkin tidak benar-benar layak. Secara umum, jika Anda tidak mampu mengevaluasi semua kombinasi yang mungkin, saya akan merekomendasikan:
Sangat longgar mengoptimalkan hiperparameter, hanya untuk memastikan Anda tidak menetapkan nilai yang sangat buruk untuk beberapa hiperparameter. Hal ini seringkali dapat dilakukan dengan tangan jika Anda memiliki pemahaman intuitif yang baik tentang hiperparameter Anda, atau dilakukan dengan prosedur optimasi hiperparameter yang sangat singkat menggunakan hanya beberapa fitur yang Anda tahu cukup baik jika tidak.
Pilihan fitur, dengan hyperparameter yang mungkin tidak 100% dioptimalkan tetapi setidaknya tidak terlalu buruk. Jika Anda setidaknya sudah memiliki algoritma pembelajaran mesin yang dikonfigurasi dengan cukup baik, memiliki fitur yang baik akan secara signifikan lebih penting untuk kinerja Anda daripada hiperparameter yang mengoptimalkan mikro. Contoh ekstrem: Jika Anda tidak memiliki fitur, Anda tidak dapat memprediksi apa pun. Jika Anda memiliki fitur curang yang berisi label kelas, Anda dapat dengan sempurna mengklasifikasikan semuanya.
Optimalkan hyperparameters dengan fitur yang dipilih pada langkah di atas. Ini harus menjadi set fitur yang baik sekarang, di mana sebenarnya mungkin sedikit mengoptimalkan hyperparams.
Untuk menjawab pertanyaan tambahan yang diposting Nikolas di komentar, menyimpulkan bagaimana semua hal ini (pemilihan fitur, optimasi hyperparameter) berinteraksi dengan validasi silang k-fold: Saya akan mengatakan itu tergantung.
Setiap kali Anda menggunakan data di salah satu lipatan untuk apa saja, dan kemudian mengevaluasi kinerja pada lipatan yang sama, Anda mendapatkan estimasi bias kinerja Anda (Anda akan melebih-lebihkan kinerja). Jadi, jika Anda menggunakan data di semua lipatan untuk langkah pemilihan fitur, dan kemudian mengevaluasi kinerja pada masing-masing lipatan tersebut, Anda akan mendapatkan estimasi kinerja yang bias untuk masing-masingnya (yang tidak baik). Demikian pula, jika Anda memiliki optimasi hiperparameter yang digerakkan oleh data dan menggunakan data dari lipatan tertentu (atau semua lipatan), dan kemudian mengevaluasi pada lipatan yang sama, Anda akan kembali mendapatkan estimasi kinerja yang bias. Solusi yang mungkin adalah:
Ulangi pipa lengkap dalam setiap lipatan secara terpisah (misalnya dalam setiap lipatan, lakukan pemilihan fitur + optimisasi hyperparameter dan model pelatihan). Melakukan ini berarti bahwa validasi silang k-fold memberi Anda perkiraan yang tidak bias tentang kinerja pipa lengkap ini .
Pisahkan dataset awal Anda menjadi '' dataset preprocessing '' dan '' train / dataset dataset ''. Anda dapat melakukan optimasi pemilihan fitur + hyperparameter Anda pada '' dataset preprocessing ''. Kemudian, Anda memperbaiki fitur dan hyperparameter yang Anda pilih, dan melakukan validasi silang k-fold pada '' train / test dataset ''. Melakukan hal ini berarti bahwa validasi k-fold cross memberi Anda perkiraan yang tidak bias dari kinerja algoritma ML Anda mengingat nilai fitur-set dan hyperparameter yang tetap .
Perhatikan bagaimana kedua solusi menghasilkan estimasi kinerja yang sedikit berbeda. Mana yang lebih menarik tergantung pada kasus penggunaan Anda, tergantung pada bagaimana Anda berencana untuk menggunakan solusi pembelajaran mesin Anda dalam praktiknya. Jika Anda, misalnya, perusahaan yang berniat memiliki saluran lengkap pemilihan fitur + optimisasi hyperparameter + pelatihan yang berjalan secara otomatis setiap hari / minggu / bulan / tahun / apa pun, Anda juga akan tertarik dengan kinerja yang lengkap pipa, dan Anda akan menginginkan solusi pertama.
Jika, di sisi lain, Anda hanya mampu melakukan pemilihan fitur + optimisasi hyperparameter satu kali dalam hidup Anda, dan setelah itu hanya secara teratur melatih kembali algoritma Anda (dengan nilai-nilai fitur-set dan nilai hyperparam tetap), maka kinerja hanya langkah itu yang akan membuat Anda tertarik, dan Anda harus mencari solusi kedua
sumber
Tidak ada pendekatan yang disebutkan yang membuat penyetelan hyper-parameter dan pemilihan fitur yang sama jadi saya akan membicarakannya. Untuk kasus ini, Anda harus merekayasa semua fitur yang Anda inginkan di awal dan memasukkan semuanya.
Penelitian sekarang di komunitas statistik telah mencoba menjadikan pemilihan fitur kriteria penyetelan. Pada dasarnya Anda menghukum seorang model sedemikian rupa sehingga insentif untuk memilih hanya beberapa fitur yang membantunya membuat prediksi terbaik. Tetapi Anda menambahkan parameter penyetelan untuk menentukan seberapa besar penalti yang harus Anda tanggung.
Dengan kata lain Anda mengizinkan model untuk memilih fitur untuk Anda dan Anda kurang lebih memiliki kendali atas jumlah fitur. Ini sebenarnya mengurangi perhitungan karena Anda tidak lagi harus memutuskan fitur mana tetapi berapa banyak fitur dan model melakukan sisanya.
Jadi ketika Anda melakukan validasi silang pada parameter maka Anda secara efektif melakukan validasi silang pada pemilihan fitur juga.
Sudah ada banyak model ML yang menggabungkan pemilihan fitur ini dalam beberapa cara.
Singkatnya, orang-orang telah mencoba untuk memasukkan penyetelan parameter dan pemilihan fitur secara bersamaan untuk mengurangi kerumitan dan dapat melakukan validasi silang.
sumber
Saya pikir Anda terlalu banyak berpikir di sana. Pemilihan fitur, yang merupakan bagian dari rekayasa fitur, biasanya membantu tetapi beberapa fitur yang berlebihan tidak banyak berbahaya pada tahap awal sistem pembelajaran mesin. Jadi praktik terbaiknya adalah Anda menghasilkan semua fitur yang berarti terlebih dahulu, kemudian menggunakannya untuk memilih algoritma dan model penyetelan, setelah menyetel model, Anda dapat memangkas set fitur atau memutuskan untuk menggunakan fitur baru.
Prosedur pembelajaran mesin sebenarnya merupakan proses iterasi, di mana Anda melakukan rekayasa fitur, kemudian coba dengan beberapa algoritma, lalu sesuaikan model dan kembali hingga Anda puas dengan hasilnya.
sumber