Skip to content
Principal Component Analysis (PCA)

Principal Component Analysis (PCA)

Principal Component Analysis (PCA) adalah teknik feature extraction untuk reduksi dimensi yang mengubah data berdimensi tinggi menjadi sejumlah komponen baru yang saling ortogonal, sambil mempertahankan sebanyak mungkin informasi penting dari data asli.

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.

Feature Selection

Pada pendekatan ini, kita memilih sebagian fitur asli yang dianggap paling relevan, lalu membuang fitur lain yang kurang penting.

Contoh:

Jika dataset memiliki fitur X1,X2,X3,X4X_1, X_2, X_3, X_4, maka feature selection mungkin hanya memilih X1X_1 dan X3X_3.

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.
PCA sangat berguna ketika banyak fitur saling berkorelasi. Dalam kondisi seperti itu, sebagian besar informasi sering kali sebenarnya dapat diringkas ke jumlah dimensi yang lebih kecil.

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 PC1PC_1,
  • arah kedua yang tegak lurus terhadap PC1PC_1 dan memiliki varians terbesar berikutnya sebagai PC2PC_2,
  • 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:

PCj=a1jX1+a2jX2++amjXm PC_j = a_{1j}X_1 + a_{2j}X_2 + \cdots + a_{mj}X_m

Keterangan variabel:

  • PCjPC_j = komponen utama ke-jj,
  • aija_{ij} = koefisien atau loading dari fitur ke-ii pada komponen ke-jj,
  • XiX_i = fitur asli ke-ii,
  • mm = 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 XX dengan ukuran n×mn \times m, di mana nn adalah jumlah sampel dan mm 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 nn sampel dan mm fitur. Dataset dapat direpresentasikan sebagai:

X=[x11x12x1mx21x22x2mxn1xn2xnm] X = \begin{bmatrix} x_{11} & x_{12} & \cdots & x_{1m} \\ x_{21} & x_{22} & \cdots & x_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1} & x_{n2} & \cdots & x_{nm} \end{bmatrix}

Keterangan variabel:

  • XX = matriks data,
  • nn = jumlah sampel,
  • mm = jumlah fitur,
  • xijx_{ij} = nilai sampel ke-ii pada fitur ke-jj.

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.

Xcentered=Xμ X_{centered} = X - \mu

Keterangan variabel:

  • XcenteredX_{centered} = data setelah mean centering,
  • XX = data asli,
  • μ\mu = vektor rata-rata tiap fitur.

Untuk setiap fitur XjX_j, rata-ratanya adalah:

μj=1ni=1nxij \mu_j = \frac{1}{n}\sum_{i=1}^{n} x_{ij}

Standardization

Jika skala antar fitur sangat berbeda, gunakan standardization:

zij=xijμjσj z_{ij} = \frac{x_{ij} - \mu_j}{\sigma_j}

Keterangan variabel:

  • zijz_{ij} = nilai hasil standardization,
  • xijx_{ij} = nilai asli,
  • μj\mu_j = rata-rata fitur ke-jj,
  • σj\sigma_j = standar deviasi fitur ke-jj.
Jika semua fitur memiliki satuan atau skala yang sangat berbeda, PCA sebaiknya dilakukan pada data yang telah distandardisasi. Jika skala fiturnya sebanding, mean centering sering kali sudah cukup untuk penjelasan konsep dasar.

Matriks Kovarians

Setelah data dipusatkan, langkah berikutnya adalah menghitung matriks kovarians.

Untuk data dua fitur, bentuk matriks kovarians adalah:

Σ=[Cov(X1,X1)Cov(X1,X2)Cov(X2,X1)Cov(X2,X2)] \Sigma = \begin{bmatrix} \operatorname{Cov}(X_1,X_1) & \operatorname{Cov}(X_1,X_2) \\ \operatorname{Cov}(X_2,X_1) & \operatorname{Cov}(X_2,X_2) \end{bmatrix}

Secara umum:

Σ=1n1XcenteredTXcentered \Sigma = \frac{1}{n-1} X_{centered}^{T} X_{centered}

Keterangan variabel:

  • Σ\Sigma = matriks kovarians,
  • XcenteredX_{centered} = data yang telah di-mean centering,
  • nn = 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:

Σv=λv \Sigma v = \lambda v

Keterangan variabel:

  • Σ\Sigma = matriks kovarians,
  • vv = eigenvector,
  • λ\lambda = 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.

Explained Variance Ratioj=λjk=1mλk \text{Explained Variance Ratio}_j = \frac{\lambda_j}{\sum_{k=1}^{m} \lambda_k}

Keterangan variabel:

  • λj\lambda_j = eigenvalue komponen ke-jj,
  • mm = 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.

IDX1X_1X2X_2
122
225
334
455

Pada contoh ini, kita akan melakukan PCA menggunakan mean centering.

Langkah 1: Hitung Rata-Rata Setiap Fitur

Untuk fitur X1X_1:

Xˉ1=2+2+3+54=124=3 \bar{X}_1 = \frac{2 + 2 + 3 + 5}{4} = \frac{12}{4} = 3

Untuk fitur X2X_2:

Xˉ2=2+5+4+54=164=4 \bar{X}_2 = \frac{2 + 5 + 4 + 5}{4} = \frac{16}{4} = 4

Maka vektor rata-ratanya adalah:

μ=[3,4] \mu = [3, 4]

Langkah 2: Lakukan Mean Centering

Kurangkan setiap nilai dengan rata-rata fiturnya.

IDX1X_1X2X_2X1Xˉ1X_1 - \bar{X}_1X2Xˉ2X_2 - \bar{X}_2
122-1-2
225-11
33400
45521

Sehingga matriks data yang telah di-mean centering adalah:

Xcentered=[12110021] X_{centered} = \begin{bmatrix} -1 & -2 \\ -1 & 1 \\ 0 & 0 \\ 2 & 1 \end{bmatrix}

Langkah 3: Hitung Matriks Kovarians

Gunakan rumus:

Σ=1n1XcenteredTXcentered \Sigma = \frac{1}{n-1} X_{centered}^{T} X_{centered}

Karena n=4n = 4, maka:

Σ=13XcenteredTXcentered \Sigma = \frac{1}{3} X_{centered}^{T} X_{centered}

Pertama, hitung:

XcenteredT=[11022101] X_{centered}^{T} = \begin{bmatrix} -1 & -1 & 0 & 2 \\ -2 & 1 & 0 & 1 \end{bmatrix}

Kemudian:

XcenteredTXcentered=[6336] X_{centered}^{T} X_{centered} = \begin{bmatrix} 6 & 3 \\ 3 & 6 \end{bmatrix}

Sehingga matriks kovariansnya adalah:

Σ=13[6336]=[2112] \begin{aligned} \Sigma &= \frac{1}{3} \begin{bmatrix} 6 & 3 \\ 3 & 6 \end{bmatrix} \\ &= \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \end{aligned}

Interpretasi awal:

  • varians pada X1X_1 adalah 22,
  • varians pada X2X_2 adalah 22,
  • kovarians antara X1X_1 dan X2X_2 adalah 11,
  • ini menunjukkan kedua fitur memiliki hubungan positif.

Langkah 4: Hitung Eigenvalues

Gunakan persamaan karakteristik:

det(ΣλI)=0 \det(\Sigma - \lambda I) = 0

Substitusi matriks kovarians:

det[2λ112λ]=0 \det \begin{bmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \end{bmatrix} = 0

Maka:

(2λ)(2λ)1=0 (2-\lambda)(2-\lambda) - 1 = 0 (2λ)21=0 (2-\lambda)^2 - 1 = 0 44λ+λ21=0 4 - 4\lambda + \lambda^2 - 1 = 0 λ24λ+3=0 \lambda^2 - 4\lambda + 3 = 0

Faktorkan:

(λ3)(λ1)=0 (\lambda - 3)(\lambda - 1) = 0

Sehingga diperoleh dua eigenvalue:

λ1=3,λ2=1 \lambda_1 = 3, \qquad \lambda_2 = 1

Langkah 5: Hitung Eigenvectors

Untuk λ1=3\lambda_1 = 3

Gunakan:

(Σ3I)v=0 (\Sigma - 3I)v = 0 [231123][v1v2]=[00] \begin{aligned} \begin{bmatrix} 2-3 & 1 \\ 1 & 2-3 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} &= \begin{bmatrix} 0 \\ 0 \end{bmatrix} \end{aligned} [1111][v1v2]=[00] \begin{aligned} \begin{bmatrix} -1 & 1 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} &= \begin{bmatrix} 0 \\ 0 \end{bmatrix} \end{aligned}

Diperoleh hubungan:

v1=v2 v_1 = v_2

Ambil salah satu bentuk sederhananya:

v(1)=[11] v^{(1)} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}

Normalisasi eigenvector:

v(1)=12+12=2 \left|v^{(1)}\right| = \sqrt{1^2 + 1^2} = \sqrt{2}

Sehingga eigenvector ternormalisasi adalah:

u1=12[11]=[1212] \begin{aligned} u_1 &= \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 1 \end{bmatrix} \\ &= \begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{bmatrix} \end{aligned}

Untuk λ2=1\lambda_2 = 1

Gunakan:

(ΣI)v=0 (\Sigma - I)v = 0 [211121][v1v2]=[00] \begin{aligned} \begin{bmatrix} 2-1 & 1 \\ 1 & 2-1 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} &= \begin{bmatrix} 0 \\ 0 \end{bmatrix} \end{aligned}

Perhatikan bahwa kita harus mengurangkan matriks identitas secara benar, sehingga:

ΣI=[1111] \Sigma - I = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}

Agar menghasilkan hubungan yang sesuai dengan eigenvalue kedua, kita gunakan bentuk persamaan:

[1111][v1v2]=[00] \begin{aligned} \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} &= \begin{bmatrix} 0 \\ 0 \end{bmatrix} \end{aligned}

Diperoleh:

v1=v2 v_1 = -v_2

Ambil bentuk sederhananya:

v(2)=[11] v^{(2)} = \begin{bmatrix} -1 \\ 1 \end{bmatrix}

Normalisasi eigenvector:

v(2)=(1)2+12=2 \left|v^{(2)}\right| = \sqrt{(-1)^2 + 1^2} = \sqrt{2}

Sehingga eigenvector ternormalisasi adalah:

u2=12[11]=[1212] \begin{aligned} u_2 &= \frac{1}{\sqrt{2}} \begin{bmatrix} -1 \\ 1 \end{bmatrix} \\ &= \begin{bmatrix} -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{bmatrix} \end{aligned}

Langkah 6: Tentukan Principal Components

Urutkan berdasarkan eigenvalue terbesar.

KomponenEigenvaluePrioritas
PC1PC_13Pertama
PC2PC_21Kedua

Maka:

  • PC1PC_1 menggunakan eigenvector u1u_1,
  • PC2PC_2 menggunakan eigenvector u2u_2.

Matriks komponen dapat ditulis sebagai:

W=[12121212] W = \begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix}

Langkah 7: Hitung Explained Variance Ratio

Total varians adalah jumlah semua eigenvalue:

λtotal=3+1=4 \lambda_{total} = 3 + 1 = 4

Untuk PC1PC_1:

Explained Variance RatioPC1=34=0.75=75 \text{Explained Variance Ratio}_{PC_1} = \frac{3}{4} = 0.75 = 75%

Untuk PC2PC_2:

Explained Variance RatioPC2=14=0.25=25 \text{Explained Variance Ratio}_{PC_2} = \frac{1}{4} = 0.25 = 25%

Interpretasi:

  • PC1PC_1 sudah menjelaskan 75% variasi data,
  • PC2PC_2 menjelaskan 25% sisanya,
  • jika ingin mereduksi dari 2 dimensi menjadi 1 dimensi, maka menggunakan PC1PC_1 saja berarti kita tetap mempertahankan 75% informasi utama.

Langkah 8: Transformasi Data ke PCA Space

Transformasi dilakukan dengan rumus:

Z=XcenteredW Z = X_{centered} W

Keterangan variabel:

  • ZZ = data baru pada ruang PCA,
  • XcenteredX_{centered} = data yang telah dipusatkan,
  • WW = matriks eigenvector terpilih.

Jika kita ingin menghitung skor setiap data terhadap PC1PC_1, maka cukup melakukan dot product dengan eigenvector pertama.

Data 1: (1,2)(-1, -2)

PC1=(1)(12)+(2)(12)=322.121 PC_1 = (-1)\left(\frac{1}{\sqrt{2}}\right) + (-2)\left(\frac{1}{\sqrt{2}}\right) = -\frac{3}{\sqrt{2}} \approx -2.121 PC2=(1)(12)+(2)(12)=120.707 PC_2 = (-1)\left(-\frac{1}{\sqrt{2}}\right) + (-2)\left(\frac{1}{\sqrt{2}}\right) = -\frac{1}{\sqrt{2}} \approx -0.707

Data 2: (1,1)(-1, 1)

PC1=(1)(12)+(1)(12)=0 PC_1 = (-1)\left(\frac{1}{\sqrt{2}}\right) + (1)\left(\frac{1}{\sqrt{2}}\right) = 0 PC2=(1)(12)+(1)(12)=22=21.414 PC_2 = (-1)\left(-\frac{1}{\sqrt{2}}\right) + (1)\left(\frac{1}{\sqrt{2}}\right) = \frac{2}{\sqrt{2}} = \sqrt{2} \approx 1.414

Data 3: (0,0)(0, 0)

PC1=0,PC2=0 PC_1 = 0, \qquad PC_2 = 0

Data 4: (2,1)(2, 1)

PC1=2(12)+1(12)=322.121 PC_1 = 2\left(\frac{1}{\sqrt{2}}\right) + 1\left(\frac{1}{\sqrt{2}}\right) = \frac{3}{\sqrt{2}} \approx 2.121 PC2=2(12)+1(12)=120.707 PC_2 = 2\left(-\frac{1}{\sqrt{2}}\right) + 1\left(\frac{1}{\sqrt{2}}\right) = -\frac{1}{\sqrt{2}} \approx -0.707

Sehingga data pada ruang PCA adalah:

IDPC1PC_1PC2PC_2
1-2.121-0.707
20.0001.414
30.0000.000
42.121-0.707

Interpretasi Hasil PCA

Dari contoh di atas, kita dapat menarik beberapa kesimpulan.

  • Arah utama data terdapat pada PC1PC_1.
  • Komponen pertama menjelaskan 75% variasi data.
  • Jika hanya mengambil PC1PC_1, data sudah dapat direpresentasikan dalam dimensi yang lebih rendah dengan kehilangan informasi yang masih relatif kecil.
  • PC2PC_2 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_pca adalah 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

PCA bekerja dengan mencari arah baru yang paling mampu menjelaskan varians data. Langkah utamanya adalah mean centering atau standardization, menghitung matriks kovarians, mencari eigenvalues dan eigenvectors, memilih komponen utama, lalu memproyeksikan data ke ruang baru berdimensi lebih rendah.

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.