Normalisasi Data dalam Wrangling Python

Reyvan Maulid Pradistya
10 min readFeb 1, 2022

--

Ilustrasi Normalisasi Data. Source: Princeton University

Halo-haloo semua. Balik lagi nih sama aku, Reyvan Maulid! Kali ini spesial aku akan membahas tentang konten EXTENDED. Hahhh apaa ituuu konten EXTENDED? Yap, jadi konten extended ini adalah konten-konten seputar data science dengan pembahasan yang lebih khusus dan secara spesifik akan aku bahas buat kalian.

Tujuannya apa? Besar harapan aku ketika kalian mampir ke blog ini. Kalian tidak hanya sekedar mampir aja. Tetapi semoga dengan kehadiran blog ini bisa menambah insight dan wawasan kalian seputar data science pelan-pelan. Karena data untuk semua.

Kalau pun misalnya kalian ada request tentang bahasan konten extended seputar data science dengan senang hati aku akan coba untuk kubahas. Kalian bisa tinggalkan komen aja dipostingan ini okeyyy.

Insyaallah mudah-mudahan akan lebih bermanfaat ya guys kali ini. Nantinya kedepan akan ada banyak konten extended yang bakalan aku bahas

Jadi, untuk konten extended perdana akan aku mulai dari pembahasan tentang Normalisasi Data. Bahasan ini aku jelaskan lebih spesifik karena di postingan sebelumnya telah aku jabarkan tentang Data Wrangling pada Python. Boleh ceki-ceki aja yaa nanti linknya bisa kalian akses disini.

Yap, bahasan spesial ini sengaja aku dapatkan dari modul belajar yang ada di DQLab guys. Materinya adalah Data Wrangling Python. Buat kalian yang penasaran dengan modulnya kalian boleh kepoin aja kesini.

Yaudah tanpa basa-basi, langsung aja deh yuk kita akan bahas lebih dalam tentang normalisasi data! Cekidottt~

Normalisasi Data

Kalian sadar enggak sih, kalau pembahasan soal Normalisasi Data itu di postingan sebelumnya sedikit banget? Yap, emang sengaja guys! Aku jelasinnya baru di kulit luarnya aja. Pembahasan lebih dalam bakalan aku bahas dipostingan ini. Back to the topic

As usual, kita perlu tahu terlebih dahulu apasih normalisasi data itu? Kita cari tahu yuk definisinya.

Normalisasi data adalah suatu proses dalam data wrangling dengan perlakuan beberapa variabel memiliki kesepadanan baik dari rentang nilai, konsistensi satuan, dan tidak terjadi ketimpangan yang besar. Jadi perlakuan normalisasi data mensyaratkan tidak adanya ketimpangan, tidak ada nilai yang terlalu besar ataupun terlalu kecil. Semua nilai dianggap sama sehingga membuat analisis statistik menjadi lebih mudah

Disclaimer: Pembahasan normalisasi data disini bukan merujuk pada normalisasi pada database. Tetapi normalisasi data yang berfokus pada penskalaan nilai variabel pada rentang tertentu. Begitu ya guysss!

Pentingnya Normalisasi Data

Normalisasi data penting dilakukan ketika ada range nilai yang berbeda dalam dataset. Misalnya kolom A memiliki nilai puluhan dan kolom B memiliki nilai jutaan. Mungkin ini terlihat sederhana dan tidak terlalu berpengaruh, namun saat ingin melakukan klasterisasi dengan algoritma K-Means ini akan sangat berpengaruh. Perhitungan akan cenderung berdasarkan kolom B yang memiliki nilai lebih besar. Kolom A dan kolom lainnya yang digunakan dalam perhitungan tidak akan berpengaruh sehingga hasil analisis yang diinginkan bisa saja tidak tercapai.

Tujuan Normalisasi Data

Penggunaan normalisasi pada data bertujuan untuk menghilangkan duplikasi atau data yang rangkap/double, mengurangi kompleksitas data, dan mempermudah dalam modifikasi data. Selain itu, dengan menggunakan normalisasi data juga pastinya membuat analisis statistik menjadi lebih mudah. Setiap analisis statistik pastinya memiliki karakteristik yang berbeda-beda. Paling tidak dengan cara normalisasi data, jalannya pengolahan data tidak akan menjadi sulit karena semua rata dan sudah diseragamkan.

Ilustrasi Normalisasi Data

Perhatikan contoh ilustrasi berikut ini:

Gambar 1. Contoh Normalisasi Data. Source: DQLAB

Kalian coba perhatiin deh baik-baik ya.

Antara Usia dan Masa Kerja masih memiliki range yang sama dalam skala puluhan. Namun, jika kolom Usia dan Masa Kerja dibandingkan dengan Gaji memiliki range nilai yang berbeda, dimana Usia dan Masa Kerja memiliki range puluhan dan Gaji mempunyai range nilai jutaan.

Memang terlihat sepele, namun hal ini bisa menjadi masalah besar dalam contoh kasus klasterisasi atau klasifikasi. Masuk pada kasus K-means yang sudah pernah dibahas sebelumnya. K-means merupakan algoritma klasterisasi (clustering) yang menggunakan perhitungan jarak dalam prosesnya.

Ibarat beda satuan dan ukuran aja, di analisis yang berbeda bisa jadi permasalahan yang rumit. Jadi perlu dilakukan normalisasi pada data dengan cara berikut

Gambar 2. Penggunaan Normalisasi Data. Source: DQLAB

Jika tidak ada normalisasi, maka jelas perhitungan kmeans diatas akan tergantung pada Gaji. Kenapa? Karena gaji berdomain jutaan dan 2 kolom lainnya hanya berdomain puluhan. Berapapun usia dan masa kerja seseorang tidak akan berpengaruh terhadap penilaian suatu perusahaan.

Perbedaan skala pada setiap kolom ini merupakan hal yang sangat wajar dan sering terjadi dan inilah pentingnya normalisasi. Normalisasi sangat penting, terutama untuk yang menggunakan perhitungan jarak dengan menggunakan metode apapun.

Metode Normalisasi Data

Ada beberapa metode normalisasi seperti MinMax, Zscore, Decimal Scaling, Sigmoid, dan Softmax. Penggunaan metode ini tergantung pada jenis data dan analisis yang diinginkan. Untuk lebih jelasnya, yuk mari kita akan bahas lebih lanjut yaaa untuk beberapa metode normalisasi data. Cussssssss…..

Metode Min — Max

Metode normalisasi data yang pertama adalah Metode Min — Max. Metode ini memiliki cara kerja yakni pada setiap nilai dari sebuah fitur dikurangi dengan nilai minimum fitur tersebut. Kemudian dibagi dengan rentang nilai atau nilai maksimum dikurangi nilai minimum dari fitur tersebut. Untuk lebih jelasnya kalian bisa langsung cek-cek aja ya melalui gambar okeyyyy.

Gambar 3. Metode Normalisasi Data Min — Max

Metode min — max ini adalah metode normalisasi dengan melakukan transformasi linier terhadap data asli kita. Normalisasi minmax adalah strategi normalisasi yang secara linear mengubah x menjadi y= (x-min)/(max-min), di mana min dan max adalah nilai minimum dan maksimum dalam X, di mana X adalah himpunan nilai pengamatan dari x.

Dapat dengan mudah dilihat bahwa ketika x=min, maka y=0, dan
Ketika x=max, maka y=1. Artinya, nilai minimum di X dipetakan ke 0 dan nilai maksimum di X dipetakan ke 1. Jadi, seluruh rentang nilai X dari min hingga maks dipetakan ke rentang 0 hingga 1.

MinMax sangat dianjurkan untuk kasus-kasus berbasis time frame analisis dan forecasting.

Perhitungan dari metode ini cukup mengurangi data yang asli dengan nilai minimal dari fitur tersebut, kemudian hasil tersebut dikalikan dari hasil pengurangan nilai maximal yang baru dengan nilai minimal yang baru dan kemudian dibagi dengan nilai max dan min data di setiap fitur terakhir ditambah dengan nilai min yang baru.

Dalam melakukan normalisasi data, terjadi adanya peristiwa out of bound dalam metode Min — Max. Apa itu out of bound?

Out of Bound terjadi apabila ada data baru masuk, dimana data tersebut melebihi nilai maksimal atau nilai minimal dari data yang sudah ada. Secara otomatis, perhitungan yang berlaku pada data yang sudah diperoleh tadi harus diulangi lagi semuanya dengan data baru yang masuk atau data baru yang mempunyai nilai maksimal/minimum yang melebihi tadi tidak bisa diproses. Karena kekurangan inilah MinMax tidak cocok untuk analisa real time / evolving system. Dimungkinkan dalam kasus-kasus terjadi kasus out of bound pada MinMax

Kalau kalian penasaran dengan bagaimana cara menghitung min — max ini, aku coba bantu untuk sertakan referensinya dalam bentuk video ya guyss.

Z-Score

Kedua yaitu Zscore. Z-Score adalah metode yang sering digunakan dalam berbagai penelitian berbasis data mining atau data science. Z-score merupakan metode normalisasi yang berdasarkan mean (nilai rata-rata) dan standard deviation (deviasi standar) dari data.

Kenapa Z-Score sangat populer? Selain tidak banyak variabel yang diset dalam perhitungannya. Z-Score sangat dinamis dalam melakukan perhitungan normalisasi. Kelemahan dari Z-Score adalah prosesnya akan terulang lagi jika ada data baru yang masuk. Selain itu elemen yang dibutuhkan untuk perhitungan Z-Score juga membutuhkan proses yang cukup lama baik standar deviation ataupun rata-rata dari setiap kolom.

Gambar 4. Metode Normalisasi Data Z — Score

Z-score mengubah set variabel yang berubah-ubah menjadi rentang yang seragam. Jika nilainya terletak diatas rata-rata maka Z score-nya akan bernilai positif, sedangkan apabila nilainya dibawah nilai rata-rata maka Z score-nya akan bernilai negatif. Z Score ini juga disebut dengan Nilai Standar atau Nilai Baku.

Manfaat dari menstandarisasikan nilai-nilai skor mentah atau nilai yang diamati dari distribusi normal menjadi Z Score atau Skor Z ini adalah untuk memungkinkan kita menghitung probabilitas skor yang terjadi dalam distribusi normal dan juga memungkinkan kita untuk membandingkan dua skor yang berasal dari populasi yang berbeda

Kalau kalian penasaran dengan bagaimana cara menghitung Z — Score ini, aku coba bantu untuk sertakan referensinya dalam bentuk video ya guyss.

Referensi Video Untuk Menghitung Z — Score

Decimal Scaling

Ketiga adalah metode Decimal Scalling. Metode Decimal Scalling adalah metode normalisasi dengan menggerakkan nilai desimal dari data ke arah yang diinginkan. Cara melakukan decimal scalling adalah dengan menggunakan permisalan:

Asumsikan ada angka yang berkisar dari 90 hingga 150.

Untuk menormalkan dengan penskalaan desimal:

- Temukan angka terbesar dalam rentang yang diberikan

- Hitung jumlah digit dalam jumlah terbesar (yaitu, j = 3)

- Bagi setiap angka dengan 10^j (yaitu, 10³ = 1000)

Oleh karena itu, nilai normalisasi untuk 90 dan 150 adalah 0,09 dan 0,15

Berikut adalah rumus dari decimal scalling:

Gambar 5. Metode Normalisasi Decimal Scalling

Mau contoh lagi? Next yaaaa

Bila Anda memiliki rentang angka seperti 50, 250, 400, kalian bisa melakukan ini:

Ambil jumlah digit maksimum. Contohnya (400 memiliki 3 digit)
- Hitung pangkat 10. 10³ = 1000.
- Bagilah setiap angka dengan 1000.
- Hasilnya adalah 0,05, 0,25 dan 0,4

Softmax

Softmax merupakan metode normalisasi pengembangan transformasi secara linier. Output range-nya adalah 0–1.

Metode ini sangat berguna pada saat data yang ada melibatkan data outlier.

Berikut adalah rumus normalisasi data dengan menggunakan Softmax:

Gambar 6. Metode Normalisasi dengan Softmax

Kalau kalian penasaran dengan bagaimana cara menghitung dengan metode Softmax ini, aku coba bantu untuk sertakan referensinya dalam bentuk video ya guyss.

Sigmoid

Sigmoidal merupakan metode normalization melakukan normalisasi data secara nonlinier ke dalam range -1 s/d 1 dengan menggunakan fungsi sigmoid.

Metode ini sangat berguna pada saat data yang ada melibatkan data outlier. Data outlier adalah data yang keluar jauh dari jangkauan data lainnya

Berikut adalah rumus dari Sigmoid

Gambar 7. Metode Normalisasi dengan Sigmoid

2 Cara Melakukan Normalisasi Data Menggunakan Python

Cara melakukan normalisasi data untuk pembahasan kali ini, setidaknya ada dua cara yang bisa kalian lakukan. Yang pertama adalah normalisasi data dengan menggunakan Scikit-Learn sederhana. Sedangkan yang kedua menggunakan rumus yang panjang. Dengan menggunakan scikit-learn juga pastinya

Rumus Simple Normalisasi Python Sederhana

Pertama-tama kalian panggil terlebih dahulu library scikit learn pada Python menggunakan perintah berikut:

Gambar 8. Sklearn

Kemudian dari library scikit-learn ini kita akan import preprocessing untuk melakukan normalisasi.

Kedua kita lakukan penulisan array dengan menginput library baru yaitu Numpy untuk melakukan analisis statistik sederhana dan data numerik

Gambar 9. Numpy

Selanjutnya, kita mulai untuk normalisasi data dengan perintah normalized array atau normalized_arr. Seperti yang tertera pada kode dibawah ini.

Gambar 10. Normalized Array

So, inilaahh kode lengkapnya guyssss

Gambar 11. Kode Normalisasi Data pada Python

Berikut adalah hasil output dari kode diatas

Gambar 12. Hasil Output Normalisasi Data dengan Python

Nah, sekarang dengan hasil normalisasi data kini semua bisa setara. Nilainya disetarakan antara 0 hingga 1. Tidak lebih dari 1

Praktek Normalisasi menggunakan Scikit Learn pada Python

Scikit Learn merupakan library pada python yang digunakan untuk machine learning dan data science. Salah satu library yang selalu menjadi favorit dan komunitasnya sangat kuat.

Scikit-learn sendiri tidak hanya untuk analytics saja, namun juga untuk pre-processing, feature selection, dan proses analysis lainnya. Melanjutkan dari sesi normalisasi data, mari kita praktekkan kode di bawah ini :

Gambar 13. Normalisasi Data dengan Scikit-Learn

Waitttt, bentar-bentarrrrrr. STOOOOOOOPPPPPPPPP

Buat kalian yang penasaran dengan datasetnya, tenanggg aku bakal drop lagii kesiniii. Untuk dataset shopping_data bisa kalian akses dan unduh datasetnya disini ya! Disana sudah ada data-data. Mulai dari CustomerID, Jenis Kelamin, Umur, Pendapatan pertahun dalam bentuk mata uang Dollar dan skala dari 1–100 berapa spending score yang dibelanjakan.

Setelah melakukan running pada kode tersebut, akan menghasilkan output sebelum dan sesudah dilakukan normalisasi data sebagai berikut:

Gambar 14. Sebelum Dilakukan Normalisasi
Gambar 15. Setelah Dilakukan Normalisasi

Nah, sekarang dengan hasil normalisasi data kini semua bisa setara. Nilainya disetarakan antara 0 hingga 1. Tidak lebih dari 1. Hal ini disebabkan ketika dataset sebelum dilakukan normalisasi maka nilai spending score berada pada kisaran satuan dan puluhan (perhatikan pada gambar 14)

Jadi nilainya tidak seragam jika dilihat dari variabel yang lainnya yaitu pendapatan dan usia. Setelah dilakukan normalisasi, didapatkan hasil yang seragam dengan nilai tidak lebih dari 1.

Gimana-gimanaaa seruuu gaa nihhh belajarnyaa? Pasti seruuuu donggg.

Penutup

Mudah bukan? Setelah mempelajari normalisasi datapada Python ini, diharapkan kalian bisa langsung aplikasikan dan kerjakan. Kalian bisa mengerti apa saja tipe-tipe dalam bentuk normalisasi data,penerapan normalisasi data dan praktiknya

Harapannya dengan dikuatkan pondasi dalam bahasan ini ke depannya akan semakin mudah. Jika sudah memiliki pondasi dan bekal yang kuat, tentunya akan memudahkan kalian dalam menyajikan dan mengelola data dengan Python

Jika kamu penasaran dengan data science dan ingin belajar data science secara langsung, caranya mudah banget. Kalian bisa loh belajar sama-sama di DQLAB. Hanya dengan cara belajar dirumah aja, kamu bisa loh untuk coba bikin akun gratisnya kesini di DQLab.id dan lakukan signup untuk dapatkan info-info terbaru serta belajar data science.

Nikmati pengalaman belajar data science yang menarik dan cobain berlangganan bersama DQLab kalau penasaran dengan modul-modul yang lainnya. Pastinya seru dan menyenangkan donggg dengan bantuan live code editor.

Apalagi sekarang dengan User Interfacenya yang kece banget guys bisa asyik belajarnya. Kalian bisa atur juga layarnya dengan dark mode lhooo biar ga pening matanya. So, tunggu apalagi, buruan SIGNUP sekarang yuuukkk!

Oke, kalau begitu sekian dulu pembahasan kita kali ini. Terima kasih atas kesediaan kalian dan waktu yang telah diluangkan untuk membaca tulisan ini. Terima kasih juga buat teman-teman semua yang sudah minat dan berpartisipasi membaca tulisan-tulisan saya sampai saat ini. Semoga bermanfaat ya!

Kalau pun misalnya kalian ada request tentang bahasan konten extended seputar data science dengan senang hati aku akan coba untuk kubahas. Kalian bisa tinggalkan komen aja dipostingan ini okeyyy.

Happy Chinese New Year! Sampai Jumpa !

Jangan lupa protokol 5M!

Wrangling data is like interrogating a prisoner. Just because you wrangled a confession doesn’t mean you wrangled the answer

— Brad Schneider, Coresignal

Referensi:

Data Wrangling Python

Data Mentor: Xeratic

--

--

Reyvan Maulid Pradistya
Reyvan Maulid Pradistya

No responses yet