PCA (Principal Component Analysis) adalah suatu metode yang digunakan untuk mengekstraksi fitur penting dari suatu data. PCA bekerja dengan cara mencari variansi terbesar dari data tersebut, kemudian menemukan fitur baru yang saling tidak terkorelasi dengan satu sama lain. Setelah itu, fitur-fitur tersebut disebut dengan PC (Principal Component) atau komponen utama, dan dapat digunakan untuk melakukan reduksi dimensi data atau untuk meningkatkan akurasi dari suatu model machine learning. PCA biasanya digunakan untuk menangani data yang memiliki banyak fitur dan dimensi, seperti data citra atau data sinyal.
Selain itu, PCA juga dapat digunakan untuk mengidentifikasi kluster atau pola yang mungkin tersembunyi dalam data. Dengan menggunakan PCA, data dapat diplot dalam bentuk scatter plot, sehingga memudahkan dalam visualisasi dan interpretasi. Namun, perlu diingat bahwa PCA hanya dapat digunakan untuk mengekstraksi fitur dari data yang terdistribusi normal atau mendekati normal. Jika data tidak memenuhi kondisi tersebut, maka metode lain seperti MCA (Multiple Correspondence Analysis) atau ICA (Independent Component Analysis) harus digunakan.
Salah satu keuntungan dari menggunakan PCA adalah dapat mengurangi overfitting pada suatu model machine learning. Hal ini dapat terjadi karena PCA dapat mengurangi jumlah fitur yang digunakan dalam model tanpa mengurangi informasi yang bermanfaat. Selain itu, PCA juga dapat mempercepat proses pelatihan suatu model, karena dengan menggunakan fitur yang lebih sedikit, waktu yang dibutuhkan untuk melatih model akan lebih cepat. Oleh karena itu, PCA merupakan metode yang bermanfaat untuk data yang memiliki banyak fitur dan dimensi.
Untuk menggunakan PCA, pertama-tama data harus di-preprocessing terlebih dahulu. Proses preprocessing ini biasanya meliputi pengnormalan data, penghilangan outlier, dan pengukuran kovariansi antar fitur. Setelah itu, komponen utama dari data tersebut dapat dicari dengan menggunakan rumus matematika yang telah ditetapkan. Kemudian, komponen-komponen tersebut dapat digunakan untuk melakukan reduksi dimensi data atau untuk meningkatkan akurasi suatu model machine learning. Dengan demikian, PCA dapat menjadi metode yang berguna dalam mengekstraksi fitur penting dari data dan meningkatkan performa suatu model machine learning.
Selain itu, PCA juga dapat digunakan untuk melakukan komunikasi data dengan lebih efisien. Hal ini dapat terjadi karena PCA dapat mengurangi jumlah fitur yang dibutuhkan untuk menggambarkan data secara akurat. Dengan menggunakan fitur yang lebih sedikit, data dapat disimpan dan dikirimkan dengan lebih efisien, sehingga memudahkan proses pengolahan dan analisis data. Namun, perlu diingat bahwa PCA tidak selalu menghasilkan fitur yang optimal untuk setiap jenis data, sehingga perlu dilakukan uji coba terlebih dahulu untuk menentukan metode yang paling sesuai.
Selain itu, PCA juga dapat digunakan untuk mengidentifikasi outlier dalam data. Outlier adalah data yang tidak sesuai dengan pola umum dari data tersebut, sehingga dapat mengganggu kinerja suatu model machine learning. Dengan menggunakan PCA, outlier dapat ditemukan dengan cara mencari data yang tidak sesuai dengan komponen utama yang telah ditentukan sebelumnya. Setelah itu, outlier tersebut dapat dihilangkan atau diperhitungkan secara khusus dalam model machine learning, sehingga dapat meningkatkan akurasi dari model tersebut. Dengan demikian, PCA dapat menjadi metode yang berguna dalam mengidentifikasi outlier dalam data.
Lalu kamu juga mungkin pernah mendengar T-SNE.
PCA dan T-SNE adalah dua metode yang berbeda untuk mengekstraksi fitur penting dari data. PCA bekerja dengan cara mencari variansi terbesar dari data dan menemukan komponen utama yang saling tidak terkorelasi dengan satu sama lain. Sementara itu, T-SNE (t-Distributed Stochastic Neighbor Embedding) bekerja dengan cara menemukan struktur yang tersembunyi dalam data dengan mengurangi dimensi data secara bertahap.
Perbedaan utama antara PCA dan T-SNE adalah cara kerja dan hasil yang diperoleh. PCA lebih sesuai untuk data yang terdistribusi normal atau mendekati normal, dan menghasilkan fitur yang linier. Sementara itu, T-SNE lebih sesuai untuk data yang tidak terdistribusi normal, dan menghasilkan fitur yang non-linier. Selain itu, T-SNE lebih sulit dipahami secara matematis, tetapi dapat memberikan visualisasi yang lebih baik dari struktur yang tersembunyi dalam data. Oleh karena itu, pilihan antara PCA dan T-SNE tergantung pada jenis data yang akan dianalisis dan tujuan yang ingin dicapai.
Salah satu contoh penerapan PCA dalam machine learning adalah dalam pengklasifikasian citra. Dalam kasus ini, PCA dapat digunakan untuk mengekstraksi fitur penting dari citra yang akan diklasifikasikan. Setelah fitur-fitur tersebut diperoleh, model machine learning dapat dilatih menggunakan fitur tersebut untuk memprediksi kelas dari citra tersebut. Dengan menggunakan PCA, jumlah fitur yang digunakan dalam model akan berkurang, sehingga dapat mengurangi overfitting dan mempercepat proses pelatihan model. Selain itu, PCA juga dapat membantu dalam mengidentifikasi outlier dalam data, sehingga dapat meningkatkan akurasi dari model yang digunakan.
Berikut adalah contoh python code untuk membuat PCA beserta penjelasannya.
# Import library yang dibutuhkan
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# Load dataset iris
iris = load_iris()
X = iris.data
y = iris.target
# Lakukan data preprocessing dengan StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Aplikasikan PCA
pca = PCA()
pca.fit(X_scaled)
# Tentukan jumlah principal component yang optimal
var_exp = pca.explained_variance_ratio_
cum_var_exp = np.cumsum(var_exp)
# Tampilkan visualisasi dari hasil PCA dengan warna yang berbeda untuk masing-masing principal component
plt.bar(range(1, len(cum_var_exp)+1), var_exp, alpha=0.5, align=”center”, label=”Individual explained variance”)
plt.step(range(1, len(cum_var_exp)+1), cum_var_exp, where=”mid”, label=”Cumulative explained variance”)
plt.ylabel(“Explained variance ratio”)
plt.xlabel(“Principal components”)
plt.legend(loc=”best”)
plt.show()
Output:
Output visualisasi di atas menampilkan bar chart yang menunjukkan proporsi varians yang dijelaskan oleh masing-masing principal component (PC) dan proporsi varians yang dijelaskan oleh kombinasi dari seluruh PC.
Bar chart menunjukkan proporsi varians yang dijelaskan oleh masing-masing PC. Setiap bar menunjukkan proporsi varians yang dijelaskan oleh satu PC.
Line chart menunjukkan proporsi varians yang dijelaskan oleh kombinasi dari seluruh PC. Garis yang terbentuk menunjukkan bagaimana proporsi varians yang dijelaskan oleh kombinasi PC berubah saat jumlah PC bertambah.
Untuk membaca output visualisasi di atas, pertama-tama perhatikan bar chart. Dari bagian ini, kita dapat melihat proporsi varians yang dijelaskan oleh masing-masing PC. Misalnya, jika kita ingin mengetahui proporsi varians yang dijelaskan oleh PC ke-2, kita dapat melihat bar kedua dari kiri. Bar tersebut menunjukkan bahwa PC ke-2 menjelaskan sekitar 0,2 atau 20% dari varians data.
Kemudian, perhatikan bagian line chart. Dari sini, kita dapat melihat proporsi varians yang dijelaskan oleh kombinasi dari seluruh PC. Misalnya, jika kita ingin mengetahui proporsi varians yang dijelaskan oleh kombinasi dari PC ke-1 dan PC ke-2, kita dapat melihat nilai line chart yang merupakan gabungan varians PC 1 dan PC 2. Pada titik ini, terlihat bahwa gabungan dari PC ke-1 dan PC ke-2 menjelaskan sekitar 0,9 atau 90% dari varians data. Artinya kita cukup menggunakan 2 variable saja, informasi dari data tetap akan tercover sebanyak 90%. Ini sangat membantu dalam menghemat time processing maupun menampilkan visualisasi, dimana kita hanya utuh 2 variable saja.
Semoga membantu yaa.