Kali ini kita akan membahas dan mencoba tentang Nilai dan Vektor Eigen

Eigen Values and Eigen Vectors - Nilai dan Vektor Eigen

Nilai dan Vektor Eigen adalah konsep penting dalam aljabar linear. Dalam sebuah matriks persegi, vektor eigen adalah vektor non-nol yang mengalami perubahan skalar ketika dikalikan dengan matriks. Nilai skalar tersebut disebut eigen value.

Jika A adalah matriks n x n maka vektor tidak-nol x di Rn disebut vektor eigen dari A jika Ax sama dengan perkalian suatu skalar dengan x, yaitu Av = λv Skalar λ disebut nilai eigen dari A, dan x dinamakan vektor eigen yang berkoresponden dengan λ.

Kata “eigen” berasal dari Bahasa Jerman yang artinya “asli” atau “karakteristik”. Dengan kata lain, nilai eigen menyatakan nilai karakteristik dari sebuah matriks yang berukuran n x n. yang apabila dikalikan dengan sebuah matriks n x n menghasilkan vektor lain yang merupakan kelipatan vektor itu sendiri.

Kami menggunakan contoh kerja pada Bagian 2.2. Seperti pada Bagian 2.2, kami menghasilkan titik data simulasi di bawah distribusi normal bivariat. Ingatlah bahwa distribusi normal bivariat didefinisikan oleh mean dan standar deviasi, tetapi tidak seperti distribusi normal univariat, mean-nya didefinisikan oleh vektor dua dimensi dan standar deviasinya didefinisikan oleh matriks 2x2. Sekali lagi, kami menggunakan paket R mvtnorm [18] dan menggunakan paket matlib untuk operasi matriks. Pertama, kami mengunggah semua paket yang diperlukan:

library(mvtnorm)
library(ggplot2)
library(matlib)

Paket ggplot2 digunakan untuk membuat plot. Selanjutnya, kita definisikan mean (rata-rata) dan standard deviation (deviasi standar) sebagai:

## Standarddeviation
sigma <-matrix(c(4,3,3,4),ncol=2,nrow=2)
sigma
##      [,1] [,2]
## [1,]    4    3
## [2,]    3    4
## Mean
mu <-c(5,5)
mu
## [1] 5 5
library(magick)
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
showimg <- image_read("definevector1.png")
plot(showimg)

Untuk data ini, kita memiliki ukuran sampel n = 1000.

n <-1000

Fungsi set.seed() mengatur seed (benih) yang merupakan nilai awal untuk menghasilkan angka acak:

set.seed(123)

Terakhir, kami menghasilkan titik-titik data dengan menggunakan…

x <-rmvnorm(n=n,mean=mu,sigma=sigma)

Untuk membuat plot data tersebut, kita menetapkan titik-titiknya dalam suatu data frame.

d <-data.frame(x)

Dengan menggunakan paket ggplot2, kita buat plot titik data tersebut:

p2 <-ggplot(d,aes(x=X1,y=X2))+
geom_point(alpha =.5)+
geom_density_2d()
p2

GAMBAR 6.2 Distribusi normal bivariat yang didefinisikan oleh mean (μ) dan standard deviation (σ) dengan ukuran sampel sebesar 1000.

Berikutnya

Di R, kita dapat menggunakan fungsi eigen() untuk menghitung eigenvalues dan eigenvectors dari sebuah matriks. Sebagai contoh, pertimbangkan sebuah matriks 141:

showimg <- image_read("contoh141.png")
plot(showimg)

Pertama kita definisikan matriks-nya di R :

A <-matrix(c(2,1,1,2),2,2)
A
##      [,1] [,2]
## [1,]    2    1
## [2,]    1    2

Lalu kita panggil fungsi eigen() -nya

eigen(A)
## eigen() decomposition
## $values
## [1] 3 1
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068  0.7071068

Di sini, kolom pertama dari \(vectors* adalah vektor eigen yang terkait dengan nilai eigen yang sama dengan 3, yang merupakan nilai pertama dari *\)values*. Kolom kedua dari $vectors* adalah vektor eigen yang terkait dengan nilai eigen yang sama dengan 1, yang merupakan nilai kedua dari $values. Perhatikan bahwa vektor-vektor ini sudah “dinormalisasi”, artinya panjang vektor-vektor tersebut adalah 1.

Practical Applications

Untuk aplikasi praktis dalam bagian ini, kita akan membahas bagaimana kita dapat menghitung komponen utama pertama dan kedua dari dataset. Kembali ke contoh kerja pada bagian ini, kita telah menghasilkan 1000 titik data di bawah distribusi normal bivariat dengan…

showimg <- image_read("pa_eigen.png")
plot(showimg)

Dalam keadaan sebenarnya, kita tidak mengamati nilai mean (μ) dan covariancematrix (Σ) secara langsung. Yang kita amati hanyalah dataset x yang berisi 1000 titik data. Oleh karena itu, kita harus mengestimasi nilai-nilai ini dari titik data yang ada. Sekarang kita akan mengestimasi covariancematrix. Anggap x adalah matriks yang setiap barisnya mewakili satu titik data dalam dataset dan setiap kolomnya mewakili setiap variabel. Dengan demikian, kita dapat mengestimasi covariancematrix ^Σ dengan x^T x, di mana x^T adalah transpose dari matriks x. ^Σ adalah matriks simetris kxk di mana k adalah jumlah variabel acak.

Perlu dicatat bahwa covariancematrix harus simetris. Ini berarti Σ harus sama dengan transpose dari Σ. Dalam rangka mendefinisikan deviasi standar untuk distribusi normal bivariat, covariancematrix ini harus simetris.

Dalam kehidupan nyata, kita tidak mengamati langsung nilai mean (μ) dan covariancematrix (Σ). Yang kita amati hanyalah dataset x yang berisi 1000 titik data. Oleh karena itu, kita harus mengestimasi nilai-nilai ini dari titik data yang ada. Sekarang kita akan mengestimasi covariancematrix. Anggap x adalah matriks di mana setiap barisnya mewakili satu titik data dalam dataset dan setiap kolomnya mewakili setiap variabel. Dengan demikian, kita dapat memperkirakan covariancematrix ^Σ dengan x^T x, di mana x^T adalah transpose dari matriks x. ^Σ adalah matriks simetris kxk di mana k adalah jumlah variabel acak.

Di R, kita dapat mengestimasi dengan:

y <-t(x)%*%x

Kemudian kita menggunakan fungsi eigen() untuk menghitung nilai dan vektor eigen dari covariance matrix yang telah diestimasi ini:

eigen(y)
## eigen() decomposition
## $values
## [1] 58081.296  1069.938
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.7067305 -0.7074829
## [2,] 0.7074829  0.7067305
showimg <- image_read("eigenvaluesvector.png")
plot(showimg)

respectively.

Karena eigenvalues dari ^Σ berbeda-beda dan ^Σ simetris, eigenvectors dari ^Σ adalah ortogonal dan linearly independent. Sebenarnya, ^Σ selalu simetris dan jika titik-titik ini cukup acak, maka eigenvalues adalah berbeda-beda, dan semua eigenvectors dari ^Σ saling ortogonal. Ini adalah salah satu properti paling penting untuk PCA.

Sekarang kita melihat ke eigenvectors yang dihasilkan dari fungsi eigen() pada ^Σ. Komponen utama pertama untuk dataset x adalah eigenvector untuk eigenvalue terbesar dari ^Σ. Komponen utama kedua adalah eigenvector untuk eigenvalue kedua terbesar dari ^Σ. Faktanya, garis biru pada Gambar 6.4 didefinisikan oleh eigenvector dari eigenvalue terbesar dari ^Σ, yaitu kumpulan semua titik yang didefinisikan oleh…

showimg <- image_read("2.png")
plot(showimg)

di mana v adalah vektor eigenvector yang terkait dengan eigenvalue tertentu, dan λ adalah bilangan real. Pada Gambar 6.4, garis biru dihasilkan oleh komponen utama pertama dan garis merah muda dihasilkan oleh komponen utama kedua.

Untuk memeriksa apakah vektor-vektor ini sebenarnya adalah komponen utama pertama dan kedua, kita dapat menggunakan fungsi prcomp() untuk memverifikasi:

prcomp(d,center=FALSE)
## Standard deviations (1, .., p=2):
## [1] 7.624922 1.034896
## 
## Rotation (n x k) = (2 x 2):
##           PC1        PC2
## X1 -0.7067305 -0.7074829
## X2 -0.7074829  0.7067305
showimg <- image_read("gambar6.4.png")
plot(showimg)

Gambar 6.4

Distribusi normal bivariat didefinisikan oleh mean (μ) dan covariancematrix (Σ) dengan ukuran sampel sebesar 1000. Garis biru disebabkan oleh komponen utama pertama dan garis merah muda disebabkan oleh komponen utama kedua.

Sekian pembahasan tentang Eigen Values and Eigen Vectors.