- Blog/
Normalisasi dan Standarisasi Data dengan Scikit-Learn
Table of Contents
I. Pendahuluan #
A. Pengertian Normalisasi dan Standarisasi #
Definisi Normalisasi Normalisasi adalah proses mengubah skala nilai fitur dalam dataset sehingga semua nilai berada dalam rentang tertentu, biasanya antara 0 dan 1. Normalisasi membantu dalam memastikan bahwa semua fitur memiliki bobot yang sama ketika digunakan dalam algoritma machine learning. Ini sangat penting ketika fitur memiliki unit atau skala yang berbeda. Misalnya, jika satu fitur memiliki rentang nilai antara 1 hingga 1000 dan fitur lainnya antara 0 hingga 1, algoritma machine learning mungkin akan lebih mengutamakan fitur yang memiliki skala lebih besar. Dengan normalisasi, skala nilai fitur dapat disamakan, memungkinkan algoritma untuk bekerja lebih efektif dan seimbang.
Definisi Standarisasi Standarisasi, juga dikenal sebagai z-score normalization, adalah proses mengubah nilai fitur dalam dataset sehingga memiliki mean (rata-rata) 0 dan standard deviation (simpangan baku) 1. Ini dilakukan dengan mengurangi mean dari setiap nilai fitur dan kemudian membaginya dengan standard deviation. Standarisasi sangat berguna ketika dataset memiliki distribusi normal (Gaussian). Dengan standarisasi, kita dapat memastikan bahwa fitur memiliki kontribusi yang seimbang dalam algoritma machine learning, terutama yang sensitif terhadap skala data, seperti regresi linear dan support vector machines (SVM).
B. Pentingnya Normalisasi dan Standarisasi dalam Machine Learning #
Pengaruh Skala Fitur pada Algoritma Machine Learning Skala fitur yang berbeda dapat sangat memengaruhi kinerja algoritma machine learning. Algoritma seperti k-nearest neighbors (KNN), SVM, dan neural networks sangat sensitif terhadap skala fitur karena mereka mengandalkan perhitungan jarak antar titik data. Jika fitur memiliki skala yang berbeda, fitur dengan skala lebih besar akan mendominasi perhitungan jarak, mengurangi kontribusi fitur dengan skala lebih kecil. Oleh karena itu, normalisasi dan standarisasi adalah langkah penting dalam preprocessing data untuk memastikan semua fitur berkontribusi secara seimbang dalam model.
Contoh Kasus di Mana Normalisasi dan Standarisasi Diperlukan Misalkan kita memiliki dataset dengan fitur ‘pendapatan’ dalam ribuan dolar dan ‘umur’ dalam tahun. Pendapatan dapat memiliki rentang nilai yang jauh lebih besar dibandingkan umur, sehingga algoritma seperti KNN atau SVM mungkin lebih memperhatikan pendapatan dibandingkan umur. Dalam kasus ini, normalisasi dapat membantu menyamakan skala kedua fitur ini. Contoh lainnya adalah pada penggunaan gradient descent dalam neural networks. Gradient descent lebih cepat dan lebih stabil ketika fitur distandarisasi, karena distribusi data yang distandarisasi membantu dalam mempercepat konvergensi model. Dengan kata lain, normalisasi dan standarisasi tidak hanya mempengaruhi akurasi model tetapi juga efisiensi pelatihan.
Secara keseluruhan, memahami dan menerapkan normalisasi serta standarisasi adalah langkah penting dalam pipeline machine learning, yang dapat berdampak signifikan terhadap performa dan akurasi model yang dikembangkan.
II. Instalasi dan Persiapan #
A. Menginstal Scikit-Learn #
Instalasi Scikit-Learn Menggunakan pip Untuk menginstal Scikit-Learn, kita dapat menggunakan pip, manajer paket Python yang umum digunakan. Pip memudahkan proses instalasi dan manajemen paket Python, termasuk Scikit-Learn. Langkah-langkahnya cukup sederhana, yaitu membuka terminal atau command prompt, lalu menjalankan perintah berikut:
pip install scikit-learn
Perintah di atas akan mengunduh dan menginstal paket Scikit-Learn dari Python Package Index (PyPI) serta menginstal dependensinya jika diperlukan. Setelah selesai, Scikit-Learn siap digunakan dalam proyek machine learning Anda.
B. Mengimpor Perpustakaan yang Diperlukan #
Pandas Pandas adalah perpustakaan Python yang digunakan untuk manipulasi dan analisis data. Ini menyediakan struktur data yang kuat dan fleksibel, seperti DataFrame, yang sangat berguna untuk memanipulasi dataset dalam format tabel.
import pandas as pd
Dengan mengimpor Pandas sebagai pd
, Anda dapat dengan mudah membaca, menulis, dan melakukan operasi data seperti filtering, grouping, dan joining data.
NumPy NumPy adalah perpustakaan dasar untuk komputasi numerik di Python. Ini menyediakan objek array multidimensi yang efisien, bersama dengan berbagai fungsi untuk operasi matematika pada array.
import numpy as np
Dengan mengimpor NumPy sebagai np
, Anda dapat dengan mudah melakukan operasi matematika pada array, seperti penjumlahan, perkalian, dan fungsi-fungsi matematika lainnya yang umum digunakan dalam machine learning.
Scikit-Learn Scikit-Learn (sklearn) adalah perpustakaan Python yang menyediakan berbagai algoritma machine learning untuk tugas-tugas seperti klasifikasi, regresi, clustering, dan preprocessing data.
from sklearn import <module>
Dengan mengimpor modul yang sesuai dari Scikit-Learn, misalnya sklearn.preprocessing
untuk preprocessing data atau sklearn.linear_model
untuk model regresi linier, Anda dapat menggunakan algoritma machine learning yang disediakan oleh Scikit-Learn dengan mudah.
Mengimpor perpustakaan-perpustakaan ini adalah langkah awal yang penting sebelum memulai pengembangan model machine learning dengan Scikit-Learn. Setelah menginstal Scikit-Learn dan mengimpor perpustakaan yang diperlukan, Anda siap untuk mulai bekerja dengan dataset dan menerapkan berbagai teknik machine learning.
III. Normalisasi Data #
A. Pengertian Normalisasi Min-Max #
Definisi Normalisasi Min-Max
Normalisasi Min-Max adalah salah satu teknik normalisasi yang umum digunakan dalam preprocessing data untuk mengubah nilai numerik dari suatu fitur ke dalam rentang nilai tertentu. Tujuan normalisasi ini adalah untuk mengubah nilai-nilai fitur menjadi skala yang seragam tanpa mengubah distribusi nilai aslinya. Dalam konteks machine learning, normalisasi Min-Max berguna untuk memastikan bahwa semua fitur memiliki skala yang sama pentingnya bagi model.
Rumus Normalisasi Min-Max
Rumus untuk melakukan normalisasi Min-Max pada suatu fitur \( X \) dengan nilai minimum \( X_{min} \) dan nilai maksimum \( X_{max} \) adalah sebagai berikut:
\[ X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}} \]
Di mana:
- \( X \) adalah nilai asli dari fitur yang ingin dinormalisasi.
- \( X_{min} \) adalah nilai minimum dari fitur \( X \) dalam dataset.
- \( X_{max} \) adalah nilai maksimum dari fitur \( X \) dalam dataset.
- \( X_{norm} \) adalah nilai fitur yang sudah dinormalisasi, berada dalam rentang [0, 1].
Proses ini akan menghasilkan nilai-nilai fitur yang terletak dalam rentang [0, 1], di mana \( X_{min} \) akan menjadi 0 dan \( X_{max} \) akan menjadi 1. Normalisasi Min-Max sering digunakan ketika fitur-fitur memiliki rentang nilai yang bervariasi atau ketika rentang nilai sangat penting dalam interpretasi data, seperti dalam kasus jarak atau skor.
Penerapan normalisasi Min-Max dalam praktik machine learning dapat membantu meningkatkan kinerja model dengan memastikan bahwa perbedaan skala fitur tidak mempengaruhi bobot atau dampak relatifnya terhadap model. Hal ini penting terutama dalam algoritma-algoritma yang sensitif terhadap skala seperti regresi linier, jaringan saraf, dan algoritma clustering seperti K-Means.
B. Implementasi Normalisasi dengan Scikit-Learn #
Menggunakan MinMaxScaler
Salah satu cara yang efektif untuk menerapkan normalisasi Min-Max pada data adalah dengan menggunakan MinMaxScaler
dari library Scikit-Learn. MinMaxScaler
adalah sebuah transformer yang dapat digunakan untuk mentransformasikan fitur-fitur numerik ke dalam rentang yang ditentukan, biasanya [0, 1] atau [-1, 1].
Contoh Kode Implementasi
Berikut adalah contoh sederhana penggunaan MinMaxScaler
untuk normalisasi data menggunakan Python dan Scikit-Learn:
from sklearn.preprocessing import MinMaxScaler
import numpy as np
# Contoh data numerik
data = np.array([[1.2, 3.2],
[2.1, 4.5],
[3.5, 6.2]])
# Inisialisasi MinMaxScaler
scaler = MinMaxScaler()
# Fitting dan transformasi data menggunakan MinMaxScaler
data_scaled = scaler.fit_transform(data)
print("Data asli:\n", data)
print("\nData setelah normalisasi Min-Max:\n", data_scaled)
Dalam contoh di atas:
- Pertama, kita mengimpor
MinMaxScaler
dari modulsklearn.preprocessing
. - Kemudian, kita membuat sebuah array numpy
data
yang berisi data numerik. - Selanjutnya, kita inisialisasi
MinMaxScaler
sebagaiscaler
. - Fungsi
fit_transform()
digunakan untuk menghitung statistik yang diperlukan dari data (fit
) dan kemudian mengubah data tersebut (transform
) ke dalam skala yang diinginkan (dalam hal ini, [0, 1]). - Hasil normalisasi disimpan dalam variabel
data_scaled
.
Hasil output dari kode di atas akan menampilkan data asli dan data setelah dilakukan normalisasi Min-Max. Penggunaan MinMaxScaler
sangat berguna untuk mempersiapkan data sebelum digunakan dalam model machine learning, terutama ketika fitur-fitur data memiliki skala yang berbeda-beda atau rentang nilai yang luas. Dengan normalisasi ini, kita memastikan bahwa pengaruh skala dari setiap fitur terhadap model machine learning menjadi seragam, yang dapat meningkatkan kinerja dan kestabilan model tersebut.
IV. Standarisasi Data #
A. Pengertian Standarisasi (Z-Score Normalization) #
Definisi Standarisasi
Standarisasi, atau yang juga dikenal sebagai Z-Score Normalization, adalah teknik dalam statistika yang digunakan untuk mengubah data sehingga memiliki mean (rata-rata) nol dan deviasi standar satu. Tujuan dari standarisasi adalah untuk membuat distribusi data menjadi distribusi normal atau mendekati normal, sehingga memudahkan analisis statistik lebih lanjut.
Rumus Standarisasi
Rumus standarisasi untuk mengubah setiap nilai dalam dataset menjadi nilai Z-score adalah sebagai berikut:
\[ z = \frac{x - \mu}{\sigma} \]
di mana:
- \( z \) adalah nilai standar (Z-score) dari \( x \),
- \( x \) adalah nilai awal dari dataset,
- \( \mu \) adalah rata-rata dari dataset,
- \( \sigma \) adalah deviasi standar dari dataset.
Proses ini menghitung berapa jauh setiap nilai dalam dataset dari mean, dan kemudian membaginya dengan deviasi standar. Hasil dari proses ini adalah distribusi data yang memiliki mean 0 dan deviasi standar 1.
Penerapan standarisasi pada data sangat berguna terutama ketika data memiliki skala yang berbeda-beda dan distribusi yang tidak normal. Dengan standarisasi, data dipersiapkan untuk analisis statistik dan machine learning yang lebih akurat, di mana algoritma machine learning seperti regresi logistik dan SVM (Support Vector Machine) dapat berkinerja lebih baik karena sensitif terhadap skala fitur.
B. Implementasi Standarisasi dengan Scikit-Learn #
Untuk melakukan standarisasi data menggunakan Python, terutama dengan bantuan library Scikit-Learn (sklearn), kita dapat menggunakan kelas StandardScaler
. StandardScaler
adalah salah satu transformer yang disediakan oleh Scikit-Learn untuk preprocessing data. Berikut adalah langkah-langkah dan contoh kode implementasinya:
Langkah-langkah Implementasi:
-
Impor Modul yang Diperlukan: Pertama, kita perlu mengimpor modul
StandardScaler
dari Scikit-Learn, serta modulnumpy
untuk manipulasi numerik.from sklearn.preprocessing import StandardScaler import numpy as np
-
Persiapkan Data: Siapkan data numerik yang akan kita standarisasi. Misalnya, kita memiliki sebuah array numpy atau dataframe Pandas yang berisi data numerik.
data = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
-
Inisialisasi dan Fit
StandardScaler
: Buat objekStandardScaler
dan panggil metodefit()
untuk menghitung mean dan deviasi standar dari data yang diberikan.scaler = StandardScaler() scaler.fit(data)
-
Transformasi Data: Setelah melakukan fitting, panggil metode
transform()
untuk mengubah data ke dalam skala standar.standardized_data = scaler.transform(data)
-
Contoh Kode Implementasi Lengkap:
Berikut adalah contoh lengkap penggunaan
StandardScaler
dengan Scikit-Learn:from sklearn.preprocessing import StandardScaler import numpy as np # Persiapkan data data = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) # Inisialisasi dan fit StandardScaler scaler = StandardScaler() scaler.fit(data) # Transformasi data standardized_data = scaler.transform(data) print("Data asli:") print(data) print("\nData setelah standarisasi:") print(standardized_data)
Dalam contoh di atas, StandardScaler
menghitung mean dan deviasi standar dari setiap fitur dalam data data
. Kemudian, data tersebut diubah sedemikian rupa sehingga setiap fitur memiliki rata-rata 0 dan deviasi standar 1. Hasilnya disimpan dalam standardized_data
, yang dapat digunakan untuk analisis lebih lanjut atau untuk melatih model machine learning yang sensitif terhadap skala data.
Implementasi standarisasi dengan Scikit-Learn sangat mempermudah proses preprocessing data untuk machine learning, terutama ketika kita ingin memastikan data berada pada skala yang konsisten dan cocok untuk berbagai algoritma machine learning.