Tutorial 14: Masterclass Rekayasa Fitur (Feature Engineering)
Daftar Isi
Pendahuluan
Rekayasa fitur secara luas dianggap sebagai aktivitas paling berdampak dalam machine learning terapan. Meskipun arsitektur model dan tuning hyperparameter mendapat perhatian signifikan, kualitas dan daya ekspresif fitur input Anda-lah yang pada akhirnya menentukan performa model. Fitur yang direkayasa dengan baik dapat membuat model linear sederhana mengungguli jaringan neural dalam yang fiturnya buruk.
Masterclass ini mencakup spektrum lengkap teknik rekayasa fitur: dari transformasi numerik fundamental dan strategi encoding kategorikal hingga ekstraksi datetime tingkat lanjut, vektorisasi teks, dan pembuatan fitur otomatis. Setiap teknik didemonstrasikan dengan kode Python siap produksi dan panduan praktis tentang kapan dan bagaimana menerapkannya.
Prasyarat
- Python 3.9 atau lebih tinggi
- Pemahaman solid tentang pandas dan NumPy
- Pengetahuan dasar machine learning (klasifikasi, regresi)
- Instal paket yang diperlukan:
pip install pandas numpy scikit-learn categoryencoders featuretools scipy nltk sentence-transformers
Mengapa Rekayasa Fitur Penting
Bayangkan sebuah dataset dengan kolom tanggallahir. Memberikan string tanggal mentah ke model tidak ada artinya. Namun merekayasa fitur seperti usia, bulanlahir, lahirdiakhirpekan, atau kohortgenerasi dari satu kolom tersebut menciptakan sinyal yang sangat informatif. Inilah esensi rekayasa fitur: mengubah data mentah menjadi representasi yang menangkap pola-pola mendasar yang perlu dipelajari model.
Prinsip-prinsip utama:
- Pengetahuan domain adalah aset terbesar Anda. Memahami konteks bisnis membantu Anda membuat fitur yang tidak bisa ditemukan oleh alat otomatis mana pun.
- Kesederhanaan menang. Beberapa fitur yang dipilih dengan baik sering mengungguli ratusan fitur yang berisik.
- Hindari kebocoran data. Jangan pernah menggunakan informasi dari masa depan atau variabel target selama pembuatan fitur.
Transformasi Fitur Numerik
Penskalaan dan Normalisasi
Banyak algoritma (SVM, KNN, neural networks, regresi terregularisasi) sensitif terhadap skala fitur. Penskalaan memastikan semua fitur berkontribusi secara setara.
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
Data sampel
df = pd.DataFrame({
'pendapatan': [30000, 45000, 120000, 55000, 250000, 80000],
'usia': [22, 35, 45, 28, 60, 40],
'jumlahtransaksi': [5, 120, 450, 30, 800, 200],
})
StandardScaler: rata-rata nol, varians satuan (terbaik untuk data terdistribusi normal)
standardscaler = StandardScaler()
df['pendapatanstandard'] = standardscaler.fittransform(df[['pendapatan']])
MinMaxScaler: skala ke rentang [0, 1] (terbaik saat membutuhkan nilai terbatas)
minmaxscaler = MinMaxScaler()
df['pendapatanminmax'] = minmaxscaler.fittransform(df[['pendapatan']])
RobustScaler: menggunakan median dan IQR (terbaik untuk data dengan outlier)
robustscaler = RobustScaler()
df['pendapatanrobust'] = robustscaler.fittransform(df[['pendapatan']])
print(df[['pendapatan', 'pendapatanstandard', 'pendapatanminmax', 'pendapatanrobust']])