Bagaimana cara membandingkan kinerja metode pemilihan fitur?


10

Ada beberapa pendekatan pemilihan fitur / pemilihan variabel (lihat misalnya Guyon & Elisseeff, 2003 ; Liu et al., 2010 ):

  • metode filter (misalnya, berbasis korelasi, berbasis entropi, berbasis kepentingan hutan acak),
  • metode pembungkus (misalnya, pencarian maju, pencarian mendaki bukit), dan
  • metode tertanam di mana pemilihan fitur adalah bagian dari pembelajaran model.

Banyak algoritma yang dipublikasikan juga diimplementasikan dalam alat pembelajaran mesin seperti R, Python, dll.

Apa yang akan menjadi metode yang tepat untuk membandingkan berbagai algoritma pemilihan fitur dan untuk memilih metode terbaik untuk masalah / dataset yang diberikan? Pertanyaan selanjutnya adalah, apakah ada metrik yang diketahui yang mengukur kinerja algoritma pemilihan fitur?

Jawaban:


4

Ini adalah masalah yang sulit dan para peneliti membuat banyak kemajuan.

Jika Anda sedang mencari diawasi seleksi fitur, saya akan merekomendasikan Lasso dan variannya. Evaluasi algoritma sangat mudah dengan pembelajaran terbimbing: kinerja metrik mana pun yang Anda pilih pada data uji.

Dua peringatan utama dari LASSO adalah bahwa (1) fitur yang dipilih tidak akan secara otomatis mendeteksi interaksi, sehingga Anda harus membuat semua fitur Anda secara apriori (yaitu, sebelum menjalankannya melalui model) dan (2) LASSO tidak akan mengidentifikasi non -Linier hubungan (misalnya, hubungan kuadratik ).

Cara untuk mencoba dan melewati dua peringatan ini adalah dengan menggunakan Gradient Boosted Machines yang melakukan pemilihan fitur secara otomatis. Perlu dicatat bahwa sifat statistik GBM sedikit lebih ambigu daripada LASSO.

Jika Anda mencari pemilihan fitur tanpa pengawasan, tampaknya ada pendekatan regularisasi serupa yang digunakan oleh para peneliti ini , tetapi evaluasi dalam kasus khusus ini menjadi kurang jelas. Orang-orang mencoba banyak hal yang berbeda seperti PCA / SVD atau K-Means yang pada akhirnya akan mencoba menemukan pendekatan linier terhadap data.

Dalam hal itu, ukuran kinerja yang umum adalah kesalahan rekonstruksi atau RMSE dari kluster.

Dalam hal perangkat lunak, R dan Python keduanya memiliki GBM, LASSO, K-Means, SVD, dan PCA. GLMNET dan XGBoost di R dan Sklearn untuk Python adalah pustaka yang relevan.


1

Saya selalu mempertimbangkan pemilihan fitur sebagai langkah menuju hasil akhir.

Di bawah ini, saya entah bagaimana mencampur pemilihan fitur dan pengurangan dimensi, yang mungkin memiliki beberapa tujuan dan dapat membingungkan.

Beberapa kegunaan khas:

  • pengurangan perhitungan dalam pembelajaran mesin: kualitas seleksi merupakan faktor dari hasil pembelajaran akhir dan juga, jelas, kecepatan untuk menyelesaikan pembelajaran

  • visualisasi / pemahaman data, di mana Anda akhirnya menggabungkan beberapa dimensi. Itu bagus saat tidak menyembunyikan barang menarik, dan saat itu bisa dimengerti

  • penyederhanaan hasil pembelajaran, masih untuk membuatnya dapat dimengerti (misalnya analisis akar penyebab). Bagus jika sederhana tetapi masih mencukupi dari segi kualitas

  • mengendalikan over fitting, seperti yang disarankan oleh jawaban sebelumnya

  • ...

Jadi, saya tidak berpikir ada aturan umum (seperti biasa dalam ML), tetapi ini adalah masalah per kasus.

Hanya keyakinan pribadi ...


0

Ini sangat tergantung pada situasi spesifik dan masalah yang ingin Anda pecahkan. Ada beberapa aturan umum, misalnya metode pembungkus lebih fleksibel dan juga lebih rentan terhadap overfitting.

Kinerja pemilihan fitur dapat dievaluasi dengan kinerja keseluruhan tugas belajar, misalnya seseorang dapat memilih fitur dengan metode yang berbeda dan kemudian menggunakan set fitur yang berbeda ini untuk klasifikasi dan membandingkan ketepatan dari pengklasifikasi yang diperoleh.

Faktor penting lainnya dalam beberapa skenario seperti beberapa aplikasi biologis adalah kemampuan menafsirkan fitur yang dipilih dan hasilnya, misalnya dalam masalah pengelompokan, makna fitur yang dipilih dan cluster yang dihasilkan adalah ukuran kinerja yang sangat penting.


0

Anda harus menjalankan serangkaian tes buatan, mencoba mendeteksi fitur yang relevan menggunakan metode yang berbeda sambil mengetahui sebelumnya subset variabel input mana yang mempengaruhi variabel output.

Trik yang baik adalah menjaga satu set variabel input acak dengan distribusi yang berbeda dan pastikan pemilihan fitur Anda juga menandai mereka sebagai tidak relevan.

Trik lain adalah memastikan bahwa setelah mengubah baris, variabel yang ditandai sebagai relevan berhenti diklasifikasikan sebagai relevan.

Di atas kata berlaku untuk kedua pendekatan filter dan pembungkus.

Pastikan juga untuk menangani kasus ketika jika diambil secara terpisah (satu per satu) variabel tidak menunjukkan pengaruh pada target, tetapi ketika diambil secara bersama-sama mengungkapkan ketergantungan yang kuat. Contoh akan menjadi masalah XOR yang terkenal (lihat kode Python):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

Keluaran:

Ilustrasi Python 3 XOR

[0. 0. 0,00429746]

Jadi, mungkin metode penyaringan yang kuat (tetapi univariat) (komputasi informasi timbal balik antara variabel keluaran dan input) tidak dapat mendeteksi hubungan apa pun dalam dataset. Padahal kita tahu pasti itu adalah ketergantungan 100% dan kita bisa memprediksi Y dengan akurasi 100% mengetahui X.

Ide bagus adalah membuat semacam tolok ukur untuk metode pemilihan fitur, apakah ada yang mau berpartisipasi?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.