OPERASI MATRIKS

Operasi matriks adalah dasar dari aljabar linier, yang kami definisikan di sini. Pertama kita mendefinisikan penjumlahan matriks. Untuk melakukannya, jumlah vektor baris dari A dan B harus sama dan banyaknya vektor kolom A dan B harus sama.

Di R, kami melakukan hal berikut: Pertama kami mendefinisikan dua vektor:

v1 <- c(2, -1, 3)
v2 <- c(-1, 0, 4)

Maka jumlah dari vektor-vektor tersebut adalah

v1 + v2
## [1]  1 -1  7

Misalkan kita memiliki dua matriks 2 × 3

Di R, kami melakukan hal berikut: Pertama kami mendefinisikan dua matriks:

A <- matrix(c(3, 0, -5, -1, -3, 4), nrow = 2, ncol = 3, byrow = TRUE)
B <- matrix(c(-5, 5, 2, 1, -2, 0), nrow = 2, ncol = 3, byrow = TRUE)

Kemudian jumlah dari matriks ini dapat dihitung dengan

A + B
##      [,1] [,2] [,3]
## [1,]   -2    5   -3
## [2,]    0   -5    4

Dalam R, kita dapat melakukan perkalian skalar sebagai berikut: Pertama kita definisikan matriks A

A <- matrix(c(3, 0, -5, -1, -3, 4), nrow = 2, ncol = 3, byrow = TRUE)

Kemudian kita dapat melakukan perkalian skalar di R sebagai

-3 * A
##      [,1] [,2] [,3]
## [1,]   -9    0   15
## [2,]    3    9  -12

Kami berbicara tentang jumlah dua matriks. Sekarang kita akan mendefinisikan perkalian dua matriks. Ketika kita mengalikan dua matriks, kita harus sangat berhati-hati dengan dimensi mereka. Jumlah vektor kolom kiri matriks harus sama dengan jumlah vektor baris dari matriks kanan. Perkalian matriks m×n dan matriks n×k adalah matriks m×k. Perkalian matriks lebih rumit daripada penambahan matriks. Jadi, kami akan menunjukkan beberapa contoh terlebih dahulu. Pertama, kami menunjukkan perkalian titik, yaitu a kasus khusus perkalian matriks.

Pertama kita mendefinisikan vektor ini:

v1 <- c(2, -1, 3)
v2 <- c(-1, 0, 4)

Maka dot product dari vektor-vektor ini di R adalah

v1 %*% v2
##      [,1]
## [1,]   10

Misalkan kita memiliki matriks 2 × 3 dan matriks 3 × 2

Di R, kami melakukan hal berikut: Pertama kami mendefinisikan dua matriks:

A <- matrix(c(3, 0, -5, -1, -3, 4), nrow = 2, ncol = 3, byrow = TRUE)
B <- matrix(c(-5, 5, 2, 1, -2, 0), nrow = 3, ncol = 2, byrow = TRUE)

Maka dot product dari matriks ini dapat dihitung dengan

A %*% B
##      [,1] [,2]
## [1,]   -5   15
## [2,]   -9   -8

Salah satu operasi penting dalam matriks disebut transpose dari sebuah matriks. Dengan operasi ini, kita bisa lebih fleksibel dengan matriks lain operasi.

Kita dapat menggunakan R untuk menghitung transpose matriks menggunakan t() fungsi. Pertama-tama kita membuat matriks menggunakan fungsi matrix():

A <- matrix(c(4, -1, -5, 0, 1, -2), 2, 3, byrow = TRUE)

Lalu kita ketik R

t(A)
##      [,1] [,2]
## [1,]    4    0
## [2,]   -1    1
## [3,]   -5   -2

Kita dapat melihat sistem persamaan linier sebagai jumlah vektor.

Pengaplikasian Praktik

menghitung vektor eigen dari matriks sigma, standar deviasi untuk distribusi normal bivariat. Vektor eigen suatu matriks akan dibahas pada bab selanjutnya. Transformasi ini menggunakan vektor eigen terkait untuk analisis komponen utama, salah satu yang paling populer tanpa pengawasan model pembelajaran dalam ilmu data. Untuk aplikasi praktis ini, tanpa pergi secara rinci, kami menunjukkan bagaimana mentransformasikan ke titik data yang ditunjukkan pada Gambar. Kami akan menjelaskan lebih detail ketika kami membahas vektor eigen dan eigennya nilai-nilai di bab selanjutnya.

Untuk contoh kerja, kami menghasilkan poin data dari bivariat distribusi normal. Distribusi normal bivariat didefinisikan dengan rata-rata dan standar deviasi, tidak seperti distribusi normal univariat, bagaimanapun, artinya didefinisikan oleh vektor dua dimensi dan standar deviasinya didefinisikan dengan matriks 2 × 2. Kami menggunakan paket R mvtnorm [18] dan kami menggunakan matlib paket untuk operasi matriks. Pertama kita upload semua paket yang dibutuhkan:

library(mvtnorm)
library(ggplot2)
library(matlib)
## Standard deviation
sigma <- matrix(c(4,2,2,3), ncol = 2, nrow = 2)
## Mean
mu <- c(1, 2)

Untuk data ini kami memiliki ukuran sampel n = 10.000

n <- 1000

Fungsi set.seed() menyetel seed, yang merupakan nilai untuk mulai dihasilkan angka acak. Fungsi set.seed() me-reset nilai acak angka dan fungsi acak dari nilai yang diperoleh sebelumnya. Kami mengatur benih untuk mereproduksi hasil yang sama. Jika kita menetapkan benih yang sama, maka kita dapat mereproduksi angka acak yang sama:

set.seed(123)

Akhirnya, kami menghasilkan titik data dengan

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

Untuk memplot data, kami menetapkan titik dalam bingkai data:

d <- data.frame(x)

Menggunakan paket ggplot2 kami memplot titik data sebagai

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

Ini menciptakan plot yang ditunjukkan pada Gambar. Pertama kita terjemahkan semua titik data yang disimpan sebagai variabel x dengan -mu = [−1, −2] karena pusat distribusi berada di mu = [1, 2].

y <- x - mu

Kami menyimpan poin data baru ini sebagai variabel y. Kemudian kami menghitung vektor eigen sigma.

E <- eigen(sigma)
E$vectors
##            [,1]       [,2]
## [1,] -0.7882054  0.6154122
## [2,] -0.6154122 -0.7882054

Vektor eigen dari matriks sigma disimpan dalam E$vectors dalam bentuk dari sebuah matriks. Setiap vektor kolom adalah vektor eigen. Kemudian kita mengambil perkalian matriks, kumpulan data disimpan sebagai 10.000 × 2 matriks dikalikan dengan matriks 2 × 2, transpos dari invers dari matriks E. Invers suatu matriks akan dibahas pada bagian selanjutnya,

y <- y %*% t(inv(E$vectors))

Seperti yang kami lakukan untuk kumpulan data x, kami menetapkan data ini sebagai “bingkai data” menggunakan fungsi data.frame():

dd <- data.frame(y)

Sekarang kita akan merencanakannya

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