Analisis komponen utama di r: contoh langkah-demi-langkah


Analisis komponen utama, sering disingkat PCA, adalah teknik pembelajaran mesin tanpa pengawasan yang berupaya menemukan komponen utama – kombinasi linier dari prediktor asli – yang menjelaskan sebagian besar variasi dalam kumpulan data.

Tujuan PCA adalah untuk menjelaskan sebagian besar variabilitas dalam suatu kumpulan data dengan variabel yang lebih sedikit dibandingkan kumpulan data aslinya.

Untuk kumpulan data tertentu dengan variabel p , kita dapat memeriksa plot sebar dari setiap kombinasi variabel berpasangan, namun jumlah plot sebar dapat menjadi besar dengan sangat cepat.

Untuk prediktor p , terdapat awan titik p(p-1)/2.

Jadi, untuk kumpulan data dengan p = 15 prediktor, akan terdapat 105 plot sebar yang berbeda!

Untungnya, PCA menawarkan cara untuk menemukan representasi kumpulan data berdimensi rendah yang menangkap sebanyak mungkin variasi data.

Jika kita dapat menangkap sebagian besar variasi hanya dalam dua dimensi, kita dapat memproyeksikan semua observasi dari kumpulan data asli ke dalam plot sebar sederhana.

Cara kita mencari komponen utamanya adalah sebagai berikut:

Diberikan kumpulan data dengan prediktor p : _

  • Z m = ΣΦ jm _
  • Z 1 adalah kombinasi linier dari prediktor yang menangkap varians sebanyak mungkin.
  • Z 2 adalah kombinasi linier berikutnya dari prediktor yang menangkap varian terbanyak namun ortogonal (yaitu, tidak berkorelasi) dengan Z 1 .
  • Z 3 kemudian merupakan kombinasi linier berikutnya dari prediktor yang menangkap varian terbanyak namun ortogonal terhadap Z 2 .
  • Dan seterusnya.

Dalam praktiknya, kami menggunakan langkah-langkah berikut untuk menghitung kombinasi linier dari prediktor asli:

1. Skalakan setiap variabel agar mempunyai rata-rata 0 dan deviasi standar 1.

2. Hitung matriks kovarians untuk variabel berskala.

3. Hitung nilai eigen matriks kovarians.

Dengan menggunakan aljabar linier, kita dapat menunjukkan bahwa vektor eigen yang sesuai dengan nilai eigen terbesar adalah komponen utama pertama. Dengan kata lain, kombinasi prediktor khusus ini menjelaskan varian terbesar dalam data.

Vektor eigen yang sesuai dengan nilai eigen terbesar kedua adalah komponen utama kedua, dan seterusnya.

Tutorial ini memberikan contoh langkah demi langkah tentang cara melakukan proses ini di R.

Langkah 1: Muat data

Pertama-tama kita akan memuat paket Tidyverse , yang berisi beberapa fungsi berguna untuk memvisualisasikan dan memanipulasi data:

 library (tidyverse)

Untuk contoh ini, kami akan menggunakan kumpulan data Penangkapan AS yang dibangun ke dalam R, yang berisi jumlah penangkapan per 100.000 penduduk di setiap negara bagian AS pada tahun 1973 karena pembunuhan , penyerangan , dan pemerkosaan .

Ini juga mencakup persentase penduduk setiap negara bagian yang tinggal di daerah perkotaan, UrbanPop .

Kode berikut menunjukkan cara memuat dan menampilkan baris pertama kumpulan data:

 #load data
data ("USArrests")

#view first six rows of data
head(USArrests)

           Murder Assault UrbanPop Rape
Alabama 13.2 236 58 21.2
Alaska 10.0 263 48 44.5
Arizona 8.1 294 80 31.0
Arkansas 8.8 190 50 19.5
California 9.0 276 91 40.6
Colorado 7.9 204 78 38.7

Langkah 2: Hitung komponen utama

Setelah memuat data, kita dapat menggunakan fungsi bawaan R prcomp() untuk menghitung komponen utama kumpulan data.

Pastikan untuk menentukan skala = TRUE sehingga setiap variabel dalam kumpulan data diskalakan agar memiliki rata-rata 0 dan deviasi standar 1 sebelum menghitung komponen utama.

Perhatikan juga bahwa vektor eigen di R mengarah ke arah negatif secara default, jadi kita akan mengalikannya dengan -1 untuk membalikkan tandanya.

 #calculate main components
results <- prcomp(USArrests, scale = TRUE )

#reverse the signs
results$rotation <- -1*results$rotation

#display main components
results$rotation

               PC1 PC2 PC3 PC4
Murder 0.5358995 -0.4181809 0.3412327 -0.64922780
Assault 0.5831836 -0.1879856 0.2681484 0.74340748
UrbanPop 0.2781909 0.8728062 0.3780158 -0.13387773
Rape 0.5434321 0.1673186 -0.8177779 -0.08902432

Terlihat bahwa komponen utama pertama (PC1) memiliki nilai yang tinggi untuk pembunuhan, penyerangan, dan pemerkosaan, yang menunjukkan bahwa komponen utama ini menggambarkan variasi yang paling besar pada variabel-variabel tersebut.

Kita juga dapat melihat bahwa komponen utama kedua (PC2) memiliki nilai yang tinggi untuk UrbanPop, yang menunjukkan bahwa komponen utama ini menekankan pada penduduk perkotaan.

Perhatikan bahwa skor komponen utama untuk setiap negara bagian disimpan di results$x . Kami juga akan mengalikan skor ini dengan -1 untuk membalikkan tandanya:

 #reverse the signs of the scores
results$x <- -1*results$x

#display the first six scores
head(results$x)

                  PC1 PC2 PC3 PC4
Alabama 0.9756604 -1.1220012 0.43980366 -0.154696581
Alaska 1.9305379 -1.0624269 -2.01950027 0.434175454
Arizona 1.7454429 0.7384595 -0.05423025 0.826264240
Arkansas -0.1399989 -1.1085423 -0.11342217 0.180973554
California 2.4986128 1.5274267 -0.59254100 0.338559240
Colorado 1.4993407 0.9776297 -1.08400162 -0.001450164

Langkah 3: Visualisasikan hasilnya dengan biplot

Selanjutnya, kita dapat membuat biplot – plot yang memproyeksikan setiap observasi dalam kumpulan data ke dalam plot sebar yang menggunakan komponen utama pertama dan kedua sebagai sumbu:

Perhatikan bahwa skala = 0 memastikan bahwa panah dalam plot diskalakan untuk mewakili pembebanan.

 biplot(results, scale = 0 )

Biplot untuk Analisis Komponen Utama di R

Dari plot tersebut kita dapat melihat masing-masing dari 50 negara bagian direpresentasikan dalam ruang dua dimensi sederhana.

Negara-negara yang berdekatan pada grafik memiliki pola data yang mirip dengan variabel dalam kumpulan data asli.

Kita juga dapat melihat bahwa beberapa negara bagian lebih terkait erat dengan kejahatan tertentu dibandingkan negara bagian lainnya. Misalnya, Georgia adalah negara bagian yang paling dekat dengan variabel Pembunuhan dalam plot.

Jika kita melihat negara bagian dengan tingkat pembunuhan tertinggi dalam kumpulan data asli, kita dapat melihat bahwa Georgia sebenarnya menduduki peringkat teratas:

 #display states with highest murder rates in original dataset
head(USArrests[ order (-USArrests$Murder),])

               Murder Assault UrbanPop Rape
Georgia 17.4 211 60 25.8
Mississippi 16.1 259 44 17.1
Florida 15.4 335 80 31.9
Louisiana 15.4 249 66 22.2
South Carolina 14.4 279 48 22.5
Alabama 13.2 236 58 21.2

Langkah 4: Temukan varians yang dijelaskan oleh masing-masing komponen utama

Kita dapat menggunakan kode berikut untuk menghitung total varians dalam kumpulan data asli yang dijelaskan oleh masing-masing komponen utama:

 #calculate total variance explained by each principal component
results$sdev^2 / sum (results$sdev^2)

[1] 0.62006039 0.24744129 0.08914080 0.04335752

Dari hasilnya kita dapat mengamati hal-hal berikut:

  • Komponen utama pertama menjelaskan 62% dari total varians dalam dataset.
  • Komponen utama kedua menjelaskan 24,7% dari total varians dalam dataset.
  • Komponen utama ketiga menjelaskan 8,9% dari total varians dalam dataset.
  • Komponen utama keempat menjelaskan 4,3% dari total varians dalam dataset.

Jadi, dua komponen utama pertama menjelaskan sebagian besar total varians dalam data.

Hal ini merupakan pertanda baik karena biplot sebelumnya memproyeksikan setiap observasi dari data asli ke dalam scatterplot yang hanya memperhitungkan dua komponen utama pertama.

Oleh karena itu, valid untuk memeriksa pola dalam biplot untuk mengidentifikasi keadaan yang mirip satu sama lain.

Kita juga dapat membuat scree plot – grafik yang menampilkan total varians yang dijelaskan oleh setiap komponen utama – untuk memvisualisasikan hasil PCA:

 #calculate total variance explained by each principal component
var_explained = results$sdev^2 / sum (results$sdev^2)

#create scree plot
qplot(c(1:4), var_explained) + 
  geom_line() + 
  xlab(" Principal Component ") + 
  ylab(" Variance Explained ") +
  ggtitle(" Scree Plot ") +
  ylim(0, 1) 

Medan layar berbentuk R

Analisis komponen utama dalam praktiknya

Dalam praktiknya, PCA paling sering digunakan karena dua alasan:

1. Analisis Data Eksplorasi – Kami menggunakan PCA saat pertama kali menjelajahi kumpulan data dan ingin memahami observasi mana dalam data yang paling mirip satu sama lain.

2. Regresi Komponen Utama – Kita juga dapat menggunakan PCA untuk menghitung komponen utama yang kemudian dapat digunakan dalam regresi komponen utama . Regresi jenis ini sering digunakan ketika terjadi multikolinearitas antar prediktor dalam suatu kumpulan data.


Kode R lengkap yang digunakan dalam tutorial ini dapat ditemukan di sini .

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *