×

Mengenal Feature Scaling: Kapan dan Mengapa Perlu Dilakukan

Ilustrasi meja data scientist dengan laptop menampilkan scatter plot fitur berbeda skala dan catatan rumus scaling

Mengenal Feature Scaling: Kapan dan Mengapa Perlu Dilakukan

Anda punya dataset dengan dua fitur: usia berkisar 20-60 dan pendapatan tahunan berkisar 50 juta hingga 500 juta. Model kNN yang Anda latih memberi prediksi aneh, seolah pendapatan mendominasi segalanya. Ini contoh klasik betapa feature scaling dalam machine learning bukan sekadar formalitas. Tanpa penskalaan, fitur dengan rentang besar bisa menenggelamkan fitur lain yang sebenarnya sama pentingnya.

Scaling mengubah rentang nilai fitur agar sebanding, sehingga algoritma yang sensitif terhadap jarak atau gradien bisa bekerja sebagaimana mestinya. Tapi tidak semua model membutuhkannya, dan memilih metode yang salah justru bisa merusak data.

Apa Itu Feature Scaling dan Mengapa Penting?

Feature scaling adalah proses menyesuaikan skala nilai numerik agar memiliki rentang atau distribusi tertentu. Tujuannya sederhana: membuat setiap fitur memberi kontribusi yang seimbang saat model menghitung jarak, gradien, atau bobot. Tanpa scaling, fitur dengan nilai ratusan juta akan mendominasi perhitungan jarak dibanding fitur yang hanya bernilai puluhan.

Bayangkan Anda mengukur kemiripan dua rumah berdasarkan luas tanah (m²) dan jumlah kamar. Selisih luas 50 m² dan selisih satu kamar akan dianggap setara oleh model jika tidak diskalakan, padahal keduanya punya arti berbeda. Scaling menyelaraskan satuan sehingga perbandingan menjadi lebih adil.

Algoritma yang berbasis jarak seperti K-Nearest Neighbors, Support Vector Machine dengan kernel RBF, dan K-Means sangat bergantung pada skala fitur. Begitu juga model berbasis gradien seperti regresi linear dengan regularisasi (Lasso, Ridge) dan neural network. Sementara itu, algoritma berbasis pohon seperti Random Forest dan Gradient Boosting umumnya tidak terpengaruh scaling karena mereka mempartisi data berdasarkan ambang batas per fitur, bukan jarak.

Kapan Feature Scaling Perlu dan Tidak Perlu?

Pertanyaan pertama yang muncul: apakah semua model butuh scaling? Jawabannya tidak. Berikut panduan cepatnya.

  • Perlu scaling: kNN, SVM, K-Means, PCA, neural network, regresi dengan regularisasi, dan algoritma yang menggunakan gradient descent.
  • Tidak perlu scaling: Decision Tree, Random Forest, XGBoost, LightGBM, dan algoritma berbasis pohon lainnya.
  • Perlu pertimbangan: regresi linear tanpa regularisasi tidak wajib scaling, tetapi scaling bisa memudahkan interpretasi koefisien jika fitur memiliki satuan berbeda.

Jika Anda masih bingung memilih algoritma, artikel Panduan Memilih Algoritma Machine Learning untuk Pemula bisa membantu memetakan kebutuhan scaling berdasarkan karakteristik model.

Metode Feature Scaling yang Umum Dipakai

Ada beberapa teknik scaling, masing-masing cocok untuk kondisi data yang berbeda. Memilih metode yang tepat sama pentingnya dengan memutuskan apakah perlu scaling.

1. Standardisasi (Z-score Normalization)

Metode ini mengubah data sehingga memiliki rata-rata 0 dan standar deviasi 1. Rumusnya: (x – μ) / σ. Standardisasi cocok ketika fitur mengikuti distribusi mendekati normal dan Anda ingin mempertahankan informasi tentang seberapa jauh nilai dari rata-rata. Metode ini juga relatif aman terhadap outlier karena tidak membatasi rentang secara kaku, meskipun outlier ekstrem tetap bisa memengaruhi nilai rata-rata dan standar deviasi.

2. Min-Max Scaling

Min-Max mengubah data ke rentang [0, 1] dengan rumus: (x – min) / (max – min). Cocok untuk data yang tidak memiliki outlier signifikan dan ketika Anda membutuhkan rentang yang pasti, misalnya untuk input neural network. Kelemahannya, satu outlier bisa memampatkan sebagian besar data ke rentang sempit.

3. Robust Scaling

Menggunakan median dan interquartile range (IQR) sehingga lebih tahan terhadap outlier. Rumusnya: (x – median) / IQR. Pilihan baik jika data mengandung banyak outlier dan Anda tidak ingin membuangnya. Artikel 7 Kesalahan Umum Saat Menyiapkan Dataset Machine Learning membahas lebih lanjut tentang penanganan outlier sebelum scaling.

4. Normalisasi Vektor (L2)

Setiap sampel diskalakan sehingga norma vektornya sama dengan 1. Teknik ini sering dipakai dalam pemrosesan teks atau ketika arah vektor lebih penting daripada magnitudonya.

Kesalahan yang Sering Terjadi Saat Scaling

Meskipun terdengar sederhana, ada beberapa jebakan yang kerap menjatuhkan praktisi.

  • Melakukan scaling pada seluruh dataset sebelum split. Ini menyebabkan kebocoran informasi dari data uji ke data latih. Parameter scaling (rata-rata, standar deviasi, min, max) harus dihitung hanya dari data latih, lalu diterapkan ke data uji.
  • Menskalakan data uji secara terpisah. Data uji harus menggunakan parameter yang sama dengan data latih. Jika tidak, skala akan berbeda dan model gagal mengenali pola.
  • Menskalakan fitur yang tidak perlu. Fitur biner (0/1) atau data kategorikal yang sudah di-one-hot encoding tidak perlu diskalakan karena sudah berada dalam rentang seragam. Untuk data kategorikal, lihat Cara Menangani Data Kategorikal dengan One-Hot Encoding.
  • Lupa menskalakan saat inference. Saat model digunakan untuk memprediksi data baru, terapkan parameter scaling yang sama seperti saat pelatihan. Simpan parameter tersebut bersama model.

Menerapkan Scaling dalam Pipeline

Cara paling aman adalah memasukkan scaling ke dalam pipeline scikit-learn. Dengan begitu, scaling otomatis diterapkan pada data latih dan data uji tanpa risiko kebocoran. Berikut contohnya:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('knn', KNeighborsClassifier(n_neighbors=5))
])

pipeline.fit(X_train, y_train)
print(pipeline.score(X_test, y_test))

Pipeline memastikan scaler hanya di-fit pada data latih, lalu transformasi diterapkan ke data uji. Jika Anda melakukan hyperparameter tuning, scaling juga harus berada di dalam pipeline agar tidak terjadi kebocoran saat cross-validation. Untuk strategi tuning yang sistematis, baca Hyperparameter Tuning: Cara Sistematis Mencari Setelan Model.

Selain pipeline, Anda mungkin perlu menyimpan parameter scaling untuk digunakan di lingkungan produksi. Jika model disimpan ke database, pastikan scaler juga tersimpan. Artikel Cara Menyimpan Data ke Database dari Pipeline ML mengulas cara menyimpan artefak pipeline dengan rapi.

Dalam pengembangan aplikasi web yang memanfaatkan model, konsistensi scaling menjadi kunci. Saat membangun antarmuka pengguna, Anda mungkin menggunakan jQuery untuk mengirim data ke endpoint prediksi. Pastikan data yang dikirim sudah melalui preprocessing yang sama. Jika Anda baru mulai dengan jQuery, ada baiknya membaca Memulai jQuery: Tips Praktis untuk Pemula dari Nol agar alur pengiriman data berjalan lancar.

Di sisi lain, jika proyek machine learning Anda melibatkan perangkat IoT, data dari sensor sering kali memiliki skala yang sangat berbeda. Misalnya, sensor suhu membaca 20-30°C sementara sensor tekanan membaca 900-1100 hPa. Scaling menjadi penting sebelum data masuk ke model. Untuk urusan menghubungkan sensor ke perangkat, panduan seperti Panduan Langkah demi Langkah Menghubungkan Sensor ke Mikrokontroler bisa menjadi referensi dalam merangkai dan membaca data sensor.

Ringkasan

Feature scaling adalah langkah preprocessing yang menentukan performa model berbasis jarak dan gradien. Standardisasi cocok untuk data mendekati normal, Min-Max untuk rentang pasti tanpa outlier, dan Robust Scaling untuk data dengan outlier. Selalu hitung parameter scaling dari data latih dan terapkan konsisten ke data uji serta data baru. Bungkus scaling dalam pipeline agar aman dari kebocoran data.

Pertanyaan yang Sering Diajukan

Apakah feature scaling wajib untuk semua model machine learning?

Tidak. Model berbasis pohon seperti Random Forest dan Gradient Boosting tidak memerlukan scaling karena mereka mempartisi data berdasarkan ambang batas per fitur. Scaling diperlukan untuk model yang sensitif terhadap jarak atau gradien, seperti kNN, SVM, K-Means, dan neural network.

Bagaimana cara memilih antara standardisasi dan Min-Max scaling?

Gunakan standardisasi jika data mendekati distribusi normal dan Anda ingin mempertahankan informasi tentang seberapa jauh nilai dari rata-rata. Pilih Min-Max jika Anda membutuhkan rentang yang pasti, misalnya untuk input neural network, dan data tidak memiliki outlier signifikan. Jika outlier banyak, pertimbangkan Robust Scaling.

Apa dampaknya jika saya lupa melakukan scaling pada data uji?

Data uji akan memiliki skala yang berbeda dari data latih, sehingga model menganggapnya sebagai pola yang tidak dikenal. Akibatnya, prediksi menjadi tidak akurat. Selalu gunakan parameter scaling yang sama (rata-rata, standar deviasi, min, max) dari data latih saat mentransformasi data uji.

You May Have Missed