×

Pengertian dan Cara melakukan Normalisasi Data untuk Deep Learning

Pengertian dan Cara melakukan Normalisasi Data untuk Deep Learning

705 Views

Mengapa sih kita butuh normalisasi data? Data adalah salah satu aset yang paling berharga dalam dunia modern. Dalam berbagai bidang, mulai dari bisnis hingga ilmu pengetahuan, data digunakan untuk mengambil keputusan yang cerdas. Namun, data hanya bermanfaat jika kita dapat menganalisisnya dengan benar. Salah satu langkah penting dalam pengolahan data adalah normalisasi. Dalam artikel ini, kita akan membahas mengapa normalisasi data penting, bagaimana melakukannya, dan berbagai metode yang bisa digunakan.

Apa itu Normalisasi Data?

Normalisasi data adalah proses mengubah data ke dalam format yang seragam atau standar. Tujuannya adalah untuk menghilangkan ketidakseimbangan dalam data, sehingga analisis data dapat dilakukan dengan lebih efektif. Ketidakseimbangan ini bisa terjadi dalam berbagai aspek data, seperti skala, distribusi, atau rentang nilai.

Dalam banyak kasus, data yang tidak dinormalisasi dapat menghasilkan kesalahan interpretasi yang signifikan. Misalnya, ketika data memiliki skala yang berbeda, maka perbandingan antara variabel-variabel tersebut bisa menjadi tidak adil. Normalisasi membantu mengatasi masalah ini sehingga kita dapat memahami data dengan lebih baik.

Mengapa Normalisasi Data Penting?

Ada beberapa alasan mengapa normalisasi data sangat penting:

  1. Perbandingan yang Adil: Normalisasi memastikan bahwa perbandingan antara variabel-variabel dalam data adalah adil. Ini memungkinkan kita untuk membuat keputusan yang lebih baik berdasarkan data.
  2. Kinerja Algoritma: Dalam machine learning dan data mining, banyak algoritma berkinerja lebih baik saat bekerja dengan data yang sudah dinormalisasi. Ini dapat menghasilkan hasil yang lebih akurat dan efisien.
  3. Visualisasi Data: Normalisasi data membuat visualisasi data lebih informatif. Ketika data sudah dalam skala yang seragam, grafik dan diagram menjadi lebih mudah dipahami.
  4. Menghindari Kesalahan: Data yang tidak dinormalisasi dapat mengarah pada kesalahan dalam analisis statistik. Normalisasi membantu menghindari kesalahan ini.

See also  Model Bahasa LLaMA (Large Language Model Meta AI)

Bagaimana Melakukan Normalisasi Data?

Normalisasi data bisa dilakukan dengan berbagai metode. Beberapa metode normalisasi yang umum digunakan antara lain:

Min-Max Scaling:

Dalam metode ini, data dinormalisasi ke dalam rentang 0 hingga 1. Ini dilakukan dengan mengurangkan nilai minimum dari setiap titik data, kemudian membaginya dengan selisih antara nilai maksimum dan minimum. Formula yang digunakan adalah:

X_normalized = (X - X_min) / (X_max - X_min)

baca lebih lanjut Pengertian dan Cara Normalisasi Data Teknik Normalisasi Citra

 

Z-Score (Standard Score) Scaling:

Dalam metode ini, data dinormalisasi menjadi distribusi normal dengan mean (rerata) 0 dan standar deviasi 1. Ini sangat berguna dalam statistik dan analisis data. Formula yang digunakan adalah:

Z = (X - X_mean) / X_std

Robust Scaling:

Metode ini mirip dengan Min-Max Scaling, tetapi lebih tahan terhadap outlier. Ia menggunakan kuartil bawah (Q1) dan kuartil atas (Q3) sebagai referensi. Formula yang digunakan adalah:

X_normalized = (X - Q1) / (Q3 - Q1)

Log Transformation:

Dalam beberapa kasus, data yang memiliki distribusi yang sangat tidak merata bisa dinormalisasi dengan mentransformasikannya menggunakan logaritma alami (ln). Ini biasanya berguna ketika data memiliki skewness yang tinggi.

Pilihan Metode Lain:

Terdapat berbagai metode normalisasi lain yang dapat disesuaikan dengan kebutuhan spesifik setiap data.

Kapan Harus Melakukan Normalisasi Data?

Normalisasi data perlu dilakukan tergantung pada jenis data yang Anda miliki dan tujuan analisisnya. Berikut adalah beberapa situasi di mana normalisasi data umumnya diperlukan:

  1. Ketika Anda bekerja dengan algoritma machine learning yang sensitif terhadap skala data, seperti Support Vector Machines (SVM) atau k-Means Clustering.
  2. Ketika Anda ingin membandingkan variabel-variabel dengan skala yang berbeda dalam analisis statistik atau visualisasi data.
  3. Ketika Anda ingin menghilangkan efek outlier pada data.
  4. Ketika Anda ingin mengubah distribusi data menjadi lebih normal untuk analisis statistik tertentu.
  5. Ketika Anda ingin meningkatkan interpretasi data dalam konteks tertentu.
See also  Melatih Model Yolo5 untuk deteksi Objek

Percobaan Machine Learning

Pengertian dan Cara melakukan Normalisasi Data untuk Deep Learning akan berguna ketika bekerja di Machine Learning. Secara umum, untuk Framework Pytorch dan Tensorflow membutuhkan data masukan/input berupa rentang nilai 0 sampai 1, walaupun demikian, kita bisa paksa saja untuk menggunakan data apa adanya tanpa perlu melakukan normalisasi.

Mari kita coba pakai tensorflow saja untuk di uji cobakan dengan dataset iris, baca lebih lanjut Memilih Tensorflow atau Pytorch untuk Framework Deep Learning

Tahap pertama menggunakan scaler untuk melakukan Scaling

from sklearn import datasets
from sklearn.preprocessing import OneHotEncoder, LabelEncoder, StandardScaler
import tensorflow as tf
from tensorflow import keras
import numpy as np

iris = datasets.load_iris()
X = iris.data
y = iris.target


scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)


lbl_clf = LabelEncoder()
y_encoded = lbl_clf.fit_transform(y)
y_final = tf.keras.utils.to_categorical(y_encoded)


model = keras.models.Sequential([
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(64, activation='relu'),
    keras.layers.Dense(3, activation='softmax')
])

model.compile(loss = 'categorical_crossentropy',
             optimizer = 'adam',
             metrics=['accuracy'])


history = model.fit(X_scaled, y_final, epochs=5000,batch_size=32,shuffle=True, steps_per_epoch=500)
prediksi = np.argmax(model.predict(X_scaled),axis=1)
jumlah_benar = (y==prediksi).sum()
print("akurasi: "+str((jumlah_benar/len(prediksi))*100)+" %")

hasilnya

500/500 [==============================] - 1s 1000us/step - loss: 9.2983e-10 - accuracy: 1.0000
Epoch 48/5000
500/500 [==============================] - 1s 1ms/step - loss: 7.7883e-10 - accuracy: 1.0000
Epoch 49/5000
500/500 [==============================] - 1s 1ms/step - loss: 3.8942e-10 - accuracy: 1.0000
Epoch 50/5000
500/500 [==============================] - 1s 1ms/step - loss: 1.8279e-10 - accuracy: 1.0000
Epoch 51/5000
500/500 [==============================] - 0s 39us/step - loss: 1.8279e-10 - accuracy: 1.0000
akurasi: 100.0 %

mari kita coba tanpa normalisasi dengan mengganti masukan X_scaled menjadi X saja pada kode berikut

history = model.fit(X, y_final, epochs=5000,batch_size=32,shuffle=True, steps_per_epoch=500)
prediksi = np.argmax(model.predict(X),axis=1)
jumlah_benar = (y==prediksi).sum()
print("akurasi: "+str((jumlah_benar/len(prediksi))*100)+" %")

hasilnya

Epoch 48/5000
500/500 [==============================] - 0s 925us/step - loss: 0.0069 - accuracy: 0.9986
Epoch 49/5000
500/500 [==============================] - 0s 924us/step - loss: 0.0217 - accuracy: 0.9901
Epoch 50/5000
500/500 [==============================] - 0s 925us/step - loss: 0.0140 - accuracy: 0.9931
Epoch 51/5000
500/500 [==============================] - 0s 30us/step - loss: 0.0140 - accuracy: 0.9931
akurasi: 99.33333333333333 %

Bisa terlihat ternyata ada pengaruh yang cukup signifikan terhadap hasil nya

 

 

You May Have Missed