Pacmann Media Profile picture
Apr 5, 2021 34 tweets 10 min read Read on X
Normalization vs Standardization: Apa, Kenapa, dan Gimana?
A Simple Guide to Feature Scaling
.
.
.
A thread
Kalau dipikir-pikir, sebenernya jadi DS sama jadi chef itu sama aja. Sama-sama preprocessing ‘ingredients’ nya. Sama-sama modeling dan tuning ‘resep’ nya. Sama-sama deploy ke customer nya. Dan kalau customer bilang “Mas, kok kurang enak?”, sama-sama update resepnya.
Atau ketika seorang chef membuat strawberry-banana smoothie misalnya, nggak semudah mencampur satu pisang utuh dan satu stroberi aja kan? Karena tentu nanti yang terasa cuma pisang nya aja. Atau dengan kata lain, smoothie nya akan ‘bias’ ke pisang.
Sehingga supaya tercipta cita rasa yang seimbang, proporsi pisang nya perlu diperkecil, bisa dengan dipakai separuhnya aja atau dipotong kecil-kecil. Terserah, but the point is, perlu dilakukan scaling ulang terhadap ‘ingredients’ yang digunakan.
And believe it or not, the very same principle, ternyata ada implementasinya juga dalam dunia per-ML-an. Terkadang, kita perlu scaling ulang data yang dimiliki, simply agar model tidak ‘bias’ terhadap suatu feature tertentu pada data. Contoh klasiknya seperti ini.
Feature ‘Salary’ itu skalanya puluhan ribu, sedangkan feature ‘Age’ mentok-mentok 50. Layaknya kasus pisang tadi, proporsi yang imbalanced ini bisa jadi masalah karena somehow model akan belajar untuk bias, menganggap ‘Salary’ jauh lebih penting daripada ‘Age’.
Solusinya? Kita perlu membuat features pada data berada dalam suatu skala yang sama, a common scale. Nah, teknik ini yang disebut dengan ‘feature scaling’. Fungsinya untuk ‘suppressing’ efek bias model terhadap suatu feature hanya karena range magnitude nya.
Terus gimana min caranya? Nah sebelum ke sana, mungkin dari temen-temen ada yang bertanya-tanya, “Apakah setiap model machine learning memerlukan data nya untuk dilakukan feature scaling terlebih dahulu?”
Untuk model yang tree-based, seperti Decision Tree, Random Forest, atau untuk ensemble model yang sebenernya isinya decision trees juga, seperti Gradient Boost, XGBoost, atau AdaBoost, feature scaling nggak akan banyak berpengaruh terhadap performa model.
At the end of the day, dalam prosesnya mereka simply akan membuat decision tree yang didasarkan pada set aturan tertentu -- ‘jika ini maka itu’. Artinya, range magnitude dari feature tidak akan banyak berpengaruh terhadap proses pengambilan keputusan.
Tapi untuk model yang distance-based, seperti Linear Regression, Logistic Regression, KNN, atau K-Means Clustering, feature scaling akan sangat berpengaruh terhadap performa. Pada neural network, feature scaling juga mempercepat model konvergen pada gradient descent.
Karena yang dipakai adalah fungsi jarak -- umumnya euclidean distance -- untuk meminimalkan error, ‘besar’ dari feature menjadi penting. Semakin besar nilai nya, semakin jauh jaraknya dengan feature lain sehingga semakin sulit bagi model untuk konvergen ke parameter terbaik.
Now to the main part! Salah dua teknik yang umum digunakan dalam feature scaling adalah normalization dan standardization. Keduanya sama-sama membuat data ke dalam suatu skala tertentu, sama-sama membuat data menjadi ‘unitless’, but in a different way.
Normalization memetakan setiap nilai data menjadi suatu nilai baru yang berada dalam rentang 0 sampai 1. Nilai data terbesar akan jadi 1, dan nilai terkecil akan jadi 0. Di scikit-learn, normalization diimplementasikan simply dengan menggunakan MinMaxScaler().
It is worth mentioning bahwa normalization itu pada dasarnya adalah ‘squeezing’ semua data ke dalam range [0,1], yang batas-batas nya adalah nilai maksimum dan minimum data training. Simpel banget min? Yess, tapi mungkin ada yang kebayang apa masalah nya di sini.
Ketika model yang di-training menggunakan data yang di-normalized itu kita beri input yang nilainya lebih besar dari nilai maksimum pada data training misalnya, maka nilainya akan berada di luar range [0,1]. Hal ini mengakibatkan normalization menjadi sensitif terhadap outlier.
Kalau standardization gimana min? Nah, sebelum ke situ, kita perlu diskusi dulu nih mengenai salah satu distribusi dalam statistika yang mimin yakin temen-temen di sini pasti kenal, Gaussian distribution!
Gaussian distribution, atau dikenal dengan ‘distribusi normal’, adalah distribusi proba yang mayoritas datanya ‘ngumpul’ di sekitar mean. Gimana mastiin suatu feature berdistribusi normal atau nggak? Nah, distribusi normal punya 3 ciri yang disebut dengan ‘empirical rule’.
Jika suatu feature berdistribusi normal, maka ≈68% datanya ada dalam jarak 1 standar deviasi σ dari nilai mean μ, ≈95% data ada dalam jarak 2σ dari μ, serta ≈99.7% data ada dalam 3σ dari μ. Empirical rule ini disebut juga dengan ‘three-sigma rule’ atau ‘68-95-99.7 rule’.
Nilai mean, median, dan modus dari distribusi normal juga kurang lebih berhimpit pada satu titik yang sama di pusat data. Nah, ciri inilah yang akhirnya membuat distribusi normal terkenal dengan bentuknya yang ikonik menyerupai lonceng atau yang disebut dengan ‘bell curve’.
Konsep distribusi normal ini penting banget temen-temen. Banyak ‘natural phenomena’ yang berdistribusi normal sehingga distribusi ini sering ditemui dalam analisis statistik. And yess, konsep ini juga yang menjadi dasar dari teknik feature scaling berikutnya, standardization!
Dalam standardization, setiap data pada feature ditransformasi sedemikian rupa sehingga diperoleh feature baru yang berdistribusi normal ‘standar’ (Standard Normal Distribution), yaitu distribusi normal yang nilai mean nya (μ) = 0 dan standar deviasi nya (σ) = 1.
Artinya, selain range data pada feature di scale ulang, standardization sekaligus akan berusaha menghasilkan feature baru yang punya properti distribusi normal standar! Di scikit-learn, standardization bisa diimplementasikan dengan StandardScaler().
Kebayang dong kapan pakai standardization? Standardization berasumsi bahwa data pada feature SUDAH berdistribusi normal in the first place. Feature yang berdistribusi normal ini lalu kita ‘standardize’ menjadi distribusi normal ‘standar’.
Tapi, kalau kita nggak tahu distribusi nya apa, atau kalau kita tahu bahwa distribusi nya BUKAN distribusi normal, maka normalization bisa jadi pilihan yang tepat karena nggak ada ‘underlying assumption’ bahwa data nya memiliki distribusi tertentu.
As a side note, sebenarnya nggak ada aturan baku nya yang strict. Mungkin bisa aja data nya ‘is not really normally-distributed’, tapi performa dengan standardization nya ‘is still okay’. Nah, ini jadi ladang kita buat explore and know much better data yang kita miliki!
But the point is, buat use case di mana data dalam feature jelas sudah ‘normally distributed’, maka feature scaling dengan standardization akan jadi pilihan yang sangat fit dan recommended buat diimplementasiin dalam kasus tersebut.
Data yang ‘normally-distributed’ itu emang jadi primadona buat banyak model ML. Dan ada banyak juga teknik yang bisa membuat data jadi lebih ‘Gaussian-like’, misalnya Box-Cox transformation, Johnson transformation, dsb. Mungkin nanti yaa mimin kapan-kapan bahas
Nah, insight apa nih yang bisa kita ambil?
Jadi DS itu bukan cuma soal modeling dan fitting-fitting aja, tapi juga harus bisa mengenali dengan baik datanya, preprocessing seperti apa yang sesuai buat mengolahnya, apa ‘underlying assumption’ nya, serta model apa yang cocok buat datanya.
‘Garbage in, garbage out!’ katanya ya, kan? Mau performa modelnya bagus? Data nya juga harus bagus. Mau datanya bagus? Preprocessing nya harus bagus. Dan mau preprocessing nya bagus? Know your data ‘intimately’!
Kalau megang data masih suka bingung ‘Ini harus diapain dulu ya?’ dan pengen belajar cara menganalisis data dengan baik dan benar, langsung aja gabung di non-degree program Data Scientist / Business Intelligence Pacmann.AI
Oh ya, 💸Promo Early Bird💸 untuk BATCH 3 masih berlaku loh! Yuk, daftarin diri kalian sekarang juga ke Program Non Degree Pacmann! klik infonya dibawah ini yaaa 😊👇🏼
untuk info lebih lanjut, bisa juga hubunginWA kami di bit.ly/WASalesPacmann
See you! 😊👋🏼

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Pacmann Media

Pacmann Media Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @pacmannai

Aug 18
Sudah serius belajar, tapi lupa materi yang baru aja dipelajari kemarin.

Itu wajar, tapi ada cara biar gak lupa menurut beberapa riset.

Kita bahas lebih lanjut ⬇️ From Elearning Industry
Sering kali kita terburu-buru belajar saat ujian sudah dekat, tapi cara ini sebenarnya tidak baik untuk jangka panjang.

Terlihat efektif saat hasil ujian keluar, tapi biasanya beberapa hari setelah ujian, materi yang dipelajari akan mudah lupa.
Riset lain juga menemukan bahwa mengulangi informasi terus menerus dalam sekali belajar juga percuma karena biasanya akan lupa dalam beberapa hari.
Read 17 tweets
Jun 8
Ketika kita ingin menjalankan banyak service dengan menggunakan docker tentu menghabiskan waktu jika kita melakukan konfigurasi dan menjalankannya satu per satu.

Oleh karena itu, kita bahas tentang Docker Compose hari ini!
Nah, kalo kita ingin melakukan konfigurasi dan menjalankan banyak service di docker kita dapat menggunakan "docker compose" untuk meminimalisir penggunaan waktu untuk konfigurasi dan menjalankan service-service tersebut.
Untuk mendefinisikan konfigurasi service dengan menggunakan docker compose kita cukup membuat file konfigurasinya dengan nama "docker-compose.yaml", "docker-compose.yml", atau nama lain dengan extensi file .yaml dan .yml.
Read 17 tweets
May 3
Pengen review santai paper yang lagi di-viral-KAN ini.

Sambil nungguin Jumatan, kita bahas Kolmogorov-Arnold Network yang disebut-sebut Neural Network 2.0 nih! ⬇️
Oiya, ini dari POV Mas Cahya @menarik_hm dalam mereview paper.

Jangan lupa share dan repost ke teman-teman kalian ya!
@menarik_hm Melihat summary-nya, terbayang perbedaan fundamental antara MLP dan KAN.

Di MLP (traditional NN), yang kita train adalah weight dengan architecture yang punya activation function yang fix.

Dalam KAN, ternyata kita bisa melakukan training di level activation function. Image
Read 28 tweets
Jan 27
Gak malam mingguan?

Gabut gak ngapa-ngapain?

Ngulik Python aja gan. Sini, pacmin berikan sumber belajarnya! Sumber belajar python Pacmann
Pertama, dari kampusnya Pak @tomlembong

Walaupun dari kampus ternama, tapi yang ini GRATIS!

Tersedia lecture video, lecture slide & lecture notes, style belajarnya kayak kuliah.

Link disertakan di akhir ya Pacpeers! Harvard CS50 from Reddit
@tomlembong Sumber kedua, dari ITB (Institut Teknologi di Boston).

Ada lecture video, source code Python dan bentuknya video course.

GRATIS juga nih! MIT OCW CS
Read 12 tweets
Jul 28, 2023
Sebutannya sih Exotic Pets, tapi harimau itu hewan peliharaan atau satwa liar sih? 🤬

Apakah memelihara harimau itu Konservasi atau Monetisasi?

Mari kita bahas~ Ilustrasi Influencer Kolektor Satwa Langka
AZ Animals melaporkan bahwa secara keseluruhan rata-rata populasi harimau di tahun 2023 kurang dari 10.000 ekor saja, baik di Alam liar maupun penangkaran.

Harimau tersebut dibagi ke dalam beberapa jenis, mulai dari Harimau Sumaterai hingga Harimau Indo Cina. Populasi Harimau Berdasarkan Jenisnya (2023)
Sayangnya, menurut kategorisasi IUCN Redlist, semua jenis harimau tersebut telah tercancam punah (ketika jumlah harimau menurun 50% sampai lebih dari 70% dalam 10 tahun terakhir) bahkan kritis (ketika jumlah harimau menurun 80% hingga lebih dari 90% dalam 10 tahun terakhir).
Read 34 tweets
May 31, 2023
Menyambung diskusi kemarin, kenapa sih Data Visualization itu jadi fundamental untuk Data Analyst dan Data Scientist?

Seberapa susahnya sih bikin grafik doang?

Baiklah, Pacmin bahas..... Worst Dataviz
Kenapa Dataviz itu fundamental banget berdasarkan diskusi dengan Lecture kami Mas Cahya.

Data Analyst dan Data Scientist itu adalah problem solver, sedangkan constraint mereka adalah waktu, tenaga dan uang. Jadi kita perlu metode paling sederhana untuk melakukan analisis.
Untuk Data Analyst dan Business Intelligence, salah satu jobdesk mereka adalah membuat Dashboard yang baik dan mudah dimengerti.

Tujuannya agar stakeholders bisa mengambil insights dan paham keadaan perusahaan saat ini, mentranslasikan data menjadi insight kemudian jadi action. Image
Read 22 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(