💡 Dekomposisi Matriks dan Konsep Jarak
Penjelasan, Rumus, dan Contoh dari Praktikum 1
Disusun oleh Rovita Dwi Pratiwi
Tanggal: 2025-09-11
Penjumlahan matriks adalah operasi matematika yang menjumlahkan dua matriks dengan cara menjumlahkan elemen-elemen yang bersesuaian pada posisi yang sama. Kedua matriks harus memiliki ukuran (ordo) yang sama, yaitu jumlah baris dan kolomnya sama.
\[
A + B =
\begin{bmatrix}
a_{11}+b_{11} & a_{12}+b_{12} \\
a_{21}+b_{21} & a_{22}+b_{22}
\end{bmatrix}
\]
A <- matrix(c(2,4,7,
3,5,8,
1,6,9),
nrow = 3, byrow = FALSE)
B <- matrix(c(1,2,6,
0,3,7,
4,5,8),
nrow = 3, byrow = FALSE)
A_plus_B <- A + B
A_plus_B
## [,1] [,2] [,3]
## [1,] 3 3 5
## [2,] 6 8 11
## [3,] 13 15 17
Pengurangan matriks adalah operasi matematika untuk mengurangi dua matriks dengan cara mengurangkan elemen-elemen yang bersesuaian pada posisi yang sama.Kedua matriks harus memiliki ordo yang sama (jumlah baris dan kolom sama).
\[ A - B = \begin{bmatrix} a_{11}-b_{11} & a_{12}-b_{12} & a_{13}-b_{13} \\ a_{21}-b_{21} & a_{22}-b_{22} & a_{23}-b_{23} \\ a_{31}-b_{31} & a_{32}-b_{32} & a_{33}-b_{33} \end{bmatrix} \]
A <- matrix(c(2,4,7,
3,5,8,
1,6,9),
nrow = 3, byrow = FALSE)
B <- matrix(c(1,2,6,
0,3,7,
4,5,8),
nrow = 3, byrow = FALSE)
A_minus_B <- A - B
A_minus_B
## [,1] [,2] [,3]
## [1,] 1 3 -3
## [2,] 2 2 1
## [3,] 1 1 1
Perkalian matriks adalah operasi matematika untuk mengalikan dua matriks dengan cara mengalikan elemen-elemen baris pada matriks pertama dengan elemen-elemen kolom pada matriks kedua, lalu menjumlahkannya.
\[ c_{ij} = \sum_{k=1}^{n} a_{ik} \cdot b_{kj} \]
A <- matrix(c(1, 2,
3, 4), nrow = 2, byrow = TRUE)
B <- matrix(c(5, 6,
7, 8), nrow = 2, byrow = TRUE)
C <- A %*% B
C
## [,1] [,2]
## [1,] 19 22
## [2,] 43 50
Perkalian antar elemen (Hadamard Product) adalah operasi perkalian dua matriks dengan ukuran (ordo) yang sama, di mana setiap elemen hasilnya diperoleh dengan mengalikan elemen pada posisi yang sama.
\[ C = \begin{bmatrix} a_{11} \cdot b_{11} & a_{12} \cdot b_{12} & \dots & a_{1n} \cdot b_{1n} \\ a_{21} \cdot b_{21} & a_{22} \cdot b_{22} & \dots & a_{2n} \cdot b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} \cdot b_{m1} & a_{m2} \cdot b_{m2} & \dots & a_{mn} \cdot b_{mn} \end{bmatrix} \]
A <- matrix(c(1, 2,
3, 4), nrow = 2, byrow = TRUE)
B <- matrix(c(5, 6,
7, 8), nrow = 2, byrow = TRUE)
C <- A * B
C
## [,1] [,2]
## [1,] 5 12
## [2,] 21 32
Transpose matriks adalah operasi yang menukar baris menjadi kolom dan kolom menjadi baris pada suatu matriks. Jika ada matriks 𝐴 A berukuran 𝑚 × 𝑛 m×n, maka transpose-nya, yang dilambangkan dengan 𝐴 𝑇 A T , adalah matriks berukuran 𝑛 × 𝑚 n×m.
\[ A = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix} , A^T = \begin{bmatrix} a_{11} & a_{21} & \dots & a_{m1} \\ a_{12} & a_{22} & \dots & a_{m2} \\ \vdots & \vdots & \ddots & \vdots \\ a_{1n} & a_{2n} & \dots & a_{mn} \end{bmatrix} \]
A <- matrix(c(1, 2, 3,
4, 5, 6),
nrow = 2, byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
A_transpose <- t(A)
A_transpose
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
Invers matriks adalah kebalikan dari suatu matriks persegi (matriks yang jumlah barisnya sama dengan jumlah kolomnya). Jika sebuah matriks 𝐴 A memiliki invers, maka inversnya dilambangkan dengan 𝐴 − 1 A −1 .
\[ A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \quad A^{-1} = \frac{1}{ad - bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix} \]
A <- matrix(c(2, 1,
5, 3),
nrow = 2, byrow = TRUE)
A
## [,1] [,2]
## [1,] 2 1
## [2,] 5 3
determinant_A <- det(A)
determinant_A
## [1] 1
A_inverse <- solve(A)
A_inverse
## [,1] [,2]
## [1,] 3 -1
## [2,] -5 2
Determinan matriks adalah nilai skalar yang dihitung dari sebuah matriks persegi ( 𝑛 × 𝑛 n×n) dan memiliki banyak kegunaan dalam aljabar linear, seperti untuk menentukan apakah suatu matriks dapat dibalik (invers) atau tidak.
\[ \det(A) = ad - bc \det(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(2, 3,
4, 5),
nrow = 2, byrow = TRUE)
A
## [,1] [,2]
## [1,] 2 3
## [2,] 4 5
determinant_A <- det(A)
determinant_A
## [1] -2
B <- matrix(c(2, 4, 3,
1, 5, 7,
6, 8, 9),
nrow = 3,
ncol = 3,
byrow = TRUE)
B
## [,1] [,2] [,3]
## [1,] 2 4 3
## [2,] 1 5 7
## [3,] 6 8 9
determinant_B <- det(B)
determinant_B
## [1] 44
Eigenvalue (nilai eigen) adalah skalar khusus yang menunjukkan seberapa besar suatu transformasi linear (yang direpresentasikan oleh sebuah matriks persegi) meregangkan atau mengecilkan suatu vektor (disebut eigenvector) tanpa mengubah arah vektor tersebut.
\[ \det(A - \lambda I) = \begin{vmatrix} a-\lambda & b \\ c & d-\lambda \end{vmatrix} = (a-\lambda)(d-\lambda) - bc = 0 \]
A <- matrix(c(2, 1,
1, 2),
nrow = 2, byrow = TRUE)
A
## [,1] [,2]
## [1,] 2 1
## [2,] 1 2
eigen_A <- eigen(A)
eigen_A$values
## [1] 3 1
eigen_A$vectors
## [,1] [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068 0.7071068
Dekomposisi Singular Value (Singular Value Decomposition, SVD) adalah teknik aljabar linear untuk memecah sebuah matriks 𝐴 A berukuran 𝑚 × 𝑛 m×n menjadi tiga matriks.
\[ A = U \Sigma V^T \]
# Membuat matriks A
A <- matrix(c(2, 4, 3,
1, 5, 7,
6, 8, 9),
nrow = 3, byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 2 4 3
## [2,] 1 5 7
## [3,] 6 8 9
svd_A <- svd(A)
svd_A$u
## [,1] [,2] [,3]
## [1,] -0.3173925 0.1832897 -0.930412219
## [2,] -0.5018010 -0.8649827 0.000779704
## [3,] -0.8046476 0.4671293 0.366513978
svd_A$d
## [1] 16.6427574 2.6501773 0.9975909
svd_A$v
## [,1] [,2] [,3]
## [1,] -0.3583824 0.86951634 0.3398579
## [2,] -0.6138259 0.05481881 -0.7875358
## [3,] -0.7034059 -0.49085256 0.5140856
Jarak Euclidean (Euclidean Distance) adalah jarak lurus terpendek antara dua titik dalam ruang Euclidean (garis, bidang, atau ruang berdimensi lebih tinggi). Konsep ini berasal dari geometri Euclid dan merupakan salah satu ukuran jarak paling umum digunakan dalam analisis data, machine learning, dan statistik.
\[
d(P,Q) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}
\]
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
kota <- data.frame(
Nama = c("Kota A", "Kota B", "Kota C", "Kota D", "Kota E"),
X = c(230, 120, 250, 400, 550),
Y = c(220, 80, 200, 320, 450)
)
coords <- kota[, c("X", "Y")]
kota
## Nama X Y
## 1 Kota A 230 220
## 2 Kota B 120 80
## 3 Kota C 250 200
## 4 Kota D 400 320
## 5 Kota E 550 450
dist.eucl <- dist(coords, method = "euclidean")
dist.eucl
## 1 2 3 4
## 2 178.04494
## 3 28.28427 176.91806
## 4 197.23083 368.78178 192.09373
## 5 394.08121 567.27418 390.51248 198.49433
fviz_dist(dist.eucl, gradient = list(low = "blue", high = "yellow"))
Berdasarkan perhitungan jarak Euclidean dari koordinat lima kota, terlihat bahwa Kota A dan Kota C memiliki jarak yang relatif dekat karena koordinat keduanya mirip, sehingga pada heatmap ditunjukkan dengan warna biru keunguan. Kota D dan Kota E juga berada berdekatan, tercermin dari warna yang serupa. Sebaliknya, Kota B memiliki jarak yang cukup jauh dengan Kota E, yang ditunjukkan dengan warna kuning terang pada heatmap sebagai jarak terbesar di antara semua pasangan kota. Pola warna juga menunjukkan bahwa Kota B terletak lebih terpisah dibandingkan kota lainnya, sementara Kota A dan C berada lebih sentral sehingga jaraknya dengan kota-kota lain tidak terlalu ekstrem
Jarak Chebyshev (Chebyshev Distance) adalah ukuran jarak antara dua titik dalam ruang vektor yang dihitung berdasarkan perbedaan maksimum antar koordinatnya. Dengan kata lain, jarak ini melihat perbedaan terbesar pada satu dimensi sebagai jarak antar titik tersebut.
\[ d_{\text{Chebyshev}}(P,Q) = \max_{i} |x_i - y_i| \]
dist.cheb <- dist(coords, method = "maximum")
dist.cheb
## 1 2 3 4
## 2 140
## 3 20 130
## 4 170 280 150
## 5 320 430 300 150
fviz_dist(dist.cheb, gradient = list(low = "pink", high = "green"))
Dari pola warna terlihat bahwa Kota B dan Kota C memiliki jarak Chebyshev yang relatif besar (warna hijau), sedangkan Kota A dan Kota C jaraknya lebih kecil (warna mendekatipink), menandakan bahwa koordinat keduanya cukup dekat di satu dimensi. Kota E memiliki jarak Chebyshev yang relatif tinggi terhadap kota lainnya karena berada paling jauh di ujung koordinat.
Jarak Manhattan (Manhattan Distance) adalah ukuran jarak antara dua
titik yang dihitung sebagai jumlah nilai mutlak perbedaan tiap
koordinatnya.
Disebut “Manhattan” karena perhitungannya mirip jarak yang ditempuh di
jalan kota Manhattan yang berbentuk grid (hanya bergerak horizontal dan
vertikal, tidak diagonal).
\[ P = (x_1, x_2, \dots, x_n), \quad Q = (y_1, y_2, \dots, y_n) \] \[ d_{\text{Manhattan}}(P,Q) = \sum_{i=1}^{n} |x_i - y_i| \]
dist.manh <- dist(coords, method = "manhattan")
dist.manh
## 1 2 3 4
## 2 250
## 3 40 250
## 4 270 520 270
## 5 550 800 550 280
fviz_dist(dist.manh, gradient = list(low = "green", high = "blue"))
Kota B dan Kota C memiliki jarak Manhattan terbesar (warna biru tua), menunjukkan perbedaan koordinat yang signifikan di kedua sumbu.Kota A dan Kota C atau Kota D dan Kota E tampak lebih dekat (warna hijau), artinya posisi mereka relatif berdekatan.Kota B secara umum lebih jauh dari kota-kota di ujung seperti Kota E, sementara kota-kota tengah (A dan C) berada di posisi strategis dengan jarak sedang terhadap kota lainnya.
Jarak Mahalanobis adalah ukuran jarak antara sebuah titik data dengan pusat distribusi multivariat (mean) dari data tersebut, dengan memperhitungkan korelasi antar variabel.
\[ D_M(\mathbf{x}) = \sqrt{ (\mathbf{x} - \boldsymbol{\mu})^T \mathbf{S}^{-1} (\mathbf{x} - \boldsymbol{\mu}) } \]
S <- cov(coords)
S
## X Y
## X 27950 23000
## Y 23000 19280
S_inv <- tryCatch(
solve(S),
error = function(e) ginv(S)
)
mu <- colMeans(coords)
D_maha <- mahalanobis(coords, center = mu, cov = S_inv)
D_maha
## [1] 326287680 3113476280 305880480 583618680 4514420480
Jarak Minkowski adalah ukuran jarak antara dua titik dalam ruang vektor yang ditentukan oleh sebuah parameter p untuk mencari jarak umum karena menjadi bentuk dasar yang mencakup berbagai jenis jarak lain.
\[ D_p(x, y) = \left( \sum_{i=1}^{n} |x_i - y_i|^p \right)^{\frac{1}{p}} \]
p_val <- 3 # bisa diganti sesuai kebutuhan
dist.mink <- dist(coords, method = "minkowski", p = p_val)
dist.mink
## 1 2 3 4
## 2 159.72609
## 3 25.19842 157.74171
## 4 180.82950 329.50646 172.16381
## 5 355.51799 506.78744 349.31840 177.28434
fviz_dist(dist.mink, gradient = list(low = "yellow", high = "purple"))
Kota B dan Kota C memiliki jarak yang relatif besar (warna ungu), menunjukkan koordinat keduanya cukup jauh. Kota A dan Kota C atau Kota D dan Kota E terlihat lebih dekat (warna oranye ke kuning). Kota E memiliki jarak yang besar terhadap kota B.
Vektor rata-rata adalah vektor yang berisi nilai rata-rata dari setiap variabel (komponen) dalam suatu kumpulan data multivariat. Jika kita memiliki n pengamatan (observasi) dan p variabel, maka vektor rata-rata berukuran p . Vektor ini berguna untuk menggambarkan pusat data (center) dalam analisis statistik multivariat.
\[
\bar{x} =
\begin{bmatrix}
\bar{x}_1 \\
\bar{x}_2 \\
\vdots \\
\bar{x}_p
\end{bmatrix}
=
\begin{bmatrix}
\frac{1}{n}\sum_{i=1}^n x_{i1} \\
\frac{1}{n}\sum_{i=1}^n x_{i2} \\
\vdots \\
\frac{1}{n}\sum_{i=1}^n x_{ip}
\end{bmatrix}
\]
data <- data.frame(
X1 = c(2, 4, 6, 8),
X2 = c(1, 3, 5, 7),
X3 = c(10, 20, 30, 40)
)
colMeans(data)
## X1 X2 X3
## 5 4 25
Matriks persegi yang memuat kovarians antar variabel dalam suatu dataset multivariat. Diagonal utama memuat varians tiap variabel, sedangkan elemen di luar diagonal memuat kovarians antara dua variabel berbeda.
\[ \Sigma = \frac{1}{n-1}(X - \bar{X})^T(X - \bar{X}) \]
data <- data.frame(
X1 = c(2, 4, 6, 8),
X2 = c(1, 3, 5, 7),
X3 = c(10, 20, 30, 40)
)
cov_matrix <- cov(data)
cov_matrix
## X1 X2 X3
## X1 6.666667 6.666667 33.33333
## X2 6.666667 6.666667 33.33333
## X3 33.333333 33.333333 166.66667
Matriks korelasi adalah matriks persegi yang berisi nilai koefisien korelasi antar variabel dalam sebuah dataset multivariat. Nilai di diagonal utama selalu 1, karena setiap variabel berkorelasi sempurna dengan dirinya sendiri.Matriks korelasi digunakan untuk mengetahui hubungan antar variabel dan mengidentifikasi multikolinearitas.
\[ R = \begin{bmatrix} 1 & r_{12} & r_{13} & \cdots & r_{1p} \\ r_{21} & 1 & r_{23} & \cdots & r_{2p} \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ r_{p1} & r_{p2} & \cdots & r_{pp} & 1 \end{bmatrix} \]
# Membuat data
data <- data.frame(
X1 = c(20, 44, 36, 18),
X2 = c(19, 23, 25, 37),
X3 = c(10, 20, 30, 40)
)
cor_matrix <- cor(data)
cor_matrix
## X1 X2 X3
## X1 1.0000000 -0.3761921 -0.1436370
## X2 -0.3761921 1.0000000 0.9333333
## X3 -0.1436370 0.9333333 1.0000000
Matriks standarisasi adalah matriks yang diperoleh dengan menstandarkan (menormalisasi) setiap variabel data sehingga memiliki Rata-rata (mean) = 0 dan Simpangan baku (standard deviation) = 1. Tujuannya adalah agar semua variabel berada pada skala yang sam, sehingga tidak ada variabel yang mendominasi analisis karena perbedaan satuan atau skala pengukuran.
\[ Z = \begin{bmatrix} z_{11} & z_{12} & \cdots & z_{1p} \\ z_{21} & z_{22} & \cdots & z_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n1} & z_{n2} & \cdots & z_{np} \end{bmatrix} \]
# Membuat data
data <- data.frame(
X1 = c(2, 4, 6, 8),
X2 = c(1, 3, 5, 7),
X3 = c(10, 20, 30, 40)
)
standarisasi <- scale(data)
standarisasi
## X1 X2 X3
## [1,] -1.1618950 -1.1618950 -1.1618950
## [2,] -0.3872983 -0.3872983 -0.3872983
## [3,] 0.3872983 0.3872983 0.3872983
## [4,] 1.1618950 1.1618950 1.1618950
## attr(,"scaled:center")
## X1 X2 X3
## 5 4 25
## attr(,"scaled:scale")
## X1 X2 X3
## 2.581989 2.581989 12.909944