💡 Aljabar Vektor, Matriks, Dekomposisi Matriks, dan Konsep Jarak
Pengertian, Contoh, dan Implementasi
Disusun oleh Nana Puspita Huwaina
Tanggal: 2025-09-09
::: Matriks adalah salah satu bagian penting dalam aljabar linear yang dapat didefinisikan sebagai Susunan angka-angka di dalam kotak yang dibagi ke dalam baris dan kolom. Matriks memiliki berbagai pengoperasian, antara lain: Penjumlahan, pengurangan, Perkalian, Transpose, invers, dan determinan menjadi dasar dalam penyelesaian dalam permasalahan matriks Selain itu, Konsep matriks lainnya yaitu Dekomposisi matriks, dekomposisi matriks sangat diperlukan untuk memecah matriks kompleks menjadi bentuk yang lebih sederhana, seperti Singular Value Dekomposisi yang memecah suatu matriks menjadi 3 bagian, SVD memudahkan analisis data maupun penyelesaian sistem persamaan linear. Di sisi lain, dalam analisis data dan statistika multivariat, diperlukan pula konsep jarak untuk mengukur kedekatan antar objek, baik dengan jarak Euclidean, Manhattan, Minkowski, maupun Mahalanobis. :::
Menjumlahkan elemen-elemen yang terdapat pada matriks dengan posisi yang sama dan dijadikan dalam 1 bagian matriks
\[ (A + B)_{ij} = a_{ij} + b_{ij} \]
Mengurangi elemen - elemen yang terdapat pada matriks dengan posisi yang sama dan dijadikan dalam 1 matriks
\[ (A -B)_{ij} = a_{ij} -b_{ij} \]
Mengalikan elemen-elemen yang terdapat pada 2 matriks dengan cara mengalikan baris dari matriks pertama dengan kolom dari matriks kedua lalu menjumlahkan hasilnya.
\[ C_{ij} = a_{ij} \times b_{ij}\\ \]
Mengalikan elemen-elemen yang berada dalam matriks dengan angka dalam bentuk skalar
\[ (kA)_{ij} = k \cdot a_{ij} \]
Mengalikan elemen-elemen yang terdapat dalam 2 matriks dengan posisi yang sama kemudian hasil dari perkalian di jumlahkan sehinggal hasil dari dot product ini berbentuk skalar.
\[ (AB)_{ij} = \sum_{k=1}^n a_{ik} b_{kj} \]
Transpose matriks merupakan operasi matriks dengan menukar baris menjadi kolom, dan kolom menjadi baris.
\[ \text{Jika } A = [a_{ij}], \text{ maka } A^T = [a_{ji}] \]
Invers merupakan operasi matriks dengan syarat matriks harus berbentuk persegi kemudian hasil dari invers ini adalah matriks yang kebalikan dari matriks itu sendiri
\[ A^{-1} = \frac{1}{ad - bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix} \]
Determinan Merupakan suatu bilangan skalar yang dihitung dari elemen-elemen sebuah matriks persegi. Determinan memberikan informasi apakah matriks tersebut memiliki invers atau tidak. $$
(A) =
\[\begin{vmatrix} a & b \\ c & d \end{vmatrix}\]= ad - bc \det(A) =
\[\begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix}\]= a(ei - fh) - b(di - fg) + c(dh - eg) $$
A = matrix(c(1.1, 2.2, 1.2,
4.3, 2.1, 3.1,
2.7, 3.6, 5.5), nrow = 3, ncol = 3)
B = matrix(c(3.6, 2.5, 3.3,
4.1, 5.1, 3.9,
2.6, 3.8, 4.7), nrow = 3, ncol = 3, byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 1.1 4.3 2.7
## [2,] 2.2 2.1 3.6
## [3,] 1.2 3.1 5.5
B
## [,1] [,2] [,3]
## [1,] 3.6 2.5 3.3
## [2,] 4.1 5.1 3.9
## [3,] 2.6 3.8 4.7
A+B
## [,1] [,2] [,3]
## [1,] 4.7 6.8 6.0
## [2,] 6.3 7.2 7.5
## [3,] 3.8 6.9 10.2
A-B
## [,1] [,2] [,3]
## [1,] -2.5 1.8 -0.6
## [2,] -1.9 -3.0 -0.3
## [3,] -1.4 -0.7 0.8
A * B
## [,1] [,2] [,3]
## [1,] 3.96 10.75 8.91
## [2,] 9.02 10.71 14.04
## [3,] 3.12 11.78 25.85
3 * A
## [,1] [,2] [,3]
## [1,] 3.3 12.9 8.1
## [2,] 6.6 6.3 10.8
## [3,] 3.6 9.3 16.5
4 * B
## [,1] [,2] [,3]
## [1,] 14.4 10.0 13.2
## [2,] 16.4 20.4 15.6
## [3,] 10.4 15.2 18.8
A %% B
## [,1] [,2] [,3]
## [1,] 1.1 1.8 2.7
## [2,] 2.2 2.1 3.6
## [3,] 1.2 3.1 0.8
B %% A
## [,1] [,2] [,3]
## [1,] 0.3 2.5 0.6
## [2,] 1.9 0.9 0.3
## [3,] 0.2 0.7 4.7
t(A)
## [,1] [,2] [,3]
## [1,] 1.1 2.2 1.2
## [2,] 4.3 2.1 3.1
## [3,] 2.7 3.6 5.5
t(B)
## [,1] [,2] [,3]
## [1,] 3.6 4.1 2.6
## [2,] 2.5 5.1 3.8
## [3,] 3.3 3.9 4.7
solve(A) # inv(A)
## [,1] [,2] [,3]
## [1,] -0.01821153 0.71351856 -0.45809012
## [2,] 0.36329675 -0.13121644 -0.09245856
## [3,] -0.20079384 -0.08171842 0.33387812
solve(B) # inv(B)
## [,1] [,2] [,3]
## [1,] 0.5148838 0.04445445 -0.39840189
## [2,] -0.5137584 0.46930392 -0.02869844
## [3,] 0.1305498 -0.40402904 0.45636149
det(A)
## [1] -21.415
det(B)
## [1] 17.771
eigen value adalah suatu bilangan skalar λ yang menunjukkan seberapa besar suatu eigenvector berubah arah atau panjang ketika dikalikan dengan sebuah matriks.
\[ A v = \lambda v \] untuk mencari eigen value, digunakan rumus : \[ \det(A - \lambda I) = 0 \]
Egenvector adalah vektor khusus yang arahnya tidak berubah ketika dikenai transformasi linear oleh sebuah matriks, hanya panjangnya saja yang bertambah atau berkurang. perubahan panjang tersebut ditentukan oleh bilangan skalar yang disebut eigenvalue.
\[(A - \lambda I)v = 0\]
Pasangan Eigen merupakan kombinasi dari eigenvalue dan eigen vektor yang sesuai.
\[ (\lambda, v) \]
Diberikan sebuah matriks berukuran 3 x 3, yaitu
A = matrix(c(1,3,2,
0,2,1,
4,3,1), nrow=3, byrow=TRUE)
eigA <- eigen(A)
eigA$values
## [1] 5.000000 -1.618034 0.618034
eigA$vectors
## [,1] [,2] [,3]
## [1,] 0.5797410 0.3958428 0.3406402
## [2,] 0.2576627 0.2446443 -0.5511674
## [3,] 0.7729880 -0.8851314 0.7616946
for (i in seq_along(eigA$values)) {
cat("\nPasangan ke-", i, ":\n")
cat("Eigenvalue =", eigA$values[i], "\n")
cat("Eigenvector =\n")
print(eigA$vectors[, i])
}
##
## Pasangan ke- 1 :
## Eigenvalue = 5
## Eigenvector =
## [1] 0.5797410 0.2576627 0.7729880
##
## Pasangan ke- 2 :
## Eigenvalue = -1.618034
## Eigenvector =
## [1] 0.3958428 0.2446443 -0.8851314
##
## Pasangan ke- 3 :
## Eigenvalue = 0.618034
## Eigenvector =
## [1] 0.3406402 -0.5511674 0.7616946
singular value decomposition (svd) adalah metode dalam aljabar linear yang memecah sebuah matriks 𝐴 menjadi tiga matriks, yaitu U dan V berisi matriks ortonormal dan sigma berisi matriks singular value.
\[ A \in \mathbb{R}^{m \times n} \] dapat dituliskan sebagai: \[ A = UDV^T \]
dengan :
\[ U \in \mathbb{R}^{m \times m}, U^TU = I_m\ (ortogonal)\\V \in \mathbb{R}^{n \times n}\, \ V^TV = I_n\ (ortogonal) \\D \in \mathbb{R}^{m \times n}\\ diagonal\ dengan\ elemen\ singular\ value: \ D = \begin{bmatrix} \ D_1 & 0 & \cdots & 0 \\ 0 & \ D_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \ D_r \end{bmatrix} \]
diberikan matriks sebagai berikut :
# Matriks A
A = matrix(c(2, -1, 3,
4, 5, -1,
-2, 3, 5,
3, 4, 3), 4, 3, byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 2 -1 3
## [2,] 4 5 -1
## [3,] -2 3 5
## [4,] 3 4 3
svd_result <- svd(A)
singular_value <- svd_result$d
U <- svd_result$u
V <- svd_result$v
U
## [,1] [,2] [,3]
## [1,] -0.1726703 -0.239947505 -0.8666270
## [2,] -0.5871644 0.626321632 0.1682518
## [3,] -0.4312181 -0.741653592 0.4251125
## [4,] -0.6629282 -0.009816237 -0.1998209
V
## [,1] [,2] [,3]
## [1,] -0.4376174 0.5558645 -0.7067572
## [2,] -0.7684550 0.1769132 0.6149623
## [3,] -0.4668704 -0.8122293 -0.3497365
singular_value
## [1] 8.729879 6.259170 3.551339
Jarak euclidean adalah ukuran jarak terpendek antara dua titik yang dihubungkan oleh garis lurus. konsep ini sama seperti menghitung jarak lurus antara dua titik di peta tanpa mengikuti jalan yang berliku.
\(p\) dimensi. \[ d_{\text{Euclidean}}(x,y) = \sqrt{\sum_{i=1}^p (x_i - y_i)^2} \]
Jarak manhattan adalah ukuran jarak antara dua titik dengan cara menjumlahkan perbedaan mutlak tiap koordinatnya. konsep ini seperti menghitung jarak di kota dengan jalan berbentuk kotak-kotak, di mana kita hanya bisa bergerak lurus ke arah horizontal dan vertikal, bukan secara diagonal.
\[ d_{\text{Manhattan}}(x,y) = \sum_{i=1}^p |x_i - y_i| \]
###Jarak Chebyshev J
Jarak chebyshev adalah ukuran jarak antara dua titik yang ditentukan oleh perbedaan terbesar di antara koordinatnya.
\[ d_{\text{Chebyshev}}(x,y) = \max_{i=1,\dots,p} |x_i - y_i| \]
Jarak Mahalanobis adalah ukuran jarak antar titik yang mempertimbangkan hubungan atau korelasi antar variabel dalam data. Jarak mahalanobis menyesuaikan skala dan keterkaitan antar variabel sehingga lebih akurat untuk data multivariat.
\[ d_{\text{Mahalanobis}}(x,y) = \sqrt{(x - y)^T S^{-1} (x - y)} \]
Jarak minkowski adalah ukuran jarak umum yang menjadi dasar dari jarak euclidean dan manhattan, tergantung nilai parameternya. Jarak minkowski memberikan fleksibilitas untuk mengatur cara menghitung jarak sesuai kebutuhan analisis data
\[ d_{\text{Minkowski}}(x,y;q) = \left( \sum_{i=1}^p |x_i - y_i|^q \right)^{\frac{1}{q}} \]
catatan: - \(q=1\) ⟶ Jarak
Manhattan
- \(q=2\) ⟶ Jarak Euclidean
- \(q \to \infty\) ⟶ Jarak
Chebyshev
matriks adalah sebagai berikut
# Data eksplisit (5 observasi, 3 variabel)
data <- matrix(c(1,3,2,
7,4,5,
3,3,4,
1,5,6,
7,5,6), nrow = 5, byrow = TRUE)
colnames(data) <- c("X1", "X2", "X3")
rownames(data) <- paste("Obs", 1:5, sep = "")
data
## X1 X2 X3
## Obs1 1 3 2
## Obs2 7 4 5
## Obs3 3 3 4
## Obs4 1 5 6
## Obs5 7 5 6
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
dist.eucl <- dist(data, method = "euclidean"); dist.eucl
## Obs1 Obs2 Obs3 Obs4
## Obs2 6.782330
## Obs3 2.828427 4.242641
## Obs4 4.472136 6.164414 3.464102
## Obs5 7.483315 1.414214 4.898979 6.000000
fviz_dist(dist.eucl)
Interpretasi: Berdasarkan headmap diatas, observasi 1 dan observasi 5 memiliki jarak yang paling jauh ditandai dengan warna biru. Sedangkan jarak yang paling jauh adalah observasi ke 2 dan observasi ke 5 ditandai dengan warna mendekati merah.
dist.man <- dist(data, method = "manhattan"); dist.man
## Obs1 Obs2 Obs3 Obs4
## Obs2 10
## Obs3 4 6
## Obs4 6 8 6
## Obs5 12 2 8 6
fviz_dist(dist.man)
Interpretasi: Berdasarkan headmap diatas, observasi 1 dan observasi 5 memiliki jarak yang paling jauh ditandai dengan warna biru. Sedangkan jarak yang paling jauh adalah observasi ke 2 dan observasi ke 5 ditandai dengan warna mendekati merah.
dist.cheb <- dist(data, method = "maximum"); dist.cheb
## Obs1 Obs2 Obs3 Obs4
## Obs2 6
## Obs3 2 4
## Obs4 4 6 2
## Obs5 6 1 4 6
fviz_dist(dist.cheb)
Interpretasi: Berdasarkan headmap diatas, observasi 1 dan observasi 4 memiliki jarak yang sangat jauh dengan observasi 2 dan observasi 5 ditandai dengan warna biru tua.Sedangkan jarak yang paling auh adalah observasi ke 2 dan observasi ke 5 ditandai dengan warna mendekati merah.
library(StatMatch)
## Loading required package: proxy
##
## Attaching package: 'proxy'
## The following objects are masked from 'package:stats':
##
## as.dist, dist
## The following object is masked from 'package:base':
##
## as.matrix
## Loading required package: survey
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
##
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
##
## dotchart
## Loading required package: lpSolve
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
dist.mah <- mahalanobis.dist(data); dist.mah
## Obs1 Obs2 Obs3 Obs4 Obs5
## Obs1 0.000000 2.460499 2.741079 2.789943 2.578497
## Obs2 2.460499 0.000000 1.903056 2.671167 1.208081
## Obs3 2.741079 1.903056 0.000000 2.578497 2.789943
## Obs4 2.789943 2.671167 2.578497 0.000000 2.313299
## Obs5 2.578497 1.208081 2.789943 2.313299 0.000000
dist.mah_matrix <- as.matrix(dist.mah);dist.mah_matrix
## Obs1 Obs2 Obs3 Obs4 Obs5
## Obs1 0.000000 2.460499 2.741079 2.789943 2.578497
## Obs2 2.460499 0.000000 1.903056 2.671167 1.208081
## Obs3 2.741079 1.903056 0.000000 2.578497 2.789943
## Obs4 2.789943 2.671167 2.578497 0.000000 2.313299
## Obs5 2.578497 1.208081 2.789943 2.313299 0.000000
# Fungsi jarak Minkowski untuk matriks data
minkowski_matrix <- function(data, q) {
n <- nrow(data)
D <- matrix(0, n, n)
for (i in 1:n) {
for (j in 1:n) {
D[i, j] <- sum(abs(data[i, ] - data[j, ])^q)^(1/q)
}
}
rownames(D) <- rownames(data)
colnames(D) <- rownames(data)
return(D)
}
# Hitung matriks jarak Minkowski untuk q = 3
dist.mink <- minkowski_matrix(data, q = 3)
dist.mink
## Obs1 Obs2 Obs3 Obs4 Obs5
## Obs1 0.000000 6.248800 2.519842 4.160168 6.603854
## Obs2 6.248800 0.000000 4.041240 6.018462 1.259921
## Obs3 2.519842 4.041240 0.000000 2.884499 4.308869
## Obs4 4.160168 6.018462 2.884499 0.000000 6.000000
## Obs5 6.603854 1.259921 4.308869 6.000000 0.000000
Matriks rata-rata adalah matriks yang setiap elemennya berisi nilai rata-rata dari data pada posisi yang sama di beberapa matriks atau observasi. matriks ini membantu merangkum informasi sehingga lebih mudah melihat pola umum. tengah) dari data. Jika X adalah matriks data berukuran m x n, maka vektor rata-rata:
\[ \bar{x} = \begin{bmatrix} \bar{x}_1 \\ \bar{x}_2 \\ \vdots \\ \bar{x}_p \end{bmatrix} = \frac{1}{n} \sum_{i=1}^n x_i \]
Matriks kovarians adalah matriks yang menunjukkan hubungan kovarians antar variabel dalam sebuah dataset. Matriks ini membantu memahami seberapa kuat dua variabel berubah bersama-sama, apakah meningkat atau menurun secara bersamaan.
\[ S = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})(x_i - \bar{x})^T \]
\[ S = \begin{bmatrix} s_{11} & s_{12} & \cdots & s_{1p} \\ s_{21} & s_{22} & \cdots & s_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ s_{p1} & s_{p2} & \cdots & s_{pp} \end{bmatrix} \]
Matriks korelasi adalah matriks yang berisi nilai koefisien korelasi antar variabel dalam suatu dataset. matriks ini menunjukkan kekuatan dan arah hubungan linear antar variabel, dengan nilai berkisar antara -1 sampai 1.
\[ R = D^{-1} S D^{-1} \] \[ D = \text{diag}\left(\sqrt{s_{11}}, \sqrt{s_{22}}, \dots, \sqrt{s_{pp}}\right) \] \[ r_{ij} = \frac{s_{ij}}{\sqrt{s_{ii} \cdot s_{jj}}} \]
Matriks standarisasi adalah matriks yang diperoleh dengan menstandarkan setiap variabel sehingga memiliki rata-rata nol dan standar deviasi satu. matriks ini digunakan agar variabel dengan skala berbeda dapat dibandingkan secara adil. Untuk data \(X\), matriks data terstandardisasi \(Z\):
\[ Z = (X - \mathbf{1}\bar{x}^T) D_s^{-1} \]
dengan \(\mathbf{1}\) adalah vektor satuan, dan
\[ D_s = \text{diag}(\sqrt{s_{11}}, \sqrt{s_{22}}, \dots, \sqrt{s_{pp}}) \]
(BB) dan Tinggi Badan (TB) anak-anak sebagai berikut :
Pupuk <- c(10, 15, 20, 25, 30)
Waktu_Berjemur <- c(13, 26, 34, 27, 45)
Tinggi_Tumbuhan <- c(80, 83, 87, 84, 93)
data_b <- as.matrix(cbind(Pupuk, Waktu_Berjemur, Tinggi_Tumbuhan));
data_b
## Pupuk Waktu_Berjemur Tinggi_Tumbuhan
## [1,] 10 13 80
## [2,] 15 26 83
## [3,] 20 34 87
## [4,] 25 27 84
## [5,] 30 45 93
vecMeans = as.matrix(colMeans(data_b)); vecMeans
## [,1]
## Pupuk 20.0
## Waktu_Berjemur 29.0
## Tinggi_Tumbuhan 85.4
vecRata = matrix(c(mean(Pupuk), mean(Waktu_Berjemur), mean(Tinggi_Tumbuhan)), nrow=3, ncol=1); vecRata
## [,1]
## [1,] 20.0
## [2,] 29.0
## [3,] 85.4
varkov = cov(data_b); varkov
## Pupuk Waktu_Berjemur Tinggi_Tumbuhan
## Pupuk 62.50 81.25 33.75
## Waktu_Berjemur 81.25 137.50 56.50
## Tinggi_Tumbuhan 33.75 56.50 24.30
korel = cor(data_b); korel
## Pupuk Waktu_Berjemur Tinggi_Tumbuhan
## Pupuk 1.0000000 0.8764598 0.8660254
## Waktu_Berjemur 0.8764598 1.0000000 0.9774487
## Tinggi_Tumbuhan 0.8660254 0.9774487 1.0000000
n = nrow(data_b);n
## [1] 5
u = matrix(1,n,1); u
## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
## [4,] 1
## [5,] 1
xbar = cbind((1/n)*t(u)%*%data_b); xbar
## Pupuk Waktu_Berjemur Tinggi_Tumbuhan
## [1,] 20 29 85.4
D = data_b - u %*% xbar; D
## Pupuk Waktu_Berjemur Tinggi_Tumbuhan
## [1,] -10 -16 -5.4
## [2,] -5 -3 -2.4
## [3,] 0 5 1.6
## [4,] 5 -2 -1.4
## [5,] 10 16 7.6
S = (1/(n-1))*t(D)%*%D; S
## Pupuk Waktu_Berjemur Tinggi_Tumbuhan
## Pupuk 62.50 81.25 33.75
## Waktu_Berjemur 81.25 137.50 56.50
## Tinggi_Tumbuhan 33.75 56.50 24.30
Ds = diag(sqrt(diag(S))); Ds
## [,1] [,2] [,3]
## [1,] 7.905694 0.00000 0.000000
## [2,] 0.000000 11.72604 0.000000
## [3,] 0.000000 0.00000 4.929503
R = solve(Ds) %*% S %*% solve(Ds); R
## [,1] [,2] [,3]
## [1,] 1.0000000 0.8764598 0.8660254
## [2,] 0.8764598 1.0000000 0.9774487
## [3,] 0.8660254 0.9774487 1.0000000