Berkenalan dengan scikit-learn (Part 3) – Scaling Data Menjadi Standard Normal

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

“Statistics and numbers are no good unless you have good people to analyse and then interpret their meaning and importance.”

~ Brendan Rodgers

Halo! Di postingan kali ini, kita akan membahas mengenai scaling data, yaitu salah satu metode dalam preprocessing data numerik/data angka nonkategori.Β Preprocessing data adalah teknik/step dalam data mining atau machine learning, untuk mentransformasikan data mentah menjadi data yang siap dianalisis.

Metode scaling data yang akan kita bahas di sini adalah scaling data menjadi standard normal. Standard normal sendiri merupakan salah satu metode yang paling direkomendasikan dalam teknik scaling data, sekaligus merupakan salah satu distribusi yang paling dikenal dan paling penting dalam statistika.

Pernah mendengar z-score pada statistika? Ya, kita akan mengubah/scaling data kita menjadi z-score.

 

1. Mengapa Scaling Data itu (Sangat) Penting?

Scaling data sangat penting, karena banyak algoritma machine learning yang akan bekerja tidak maksimal (bahkan salah), apabila variabel-variabel feature memiliki skala yang berbeda. Sebagai contoh, support vector machine (SVM) akan berperforma buruk jika datanya tidak discaling terlebih dahulu, karena SVM menggunakan fungsi jarak (distance function) untuk optimasinya, contoh: akan terjadi bias, apabila salah satu feature memiliki nilai bervariasi dari 0 hingga 10.000, sedangkan feature lainnya memiliki variasi nilai dari 0 hingga 1.

 

2. Let’s See It in Action!

Untuk preprocessing data dengan scikit-learn, kita menggunakan package sklearn.preprocessing, dan dataset yang digunakan untuk praktik adalah Boston dataset (lihat part 1 untuk mengingat kembali tentang Boston Dataset).

Oh iya, pada part 1, saya terlupa untuk mencantumkan screenshot dari variabel feature pada dataset Boston. Berikut ini adalah variabel-variabel feature tersebut:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Sedangkan, variabel target (variabel terikat yang akan kita prediksi) adalah variabel MEDV (median value of owner-occupied homes in $1000’s).

Pertama-tama, seperti biasa, kita import dulu library yang dibutuhkan:

from sklearn import datasets
from sklearn import preprocessing
import numpy as np

Lalu, load dataset, dan definisikan features sebagai variabel X, dan target sebagai variabel y:

#load data
boston = datasets.load_boston()

#definisikan features sebagai X, dan target sebagai y
X, y=boston.data, boston.target

Untuk mendapatkan insight, terlebih dahulu kita print nilai rata-rata (mean) dan deviasi standar (standard deviation) dari tiga feature pertama dari data kita:

X[:, :3].mean(axis=0) #mean of the first 3 features
X[:, :3].std(axis=0) #standard deviation of the first 3 features

Berikut ini penampakan pada console:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Apa yang bisa kita pelajari dari sini? Yang pertama, feature pertama memiliki nilai rata-rata terendah dari ketiga feature, namun nilai deviasi standarnya lebih tinggi dari feature ketiga. Yang kedua, feature kedua memiliki nilai rata-rata dan deviasi standar yang tertinggi dari ketiga feature yang ada; dengan kata lain, feature kedua memiliki spread terlebar dibanding yang lainnya.

Melihat insight di atas, karena itulah kita memerlukan preprocessing data. Selanjutnya, jalankan script berikut ini:

X_2 = preprocessing.scale(X[:, :3]) #preprocessing/scaling data
X_2.mean(axis=0) #mean after scaling
X_2.std(axis=0) #standard deviation after scaling

Hasil pada console, sebagai berikut:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Voila! Kita berhasil melakukan scaling pada data kita (bandingkan hasil di atas dengan gambar sebelumnya). πŸ™‚

 

3. Explanation

Berikut ini adalah rumus untuk menghitung z-score:

 

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Rumusnya sangat sederhana, yaitu mengurangi nilai/data dengan nilai rata-ratanya, lalu dibagi dengan deviasi standarnya.

Standard scaling yang kita terapkan pada script di atas, adalah membuat nilai rata-rata menjadi bernilai nol, dengan menggunakan fungsi .mean(axis=0), dan membuat deviasi standar menjadi bernilai satu, dengan menggunakan fungsi .std(axis=0).

Bagaimana dengan teknik preprocessing data yang lainnya? Akan kita bahas dan praktikkan bersama di lain kesempatan. InsyaAlloh. πŸ™‚

Selamat mencoba dan semoga bermanfaat. Enjoy machine learning! πŸ˜€

 

References & Further Reading

Hauck T. (2014): scikit-learn Cookbook, Packt Publishing.

Preprocessing Data.

scikit-learn.

Z-Score.

Follow and like us: