Lensa ML

Feature Scaling

Langkah 1 dari 6: Masalah Skala

Kenapa rentang feature yang berbeda menimbulkan masalah

Scatter 2D: sumbu berskala sama (1 unit = panjang yang sama di kedua sumbu)
Feature 1 (Usia)Feature 2(Gaji)5210315552103155
Faktor skala untuk Feature 21x
Rentang F1
18-76
Rentang F2
35-196
Rasio skala
2.8x

Kedua feature punya rentang yang mirip, sehingga titik-titiknya menyebar di seluruh grafik. Kontribusi tiap feature terhadap jarak dan pembaruan gradient sebanding.

Geser Faktor skala untuk Feature 2 dari 1x ke 100x. Ambil dua orang yang berbeda 20 tahun usianya dan 10 unit gajinya. Pada 1x, jarak mereka √(20² + 10²) ≈ 22,4, dan usia menyumbang 80% dari jarak kuadrat. Pada 100x, selisih gaji menjadi 1.000 dan jaraknya sekitar 1.000,2, jadi usia nyaris tidak terasa. Gradient berskala dengan cara yang sama: pada model linear, gradient untuk weight wⱼ adalah error dikali xⱼ, sehingga feature bernilai besar mendapat pembaruan besar.

Langkah 2 dari 6: Kontur yang Memanjang

Cara skala yang timpang mengganggu gradient descent

Kontur loss dan lintasan gradient descent:
w1w2minawal
Rasio skala antar-feature1.0
Rasio skala
1.0x
Langkah GD
22
Efisiensi
100%

Dengan skala seimbang, kontur loss nyaris melingkar, dan gradient descent bergerak hampir lurus ke titik minimum.

Geser Rasio skala antar-feature dari 1 ke 20. Loss di sini ½(w1² + r²w2²), jadi kelengkungannya 1 di sepanjang w1 dan r² di sepanjang w2. Rasio r² itulah condition number. Supaya arah yang curam tetap stabil, ukuran langkah di sini diatur ke 1,6/r², sehingga arah yang datar bergerak sangat lambat. Pada rasio 1, lintasannya butuh 22 langkah dengan efisiensi 100%. Pada rasio 4, butuh 31 langkah dengan efisiensi 34%, dan mulai rasio 8 lintasannya menabrak batas 80 langkah.

Langkah 3 dari 6: Normalisasi Min-Max

Memampatkan feature ke [0, 1]

xnorm = (x - min) / (max - min)
Data mentah (skala bersama) vs. hasil normalisasi min-max [0, 1]:
Mentah (skala bersama)UsiaGaji ↑5151031154651510311546Ternormalisasi [0,1]Usia (norm)Gaji (norm) ↑000.50.511
Pilih titik dataTitik 1
Usia mentah
34.0
Usia norm
0.276
Gaji norm
0.000

Normalisasi min-max memampatkan setiap feature ke [0, 1]. Di kiri, gaji (300–2000) mendominasi usia (18–80). Di kanan, kedua sumbu mencakup [0, 1] dan sebaran usia terlihat lagi.

Geser Pilih titik data melewati 20 titik. Normalisasi min-max menghitung x′ = (x − min) / (max − min). Di sini usia berkisar dari sekitar 18,2 sampai 75,7, jadi Titik 1 yang berusia 34,0 dipetakan ke 0,275, dan gajinya sebesar 353, yang terendah di himpunan ini, dipetakan ke 0. Nilai min dan max harus berasal dari data training, jadi nilai baru bisa jatuh di luar [0, 1]. Satu outlier ekstrem bisa menjepit semua nilai lain ke sebagian kecil rentang. Membagi pixel gambar dengan 255 juga termasuk min-max scaling.

Langkah 4 dari 6: Standardisasi (Z-score)

Memusatkan di nol dengan varians satu

z = (x - μ) / σ
Data mentah (skala bersama) vs. hasil standardisasi (mean=0, std=1):
Mentah (skala bersama)UsiaGaji ↑5151031154651510311546TerstandardisasiUsia (z)Gaji (z) ↑-1-10011(0,0)
Pilih titik dataTitik 1
Usia mentah
34.0
Z (usia)
-0.515
Z (gaji)
-1.251

Standardisasi memakai rata-rata dan simpangan baku, bukan nilai minimum dan maksimum. Di kanan, kedua feature berpusat di nol dengan varians satu.

Geser Pilih titik data dan bandingkan grafik data mentah dengan hasil standardisasi. Standardisasi menghitung z = (x − μ) / σ. Untuk usia ini, rata-ratanya 42,6 dan simpangan bakunya 16,7, jadi Titik 1 yang berusia 34,0 mendapat z ≈ −0,52. Gajinya sebesar 353 mendapat z ≈ −1,25, karena feature itu punya rata-rata 1.065 dan simpangan baku 569. Kedua metode tidak mengubah bentuk distribusi. Feature yang miring seperti pendapatan sering diberi log transform lebih dulu, dan robust scaling memakai median dan interquartile range agar tahan terhadap outlier.

Langkah 5 dari 6: Efek pada Training

Feature yang sudah diskalakan lebih cepat konvergen

Loss relatif (dinormalisasi menjadi 1,0 di awal):
Langkah trainingLoss relatif01530456000.250.50.7511%ScaledUnscaled
Learning rate0.010
Unscaled
>60
Scaled
45
Percepatan
>1.3x

Kedua model stabil pada learning rate kecil ini. Loss unscaled turun lebih cepat di beberapa langkah pertama, karena separuhnya berada di sumbu curam (eigenvalue 100) yang cepat habis. Setelah itu ia macet di sumbu datar (eigenvalue 1), sedangkan loss scaled terus turun dengan laju yang sama di kedua arah.

Geser learning rate dari 0,005 ke 0,3. Loss unscaled ½(x² + 100y²) hanya stabil untuk nilai di bawah 2/100 = 0.02. Loss scaled ½(5x² + 5y²) punya kelengkungan yang sama di kedua arah dan tetap stabil sampai 2/5 = 0.4, melewati ujung slider. Pada 0,01, kurva unscaled turun lebih cepat selama beberapa langkah, lalu macet di sumbu datar pada 15% setelah 60 langkah, sedangkan kurva scaled mencapai 1% dalam 45 langkah. Pada 0,1, model scaled konvergen dalam 4 langkah dan model unscaled divergen.

Langkah 6 dari 6: Kapan Perlu Scaling

Model mana yang butuh dan mana yang tidak

Apakah model ini butuh feature scaling?
RegresiLinear✓PerluBerbasis gradientNeuralNetwork✓PerluBerbasis gradientDecisionTree✗Tidak perluBerbasis splitk-NN✓PerluBerbasis jarak
Peka skala?
Ya
Jenis
Berbasis gradient

Saat dilatih dengan gradient descent, feature dengan skala berbeda menghasilkan pembaruan yang timpang. Koefisien tanpa scaling juga sulit dibandingkan. Selalu skalakan feature sebelum melatih jenis model ini.

Klik Regresi Linear, Neural Network, Decision Tree, dan k-NN untuk membandingkannya. Beberapa kasus kurang kentara. Ordinary least squares yang diselesaikan dengan rumus tertutup memberi prediksi yang sama dengan atau tanpa scaling, tetapi ridge dan lasso tidak, karena penaltinya bergantung pada ukuran tiap koefisien. PCA butuh scaling karena mencari arah dengan varians terbesar. Support vector machine dengan kernel RBF memakai jarak, jadi butuh scaling juga. Tree ensemble, seperti tree tunggal, memisahkan data per satu feature dan mengabaikan skala.

Apa itu feature scaling dalam machine learning?

Feature scaling mengubah feature input numerik supaya rentangnya mirip. Dua metode yang paling umum adalah normalisasi min-max, yang memetakan tiap feature ke [0, 1], dan standardisasi, yang menggeser tiap feature ke rata-rata 0 dan simpangan baku 1. Scaling mengubah satuan feature, tetapi urutan nilai di dalam tiap feature tetap sama.

Scaling berpengaruh pada model yang membandingkan feature berdasarkan jarak atau mempelajarinya dengan gradient descent. Tanpa scaling, feature seperti pendapatan dalam dolar menenggelamkan feature seperti usia dalam tahun. K-nearest neighbors, k-means, support vector machine, PCA, dan neural network semuanya bergantung pada scaling. Model berbasis tree seperti random forest dan gradient boosting tidak.

Ide utama

  • Feature scaling menempatkan feature numerik pada rentang yang sebanding.
  • Normalisasi min-max memetakan feature ke [0, 1] memakai nilai minimum dan maksimumnya.
  • Standardisasi memberi feature rata-rata 0 dan simpangan baku 1.
  • Feature tanpa scaling meregangkan permukaan loss dan memperlambat gradient descent.
  • Model berbasis jarak dan berbasis gradient butuh scaling; model berbasis tree tidak.
  • Statistik scaling harus dihitung hanya pada training set.

Pertanyaan umum

Mana yang lebih baik, normalisasi atau standardisasi?

Standardisasi adalah pilihan bawaan yang umum, terutama untuk model linear, SVM, dan neural network, dan lebih tahan terhadap outlier. Normalisasi min-max cocok untuk feature dengan batas tetap yang diketahui, seperti intensitas pixel, atau model yang mengharapkan input dalam [0, 1]. Mencoba keduanya dan membandingkan skor validasi bisa menjawab pertanyaan ini untuk dataset tertentu.

Sebaiknya scaling dilakukan sebelum atau sesudah membagi data?

Sesudah. Fit scaler hanya pada training set, lalu terapkan transformasi yang sama ke validation set dan test set. Menghitung rata-rata, simpangan baku, minimum, atau maksimum pada seluruh dataset membocorkan informasi test set ke training dan menggelembungkan skor tes.

Apakah variabel target perlu diskalakan?

Untuk klasifikasi, tidak. Untuk regresi dengan neural network, standardisasi atau log transform pada target bernilai besar sering membuat training lebih stabil. Prediksinya lalu harus dikembalikan ke satuan asli dengan transformasi kebalikannya.

Apakah batch normalization menggantikan scaling pada input?

Tidak sepenuhnya. Batch normalization mengatur ulang skala aktivasi di dalam network selama training, yang mengurangi kepekaan terhadap skala di layer berikutnya. Scaling pada input mentah tetap menjadi praktik standar, karena murah dan menjaga layer pertama tetap well conditioned.

Penjelasan terkait

Referensi

  1. LeCun, Bottou, Orr & Müller (1998), "Efficient BackProp"
  2. Goodfellow, Bengio & Courville (2016), "Deep Learning", chapter 8: Optimization for Training Deep Models
  3. Stanford CS231n, "Neural Networks Part 2: Setting up the Data and the Loss"
  4. scikit-learn User Guide, "Preprocessing data"

Terakhir diperbarui