Understanding Decomposition in Machine learning

Wahyu ikbal maulana
HIMIT PENS
Published in
5 min readOct 24, 2023
Image by Author

Untuk memecahkan masalah yang kompleks, salah satu pendekatan umum yang efektif adalah dengan menguraikannya menjadi sub masalah yang lebih kecil. Proses ini di dalam computer science, disebut problem decomposition. Decomposition sendiri dalam ilmu komputer adalah proses memecah masalah atau sistem yang kompleks menjadi beberapa bagian yang lebih mudah untuk dipahami, diprogram, dan dianalisis.

Decomposition in Machine learning

Image by Author

Di dalam Interpretable Machine Learning terdapat Model Agnostic Method, metode ini bersifat fleksibel yang artinya dapat digunakan di berbagai model. Artinya si machine learning engineer dapat dengan bebas menggunakan model machine learning apa pun ketika metode interpretasi dapat diterapkan ke model. Hal ini merupakan penerapan Functional Decomposition. Decomposition sendiri dalam machine learning adalah metode unsupervised learning yang melibatkan pemecahan masalah yang kompleks menjadi sub-masalah yang lebih kecil. Dalam proses data preprocessing salah satu metodenya ialah mereduksi dimensi dengan memecah training set menjadi sub-training set yang lebih kecil. Dengan ini, kita akan lebih mudah memahami cara kerja masalah dan bagaimana komponen yang berbeda berinteraksi, Menemukan solusi untuk masalah tersebut, Sehingga dapat meningkatkan kinerja model machine learning.

Introduction PCA

Salah satu metode decomposition yang populer adalah PCA, metode ini mereduksi dimensi dengan mengubah kumpulan variabel besar menjadi variabel yang lebih kecil, namun mempertahankan informasi dari data besar tersebut. Simpelnya, PCA membuat data yang kompleks menjadi lebih sederhana dengan mengambil banyak informasi dan menemukan bagian yang paling penting.

PCA biasa dipakai pada Desicion Tree, Neural Network. Metode ini bisa dipakai ketika kita ingin visualisasi yang lebih sederhana, mengatasi terlalu banyak feature, hingga mempercepat training sebuah model. Perlu dicatat bahwa metode ini hanya bekerja dalam data yang bersifat linear(linear data).

PCA menangkap variabel dominan dari dataset (lower variance dimension). 3D dataset akan kehilangan banyak inforamasi ketika dipreyeksikan ke dalam 2D. Image by Duke Course Notes, Cynthia Rudin

Algoritma Principal Component Analysis didasarkan dari teori matematika:

  • Variance dan Convariance
  • Eigen Vectors dan Eigen values

Dari dasar matematika tersebut kemudian dikembangkan lagi, menjadi fungsi PCA yang kurang lebih seperti ini:

Image by Bala Pria C, KDNuggets

Detailnya bisa anda cek:

https://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition

https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

Principal Component Analysis (PCA) with Scikit-Learn

Setelah kita memahami PCA, selanjunya pengimplementasikan PCA menggunakan Python dengan menggunakan library Scikit Learn. Dataset yang akan kita pakai kali ini yaitu wine dataset.

  1. Pertama kita import dataset lalu bagi menjadi input dan label
#import library
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#Open dataset
df = pd.read_csv("wine.csv")
inputs = df.iloc[:, 1:14]
labels = df.iloc[:,0]

inputs

2. Sebelum menerapkan PCA analysis, kita perlu menerapkan formula standarisasi, yaitu mengurangi dengan nilai rata rata pada setiap attribut lalu dibagi dengan variansinya.

Di scikit learn sudah terdapat library yang secara otomatis mengkalkulasi, yaitu dengan menggunakan StandardScaler untuk data preprocessing, selain menghapus rata-rata tetapi juga atribut juga mengukur skala atribut yang sesuai.

#Normalize data
from sklearn.preprocessing import StandardScaler
x1 = StandardScaler().fit_transform(inputs)
x1

3. Untuk menerapkan principal component analysis (PCA). Dapat dilakukan dengan memanggil fungsi PCA from sklearn.decomposition.

#Penerapan PCA
from sklearn.decomposition import PCA
pca = PCA()
wine = pca.fit_transform(x1)

#Rasio dari total variansi tiap principal component
print(pca.explained_variance_)
print(pca.explained_variance_ratio_)

Sangat penting untuk mengetahui jumlah variansi yang didapat dari PCA. Dengan memanggil pca.explained tiap input akan mendapatkan rasionya hingga makin mengecil. Hasilnya adalah 1 atribut memiliki variance sebesar 0.361 , yang berarti atribut tersebut menyimpan informasi yang tinggi dan tidak jauh berbeda dari atribut lain.

3. Selanjutnya adalah kita analisa principal components berdasarkan variansi. Untuk menghasilkan plot, kita gunakan library matplotlib.pyplot.

import matplotlib.pyplot as plt
figure = plt.figure()
ax = plt.gca()
plt.plot(pca.explained_variance_, color='red', linestyle='dotted')
ax.set_title("Scree plot")
ax.set_xlabel("Index of principal components")
ax.set_ylabel("The explained variance")

Pengurutkan principal component melalui pengurutan nilai eigen nya. Jadi setelah kita mendapatkan pasangan vektor eigen dan nilai eigen. Nilai eigen tersebut diurutkan mulai dari yang terbesar ke yang terkecil vektor eigennya juga mengikuti. Setelah mendapatkan principal component, untuk menghitung pesentase dari variansi (informasi) yang dihasilkan dari tiap komponen, kita dapat membagi eigen value dari setiap komponen dengan total semua eigen value.

Berikut perbandingan grafik Original data → Standarization → Principal Component

Python, Scikit learn, dan PCA adalah hal penting yang perlu dipelajari dalam data science, untuk kamu yang ingin belajar lebih lanjut bisa kunjungi bisa ai academy, disana dipelajari dari awal Reduksi dimensi dengan PCA

Dataset dan detail Source Code bisa anda lihat disini: https://github.com/wahyudesu/Scikit_learn

Terima kasih telah meluangkan waktu untuk membaca artikel ini hingga akhir. I tried my best to keep it short and simple keeping in mind to use this code in our daily life. Jika ada yang kurang dipahami atau memiliki pertanyaan lebih lanjut, jangan sungkan untuk menghubungi saya. Terima kasih lagi dan semoga harimu menyenangkan👋

--

--

Wahyu ikbal maulana
HIMIT PENS

Im student university in Indonesia. Share data i have studied...