Feature selection adalah proses menyisakan fitur yang benar-benar berguna dari kumpulan yang besar. Menghapus fitur yang tidak relevan membantu mencegah overfitting, mempercepat komputasi, dan meningkatkan interpretasi.
1. Mengapa perlu feature selection? #
- Mencegah overfitting: fitur berisik menurunkan akurasi.
- Meningkatkan efisiensi: fitur lebih sedikit, training dan inferensi lebih cepat.
- Interpretabilitas lebih baik: lebih jelas fitur apa yang dipakai model.
2. Tiga pendekatan utama #
2.1 Metode filter #
- Menilai fitur berdasarkan kriteria statistik.
- Ringan karena tidak melatih model.
Contoh:
- Korelasi
- Uji χ²
- Mutual information
from sklearn.feature_selection import chi2, SelectKBest
X_new = SelectKBest(score_func=chi2, k=5).fit_transform(X, y)
2.2 Metode wrapper #
- Melatih model dan memilih fitur berdasarkan performa.
- Contoh:
- Sequential Forward Selection (SFS)
- Sequential Backward Selection (SBS)
⚠️ Catatan
- SFS/SBS melibatkan training berulang dan keputusan manual, sehingga rawan bias dan overfitting.
- Pada data besar, biaya komputasi bisa tinggi.
2.3 Metode embedded #
- Memanfaatkan pentingnya fitur yang muncul selama training.
- Efisien karena seleksi terjadi dalam satu run.
Contoh:
- Regularisasi L1 (Lasso)
Menghapus koefisien yang tidak penting. - Model berbasis pohon (Random Forest, XGBoost)
feature_importances_untuk melihat pentingnya fitur.
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1).fit(X, y)
selected = model.coef_ != 0
3. Catatan praktis #
- Jangan lakukan feature selection sebelum split train/test agar tidak terjadi leakage.
- Untuk data berdimensi tinggi (gen, teks), ini adalah langkah wajib.
- Pertimbangkan interpretabilitas, bukan hanya akurasi.
Ringkasan #
- Feature selection meningkatkan akurasi, efisiensi, dan interpretabilitas.
- Metode utama: filter, wrapper, embedded.
- SFS/SBS mudah dipahami namun berisiko bias dan overfitting.
- Di praktik, embedded (Lasso, model pohon) paling sering dipakai.