Principal Component Analysis (PCA)
Pendahuluan
Dalam banyak kasus machine learning, dataset memiliki jumlah fitur yang besar. Semakin banyak fitur, semakin tinggi pula kompleksitas data. Kondisi ini dapat menyebabkan beberapa masalah, seperti proses komputasi yang lebih lambat, kesulitan visualisasi, risiko overfitting, dan sulitnya memahami pola utama dalam data.
Salah satu solusi yang sangat penting adalah dimensionality reduction atau reduksi dimensi. Melalui teknik ini, data diubah ke representasi yang lebih ringkas tanpa kehilangan terlalu banyak informasi penting. Salah satu metode reduksi dimensi yang paling populer adalah Principal Component Analysis (PCA).
Melalui materi ini, Anda akan mempelajari PCA secara bertahap, mulai dari ide dasarnya, alasan penggunaannya, konsep matematis, hingga contoh perhitungan manual yang konsisten dari awal sampai akhir.
Apa Itu Dimensionality Reduction?
Dimensionality reduction adalah teknik untuk mengurangi jumlah fitur dalam dataset sambil tetap mempertahankan informasi yang paling relevan.
Secara umum, terdapat dua pendekatan utama.
Mengapa PCA Penting?
PCA digunakan karena memiliki beberapa manfaat utama.
- Mengurangi jumlah dimensi data.
- Mempercepat proses komputasi.
- Membantu visualisasi data berdimensi tinggi ke 2D atau 3D.
- Mengurangi redundansi antar fitur.
- Membantu mengatasi multikolinearitas.
- Dapat menurunkan noise pada data dalam beberapa kasus.
Intuisi Dasar PCA
Bayangkan data tersebar di ruang 2D atau 3D. Meskipun data memiliki beberapa dimensi, sering kali sebaran utamanya hanya dominan pada arah tertentu.
PCA bekerja dengan mencari:
- arah dengan varians terbesar sebagai principal component pertama atau ,
- arah kedua yang tegak lurus terhadap dan memiliki varians terbesar berikutnya sebagai ,
- dan seterusnya.
Dengan demikian, PCA mengubah sistem koordinat lama menjadi sistem koordinat baru yang lebih sesuai dengan pola utama data.
Konsep Principal Components
Principal components adalah kombinasi linear dari fitur-fitur asli.
Secara umum, komponen utama dapat dituliskan sebagai:
Keterangan variabel:
- = komponen utama ke-,
- = koefisien atau loading dari fitur ke- pada komponen ke-,
- = fitur asli ke-,
- = jumlah fitur asli.
Semakin besar varians yang dijelaskan oleh suatu komponen, semakin penting komponen tersebut dalam mewakili informasi data.
Alur Kerja PCA Secara Umum
Susun data dalam bentuk matriks
Dataset dinyatakan sebagai matriks dengan ukuran , di mana adalah jumlah sampel dan adalah jumlah fitur.
Lakukan mean centering atau standardization
Setiap fitur dikurangi rata-ratanya agar data terpusat di sekitar nol. Jika skala fitur berbeda jauh, biasanya dilakukan standardization.
Hitung matriks kovarians
Matriks kovarians digunakan untuk melihat hubungan dan sebaran antar fitur.
Hitung eigenvalues dan eigenvectors
Eigenvectors menunjukkan arah principal components, sedangkan eigenvalues menunjukkan besarnya varians pada arah tersebut.
Urutkan komponen berdasarkan eigenvalue terbesar
Komponen dengan eigenvalue terbesar dipilih terlebih dahulu karena membawa informasi paling besar.
Pilih jumlah principal components
Jumlah komponen dapat dipilih berdasarkan cumulative explained variance atau kebutuhan visualisasi.
Proyeksikan data ke ruang baru
Data asli diubah ke ruang komponen utama sehingga diperoleh representasi berdimensi lebih rendah.
Representasi Data dalam Bentuk Matriks
Misalkan kita memiliki dataset dengan sampel dan fitur. Dataset dapat direpresentasikan sebagai:
Keterangan variabel:
- = matriks data,
- = jumlah sampel,
- = jumlah fitur,
- = nilai sampel ke- pada fitur ke-.
Setiap baris mewakili satu sampel, sedangkan setiap kolom mewakili satu fitur.
Mean Centering dan Standardization
Sebelum PCA dilakukan, data biasanya dipersiapkan terlebih dahulu.
Mean Centering
Mean centering dilakukan dengan mengurangi setiap fitur terhadap rata-ratanya.
Keterangan variabel:
- = data setelah mean centering,
- = data asli,
- = vektor rata-rata tiap fitur.
Untuk setiap fitur , rata-ratanya adalah:
Standardization
Jika skala antar fitur sangat berbeda, gunakan standardization:
Keterangan variabel:
- = nilai hasil standardization,
- = nilai asli,
- = rata-rata fitur ke-,
- = standar deviasi fitur ke-.
Matriks Kovarians
Setelah data dipusatkan, langkah berikutnya adalah menghitung matriks kovarians.
Untuk data dua fitur, bentuk matriks kovarians adalah:
Secara umum:
Keterangan variabel:
- = matriks kovarians,
- = data yang telah di-mean centering,
- = jumlah sampel.
Jika nilai kovarians antar fitur besar, maka kedua fitur memiliki hubungan linear yang kuat.
Eigenvalues dan Eigenvectors
Setelah memperoleh matriks kovarians, kita mencari eigenvalues dan eigenvectors melalui persamaan:
Keterangan variabel:
- = matriks kovarians,
- = eigenvector,
- = eigenvalue.
Makna dalam PCA:
- eigenvector menunjukkan arah principal component,
- eigenvalue menunjukkan besar varians pada arah tersebut.
Komponen dengan eigenvalue terbesar akan dipilih lebih dahulu karena menjelaskan variasi data yang lebih besar.
Explained Variance
Setelah mendapatkan eigenvalues, kita dapat menghitung proporsi varians yang dijelaskan oleh setiap komponen.
Keterangan variabel:
- = eigenvalue komponen ke-,
- = jumlah total komponen.
Sedangkan cumulative explained variance dihitung sebagai penjumlahan bertahap dari explained variance ratio.
Contoh Perhitungan PCA yang Konsisten
Agar alur perhitungan benar-benar sinkron, kita akan menggunakan satu dataset yang sama dari awal sampai akhir.
Misalkan kita memiliki data dua fitur berikut.
| ID | ||
|---|---|---|
| 1 | 2 | 2 |
| 2 | 2 | 5 |
| 3 | 3 | 4 |
| 4 | 5 | 5 |
Pada contoh ini, kita akan melakukan PCA menggunakan mean centering.
Langkah 1: Hitung Rata-Rata Setiap Fitur
Untuk fitur :
Untuk fitur :
Maka vektor rata-ratanya adalah:
Langkah 2: Lakukan Mean Centering
Kurangkan setiap nilai dengan rata-rata fiturnya.
| ID | ||||
|---|---|---|---|---|
| 1 | 2 | 2 | -1 | -2 |
| 2 | 2 | 5 | -1 | 1 |
| 3 | 3 | 4 | 0 | 0 |
| 4 | 5 | 5 | 2 | 1 |
Sehingga matriks data yang telah di-mean centering adalah:
Langkah 3: Hitung Matriks Kovarians
Gunakan rumus:
Karena , maka:
Pertama, hitung:
Kemudian:
Sehingga matriks kovariansnya adalah:
Interpretasi awal:
- varians pada adalah ,
- varians pada adalah ,
- kovarians antara dan adalah ,
- ini menunjukkan kedua fitur memiliki hubungan positif.
Langkah 4: Hitung Eigenvalues
Gunakan persamaan karakteristik:
Substitusi matriks kovarians:
Maka:
Faktorkan:
Sehingga diperoleh dua eigenvalue:
Langkah 5: Hitung Eigenvectors
Untuk
Gunakan:
Diperoleh hubungan:
Ambil salah satu bentuk sederhananya:
Normalisasi eigenvector:
Sehingga eigenvector ternormalisasi adalah:
Untuk
Gunakan:
Perhatikan bahwa kita harus mengurangkan matriks identitas secara benar, sehingga:
Agar menghasilkan hubungan yang sesuai dengan eigenvalue kedua, kita gunakan bentuk persamaan:
Diperoleh:
Ambil bentuk sederhananya:
Normalisasi eigenvector:
Sehingga eigenvector ternormalisasi adalah:
Langkah 6: Tentukan Principal Components
Urutkan berdasarkan eigenvalue terbesar.
| Komponen | Eigenvalue | Prioritas |
|---|---|---|
| 3 | Pertama | |
| 1 | Kedua |
Maka:
- menggunakan eigenvector ,
- menggunakan eigenvector .
Matriks komponen dapat ditulis sebagai:
Langkah 7: Hitung Explained Variance Ratio
Total varians adalah jumlah semua eigenvalue:
Untuk :
Untuk :
Interpretasi:
- sudah menjelaskan 75% variasi data,
- menjelaskan 25% sisanya,
- jika ingin mereduksi dari 2 dimensi menjadi 1 dimensi, maka menggunakan saja berarti kita tetap mempertahankan 75% informasi utama.
Langkah 8: Transformasi Data ke PCA Space
Transformasi dilakukan dengan rumus:
Keterangan variabel:
- = data baru pada ruang PCA,
- = data yang telah dipusatkan,
- = matriks eigenvector terpilih.
Jika kita ingin menghitung skor setiap data terhadap , maka cukup melakukan dot product dengan eigenvector pertama.
Data 1:
Data 2:
Data 3:
Data 4:
Sehingga data pada ruang PCA adalah:
| ID | ||
|---|---|---|
| 1 | -2.121 | -0.707 |
| 2 | 0.000 | 1.414 |
| 3 | 0.000 | 0.000 |
| 4 | 2.121 | -0.707 |
Interpretasi Hasil PCA
Dari contoh di atas, kita dapat menarik beberapa kesimpulan.
- Arah utama data terdapat pada .
- Komponen pertama menjelaskan 75% variasi data.
- Jika hanya mengambil , data sudah dapat direpresentasikan dalam dimensi yang lebih rendah dengan kehilangan informasi yang masih relatif kecil.
- tetap berguna jika kita ingin mempertahankan seluruh variasi data.
Kapan Harus Memilih Jumlah Komponen?
Jumlah principal components dapat dipilih dengan beberapa cara.
Klik untuk melihat strategi pemilihan komponen
Explained Variance Threshold
Pilih jumlah komponen yang mampu menjelaskan total varians tertentu, misalnya 90% atau 95%.
Scree Plot
Gunakan grafik eigenvalues lalu cari titik elbow, yaitu saat penurunan nilai mulai melambat.
Kebutuhan Analisis
Untuk visualisasi, sering kali cukup 2 komponen atau 3 komponen. Untuk preprocessing machine learning, jumlah komponen dipilih berdasarkan keseimbangan antara efisiensi dan informasi yang dipertahankan.
Kelebihan PCA
- Efektif untuk reduksi dimensi.
- Membantu visualisasi data berdimensi tinggi.
- Dapat mengurangi redundansi antar fitur.
- Berguna untuk preprocessing sebelum klasifikasi, clustering, atau regresi.
- Dapat membantu mengurangi noise dalam beberapa kasus.
Keterbatasan PCA
- Interpretasi komponen baru kadang tidak mudah.
- PCA bersifat linear, sehingga tidak selalu cocok untuk pola non-linear.
- Sangat dipengaruhi oleh skala fitur jika data tidak distandardisasi dengan benar.
- Komponen utama bukan fitur asli, tetapi kombinasi linear dari fitur-fitur lama.
Implementasi Python
Berikut contoh implementasi PCA menggunakan scikit-learn.
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# Dataset
X = np.array([
[2, 2],
[2, 5],
[3, 4],
[5, 5]
])
# Mean centering / standardization
scaler = StandardScaler(with_std=False)
X_centered = scaler.fit_transform(X)
# PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_centered)
# Hasil
print("Mean:", scaler.mean_)
print("Principal Components:\n", pca.components_)
print("Explained Variance:", pca.explained_variance_)
print("Explained Variance Ratio:", pca.explained_variance_ratio_)
print("Transformed Data:\n", X_pca)Membaca Output Python
Saat program dijalankan, perhatikan beberapa hal berikut:
pca.components_menunjukkan arah principal components,pca.explained_variance_menunjukkan eigenvalues,pca.explained_variance_ratio_menunjukkan proporsi varians tiap komponen,X_pcaadalah data baru di ruang PCA.
Jika hasil program tidak persis sama tanda positif-negatifnya dengan perhitungan manual, itu masih normal. Eigenvector dapat berbeda tanda, tetapi tetap mewakili arah yang sama.
Ringkasan
Poin utama yang perlu diingat:
- PCA adalah teknik feature extraction untuk reduksi dimensi.
- Principal component pertama menjelaskan varians terbesar.
- Eigenvalue menunjukkan besar varians, sedangkan eigenvector menunjukkan arah komponen.
- Explained variance membantu memilih jumlah komponen.
- PCA sangat berguna untuk visualisasi, efisiensi komputasi, dan preprocessing data.
Penutup
Principal Component Analysis adalah salah satu teknik paling penting dalam machine learning dan analisis data karena mampu menyederhanakan data tanpa kehilangan terlalu banyak informasi penting. Dengan memahami konsep, matematika dasar, dan contoh perhitungan manual yang konsisten, Anda akan lebih siap menggunakan PCA sebagai teknik preprocessing maupun eksplorasi data pada berbagai permasalahan nyata.