PRINCIPAL COMPONENT ANALYSIS (#1)

(Catatan yang saya buat mengenai langkah PCA dan penjelasannya secara detail, bisa dilihat di halaman ini)

Principal Component Analysis atau yang lebih populer dikenal dengan singkatannya ‘PCA’, adalah sebuah metode statistik yang banyak digunakan dalam sistem pengenalan pola (wajah, karakter, dll) serta kompresi citra.

PCA pada dasarnya bekerja pada sekelompok data observasi yang pada awalnya memiliki kemungkinan saling berelasi, kemudian proses PCA mengkonversi data tersebut sedemikian rupa sehingga yang tersisa adalah data yang tidak saling berelasi satu sama lain yang disebut dengan Principal Component.

Jumlah Principal Component yang dihasilkan adalah kurang dari atau sama dengan jumlah data aslinya.

Principal Component akan diurutkan dari data yang dianggap paling penting sampai data yang kurang penting. Sederhananya, data pada baris pertama hasil konversi adalah Principal Component pertama dan yang paling berpengaruh terhadap variasi data asli.

Proses PCA dapat dilakukan dengan 2 cara:

1. Menggunakan eigen function dari covarian-nya.

2. Menggunakan SVD (Singular Value Decomposition).

Yang akan dibahas di sini adalah cara 1, yang diimplementasikan pada bahasa pemrograman Matlab dengan menggunakan komponen standar dan komponen dari Statistics Toolbox.

IMPLEMENTASI

1. Siapkan data sumber (di sini saya gunakan 3 buah citra wajah dengan objek yang sama). Citra diset dengan ukuran yang sama yaitu 47×53 pixel.

Kemudian masing-masing matriks citra diubah ke dalam matriks berukuran Mx1 yaitu 2491×1 (dimana 2491 didapatkan dari hasil perkalian dari 47×53).

Jadi akan terdapat 3 buah matriks berukurab 2491×1 yang menyimpan ketiga buah gambar di atas. Langkah selanjutnya adalah menyimpan semua matriks gambar ke dalam sebuah matriks, sebut saja namanya ‘All’ yang berukuran MxN yaitu 2491×3. Dimana M adalah ukuran gambar dan N adalah jumlah variabel input (dalam hal ini jumlah gambar).

>>All

65           74           129

70           78           134

75           87           142

79           97           149

………….

………….

134        91           49

125        100        44

122        116        44  (sampai baris ke 2491)

>> [M N] = size(All)

M =

2491
N =

3

2. Standarisasi Data 

Sebelum masuk ke proses PCA, data sampel pada matriks ‘All’ distandarisasi terlebih dahulu dengan cara mengatur nilai mean menjadi ‘0’ (nol) dan menyeragamkan deviasi standarnya.

>> All2 = zscore(All)

All2 =

-0.0960 -1.3081 -0.2422
0.1189 -1.1863 -0.0773
0.3338 -0.9122 0.1866
0.5057 -0.6077 0.4176

…….

……

2.8693 -0.7904 -2.8812
2.4825 -0.5164 -3.0461
2.3536 -0.0292 -3.0461 (sampai baris ke 2491)

Hasil standarisasi yang disimpan pada matriks ‘All2’ kemudian diinputkan ke dalam proses PCA.

3. Proses PCA

Cara mudah untuk mendapatkan principal component pada matriks ‘All2’ adalah dengan menggunakan fungsi princomp yang telah disiapkan pada statistics toolbox. Fungsi ini akan menghitung eigen function dari covarians-nya dan menghasilkan tiga buah variabel yakni: COEFF, SCORE dan LATENT.

>> [COEFF SCORE LATENT] = princomp(All2)

COEFF =

0.5780 -0.5738 0.5802
0.6234 -0.1484 -0.7677
0.5266 0.8054 0.2720
SCORE =

-0.9985 0.0540 0.8827
-0.7115 0.0455 0.9587
-0.2775 0.0941 0.9448
0.1333 0.1363 0.8735
0.4920 0.0987 0.7754
0.6903 0.0755 0.7030
0.6711 0.1670 0.5904

…….

…….

-0.9765 -3.9263 1.5904
-0.7617 -3.8017 2.0183
-0.3516 -3.8498 1.4880
-0.4912 -3.8014 1.0084
-0.2620 -3.7997 0.5596 (sampai baris ke 2491)
LATENT =

2.1631
0.5885
0.2484

Dimana,

COEFF: menyimpan nilai koefisien dari principal component-nya.

LATENT : menyimpan varians dari principal component-nya.

SCORE: data principal componen dari matriks asal ‘All’ yang telah diurutkan dari baris pertama sampai baris terakhir, dimana baris pertama mengandung informasi data (principal component) yang paling penting pertama, kemudian paling penting nomor 2 berada di baris kedua..dan demikian seterusnya hingga baris terakhir yang merupakan data yang kurang berarti.

Untuk tahap selanjutnya, principal component dalam variabel SCORE dapat dipilih jumlahnya (baris) sesuai dengan kebutuhan. Misalkan bila diinginkan jumlah principal component yang disisakan adalah 100 data saja, maka dapat dilakukan dengan:

>> PC = SCORE(1:100,:)

PC =

-0.9985 0.0540 0.8827
-0.7115 0.0455 0.9587
-0.2775 0.0941 0.9448
0.1333 0.1363 0.8735
0.4920 0.0987 0.7754
0.6903 0.0755 0.7030

…….

…….

-0.1074 0.2447 0.7761
0.2347 0.3407 0.6784
0.4314 0.3485 0.6383
0.5728 0.3387 0.6360   (sebanyak 100 baris)

Ini berarti: 100 buah data principal component pertama didapatkan dan disimpan dalam variabel PC.

Dengan menggunakan PCA, data berdimensi 2491×3 telah direduksi menjadi 100×3.

Pembahasan ini dilanjutkan di sini.

3 thoughts on “PRINCIPAL COMPONENT ANALYSIS (#1)

  1. Pingback: Langkah Umum Principal Component Analysis | Luh Prapitasari

  2. Pingback: Langkah Umum Principal Component Analysis | Tyang Luhtu

  3. Pingback: PRINCIPAL COMPONENT ANALYSIS (#2) | Tyang Luhtu

Comments are closed.