Matriks

Definisi Matriks

Matriks adalah kumpulan angka yang disusun dalam bentuk persegi panjang dengan baris dan kolom. Jika matriks mempunyai \(m\) baris dan \(n\) kolom, maka disebut matriks berordo \(m \times n\). Berikut adalah bentuk umum matriks: \[ \mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \] Contoh :
\[ \mathbf{A} = \begin{bmatrix} 3 & 2 & 1 \\ 0 & -4 & 5 \\ 7 & 6 & 8 \\ \end{bmatrix} \]

Pada software R, dalam menginput matriks dapat dilakukan dengan menggunakan syntax-syntax berikut.

# Membuat matriks dengan cara langsung
A <- matrix(c(3, 2, 1,
              0, -4, 5,
              7, 6, 8), nrow = 3, ncol = 3, byrow = TRUE); A
##      [,1] [,2] [,3]
## [1,]    3    2    1
## [2,]    0   -4    5
## [3,]    7    6    8
# Membuat matriks dengan cara byrow
B <- matrix(c(5, 7, 1,
              2, 0, 4,
              3, 6, 8), nrow = 3, ncol = 3, byrow = TRUE); B
##      [,1] [,2] [,3]
## [1,]    5    7    1
## [2,]    2    0    4
## [3,]    3    6    8
# Membuat matriks dengan vektor panjang
X <- matrix(11:30, nrow = 4, ncol = 5) ; X
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   11   15   19   23   27
## [2,]   12   16   20   24   28
## [3,]   13   17   21   25   29
## [4,]   14   18   22   26   30
# Membuat matriks dengan nama baris dan kolom
elemen <- c(10, 15, 20, 25)
kolom_nama <- c("C1", "C2")
baris_nama <- c("R1", "R2")
Y <- matrix(elemen, nrow=2, ncol=2,
            byrow=TRUE, dimnames=list(baris_nama,
                                      kolom_nama)) ; Y
##    C1 C2
## R1 10 15
## R2 20 25

Operasi Matriks

1. Penjumlahan Matriks

Dua matriks hanya bisa dijumlahkan jika ukurannya (ordo) sama. Operasi dilakukan dengan menjumlahkan elemen yang posisinya sesuai.

Rumus: \[ \boldsymbol{C} = \boldsymbol{A} + \boldsymbol{B} = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}+b_{11} & a_{12}+b_{12} \\ a_{21}+b_{21} & a_{22}+b_{22} \end{bmatrix} \]

Berikut cara menjumlahan matriks di software R:

A + B
##      [,1] [,2] [,3]
## [1,]    8    9    2
## [2,]    2   -4    9
## [3,]   10   12   16

2. Pengurangan Matriks

Pengurangan matriks sama dengan penjumlahan, yang mana dapat dilakukan jika matriks tersebut memiliki ordo yang sama.

Rumus: \[ \boldsymbol{A} - \boldsymbol{B} = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} - \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}-b_{11} & a_{12}-b_{12} \\ a_{21}-b_{21} & a_{22}-b_{22} \end{bmatrix} \]

Berikut cara pengurangan matriks di software R:

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

3. Perkalian Matriks

Perkalian matriks adalah operasi biner yang menghasilkan sebuah matriks dari dua matriks tertentu. Operasi ini memiliki aturan khusus yang membedakannya dari perkalian biasa. Secara umum, perkalian matriks dalam R terbagi menjadi tiga:

a. Perkalian Biasa (Baris dengan Kolom)

Perkalian matriks dilakukan dengan dot product baris dan kolom.
Jika \(A\) berukuran \(m \times n\) dan \(B\) berukuran \(n \times p\), maka hasil \(C = A \times B\) berukuran \(m \times p\).

Rumus umum: \[ c_{ij} = \sum_{k=1}^{n} a_{ik} \cdot b_{kj} \]

Contoh (2×2): \[ \begin{bmatrix} a & b\\ c & d \end{bmatrix} \begin{bmatrix} e & f\\ g & h \end{bmatrix} = \begin{bmatrix} ae+bg & af+bh\\ ce+dg & cf+dh \end{bmatrix} \]

Syntax R:

A %*% B
##      [,1] [,2] [,3]
## [1,]   22   27   19
## [2,]    7   30   24
## [3,]   71   97   95

b. Perkalian antar Elemen Matriks

Setiap elemen pada posisi \((i,j)\) dikalikan dengan elemen pada posisi yang sama di matriks lain.
Kedua matriks harus punya ordo yang sama.

Rumus: \[ \begin{bmatrix} a & b\\ c & d \end{bmatrix} \circ \begin{bmatrix} e & f\\ g & h \end{bmatrix} = \begin{bmatrix} ae & bf\\ cg & dh \end{bmatrix} \]

Syntax R:

A * B
##      [,1] [,2] [,3]
## [1,]   15   14    1
## [2,]    0    0   20
## [3,]   21   36   64

c. Perkalian Skalar × Matriks

Jika matriks \(A\) dikalikan konstanta \(k\), maka setiap elemen dikalikan \(k\).

Rumus: \[ k \cdot \begin{bmatrix} a & b\\ c & d \end{bmatrix} = \begin{bmatrix} ka & kb\\ kc & kd \end{bmatrix} \]

Syntax R:

3 * A   # contoh k = 3
##      [,1] [,2] [,3]
## [1,]    9    6    3
## [2,]    0  -12   15
## [3,]   21   18   24

4. Matriks Transpose

Matriks transpose merupakan matriks yang diperoleh dengan menukar setiap baris sebuah matriks menjadi kolom, atau sebaliknya. Biasanya ditulis \(A^T\).

Rumus: \[ \boldsymbol{A}^T = \begin{bmatrix} a & c\\ b & d \end{bmatrix} \quad\text{jika }\; \boldsymbol{A}=\begin{bmatrix} a & b\\ c & d \end{bmatrix} \]

Contoh (R):

transA <- t(A); transA
##      [,1] [,2] [,3]
## [1,]    3    0    7
## [2,]    2   -4    6
## [3,]    1    5    8
transB <- t(B); transB
##      [,1] [,2] [,3]
## [1,]    5    2    3
## [2,]    7    0    6
## [3,]    1    4    8

5. Invers

Matriks invers adalah matriks kebalikan dari sebuah matriks persegi \(\boldsymbol{A}\).
Jika \(\boldsymbol{A}\) memiliki invers, maka berlaku:

\[ \boldsymbol{A} \cdot \boldsymbol{A}^{-1} = \boldsymbol{A}^{-1} \cdot \boldsymbol{A} = \boldsymbol{I} \]

dengan \(\boldsymbol{I}\) adalah matriks identitas.

Syarat:
- \(\boldsymbol{A}\) harus matriks persegi (\(n \times n\))
- Determinan \(\det(\boldsymbol{A}) \neq 0\)

Rumus Invers (2×2):

Jika
\[ \boldsymbol{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \] maka inversnya adalah:

\[ \boldsymbol{A}^{-1} = \frac{1}{ad-bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix} \]

Contoh (R):

# Invers matriks
inv_A <- solve(A); inv_A
##            [,1]        [,2]       [,3]
## [1,]  0.7045455  0.11363636 -0.1590909
## [2,] -0.3977273 -0.19318182  0.1704545
## [3,] -0.3181818  0.04545455  0.1363636
inv_B <- solve(B); inv_B
##             [,1]        [,2]       [,3]
## [1,]  0.17647059  0.36764706 -0.2058824
## [2,]  0.02941176 -0.27205882  0.1323529
## [3,] -0.08823529  0.06617647  0.1029412

6. Determinan

Determinan matriks adalah sebuah nilai skalar yang dihitung dari elemen-elemen matriks persegi (n × n). Nilai determinan digunakan untuk:
- Mengecek apakah matriks dapat dibalik (\(\det(A) \neq 0\))
- Menentukan sifat matriks (misalnya dalam sistem persamaan linear, eigenvalue, dll.)

Rumus Determinan (2×2):

Jika
\[ \boldsymbol{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \]

maka
\[ \det(\boldsymbol{A}) = ad - bc \]

Rumus Determinan (3×3):

Jika
\[ \boldsymbol{A} = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}, \]

maka
\[ \det(\boldsymbol{A}) = a(ei - fh) - b(di - fg) + c(dh - eg) \]

Contoh Manual (2×2):

Misalkan
\[ \boldsymbol{A} = \begin{bmatrix} 3 & 2 \\ 1 & 4 \end{bmatrix} \]

\[ \det(\boldsymbol{A}) = (3)(4) - (2)(1) = 12 - 2 = 10 \]

Contoh (R):

# Determinan matriks
det(A)
## [1] -88
det(B)
## [1] -136

7. Memamnggil Komponen Matriks

Dalam R, sebuah matriks \(\boldsymbol{A}\) diakses menggunakan indeks baris dan indeks kolom dengan format:

\[ A[\text{baris}, \text{kolom}] \]

  • Jika baris dikosongkan, maka semua baris dipilih.
    \[ A[,j] \quad \Rightarrow \quad \text{kolom ke-}j \]

  • Jika kolom dikosongkan, maka semua kolom dipilih.
    \[ A[i,] \quad \Rightarrow \quad \text{baris ke-}i \]

  • Jika baris dan kolom diisi angka tertentu, maka elemen tunggal dipilih.
    \[ A[i,j] \quad \Rightarrow \quad \text{elemen pada baris ke-}i \text{ dan kolom ke-}j \]

  • Kita juga bisa memanggil beberapa baris/kolom sekaligus dengan vektor indeks atau rentang indeks.
    \[ A[c(i_1,i_2),j] \quad \Rightarrow \quad \text{elemen pada baris } i_1, i_2 \text{ di kolom } j \]
    \[ A[i:p,] \quad \Rightarrow \quad \text{semua baris dari } i \text{ sampai } p \]

Contoh Matriks Misalkan:

\[ \boldsymbol{X} = \begin{bmatrix} 2 & 3 & -1 \\ 1 & -2 & 0 \\ 2 & 1 & 2 \end{bmatrix} \]

X <- matrix(c(2, 3, -1,
              1, -2, 0,
              2, 1, 2), nrow = 3, ncol = 3, byrow = TRUE); X
##      [,1] [,2] [,3]
## [1,]    2    3   -1
## [2,]    1   -2    0
## [3,]    2    1    2
  • Memanggil semua entri kolom ke-2

\[ X[,2] = \begin{bmatrix} 3 \\ -2 \\ 1 \end{bmatrix} \]

X[,2]
## [1]  3 -2  1
  • Memanggil semua entri baris ke-3

\[ X[3,] = \begin{bmatrix} 2 & 1 & 2 \end{bmatrix} \]

X[3,]
## [1] 2 1 2
  • Memanggil entri pada baris ke-3 dan kolom ke-2

\[ X[3,2] = 1 \]

X[3,2]
## [1] 1
  • Memanggil entri pada baris ke-1 dan 3 di kolom ke-2

\[ \{X[1,2], X[3,2]\} = \{3,1\} \]

X[c(1,3),2]
## [1] 3 1
  • Memanggil semua entri pada kolom 1 sampai 3

\[ X[,1:3] = \begin{bmatrix} 2 & 3 & -1 \\ 1 & -2 & 0 \\ 2 & 1 & 2 \end{bmatrix} \]

X[,1:3]
##      [,1] [,2] [,3]
## [1,]    2    3   -1
## [2,]    1   -2    0
## [3,]    2    1    2
  • Memanggil semua entri pada baris ke-2 dan 3

\[ X[2:3,] = \begin{bmatrix} 1 & -2 & 0 \\ 2 & 1 & 2 \end{bmatrix} \]

X[2:3,]
##      [,1] [,2] [,3]
## [1,]    1   -2    0
## [2,]    2    1    2

Eigen Value dan Eigen Vector

Nilai eigen (eigenvalue) dan vektor eigen (eigenvector) adalah konsep fundamental dalam aljabar linear yang menjelaskan bagaimana sebuah transformasi linear bekerja. Secara sederhana, ketika sebuah matriks dikalikan dengan vektor eigen-nya, hasilnya adalah vektor dengan arah yang sama tetapi panjangnya berubah (diperpanjang atau diperkecil), tanpa mengubah arah.

Eigen Value menunjukkan jumlah variasi (informasi) yang dapat dijelaskan oleh satu komponen. Sedangkan Eigen Vector menunjukkan jumlah variasi (informasi) yang dijelaskan dari satu atau beberapa komponen lainnya.

Eigen Value dan eigen vector ini sangat berguna dalam analisis data multivariat misalnya dalam Principal Komponen Analysis, Factor Analysis, dll.

Misalkan \(\mathbf{A}\) adalah matriks persegi berukuran \(n \times n\). Vektor tak nol \(\mathbf{x} \in \mathbb{R}^n\) dikatakan vektor eigen untuk \(\mathbf{A}\) jika terdapat skalar \(\lambda\) sedemikian sehingga: \[ \mathbf{A}\mathbf{x} = \lambda \mathbf{x} \]

Di sini: - \(\lambda\) disebut eigenvalue (nilai eigen), - \(\mathbf{x}\) disebut eigenvector (vektor eigen) yang bersesuaian dengan \(\lambda\).

\[ \ Ax = λx\]

Eigen Value

Eigenvalue dicari melalui persamaan karakteristik berikut:

\[ \det(\mathbf{A} - \lambda \mathbf{I}) = 0 \]

dengan \(\mathbf{I}\) matriks identitas. Persamaan ini menghasilkan polinomial berderajat \(n\) dalam \(\lambda\), dan akarnya adalah eigenvalue.

Contoh manual (matriks 2x2):

Misalkan: \[ \mathbf{A} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \]

  1. Bentuk persamaan karakteristik: \[ \det(\mathbf{A} - \lambda \mathbf{I}) = \det \begin{bmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \end{bmatrix} = 0 \]

  2. Hitung determinan: \[ (2-\lambda)(2-\lambda) - (1)(1) = \lambda^2 - 4\lambda + 3 = 0 \]

  3. Diperoleh: \[ \lambda_1 = 3, \quad \lambda_2 = 1 \]

Sehingga eigenvalue matriks \(A\) adalah 3 dan 1.

Implementasi di R:

# Hitung eigenvalue & eigenvector
eigA = eigen(A); eigA
## eigen() decomposition
## $values
## [1] 11.341618 -5.702302  1.360685
## 
## $vectors
##            [,1]       [,2]       [,3]
## [1,] -0.1850242  0.1776538 -0.7876126
## [2,] -0.3045191 -0.9315817  0.4202760
## [3,] -0.9343630  0.3171667  0.4505934
eigB = eigen(B); eigB
## eigen() decomposition
## $values
## [1] 12.162902  3.788523 -2.951425
## 
## $vectors
##            [,1]        [,2]       [,3]
## [1,] -0.4518863 -0.86066364  0.6251497
## [2,] -0.3448715  0.07705199 -0.7438756
## [3,] -0.8227165  0.50331013  0.2362984
# Eigenvalue
eigvalA = eigA$values; eigvalA
## [1] 11.341618 -5.702302  1.360685
eigvalB = eigB$values; eigvalB
## [1] 12.162902  3.788523 -2.951425

Eigen Vector

Setelah nilai eigen \(\lambda\) diperoleh, maka eigenvector didapat dengan menyelesaikan sistem linear:

\[ (\mathbf{A} - \lambda \mathbf{I}) \mathbf{v} = 0 \]

Contoh manual (lanjutan dari contoh pada eigen value):

  • Untuk \(\lambda_1 = 3\): \[ (\mathbf{A} - 3\mathbf{I})\mathbf{v} = \begin{bmatrix} -1 & 1 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = 0 \]

Maka \(v_1 = v_2\), sehingga salah satu eigenvector adalah: \[ \mathbf{v}_1 = \begin{bmatrix} 1 \\ 1 \end{bmatrix} \]

  • Untuk \(\lambda_2 = 1\): \[ (\mathbf{A} - 1\mathbf{I})\mathbf{v} = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = 0 \]

Maka \(v_1 = -v_2\), sehingga salah satu eigenvector adalah: \[ \mathbf{v}_2 = \begin{bmatrix} 1 \\ -1 \end{bmatrix} \]

Implementasi di R:

# Eigenvector
eigvecA = eigA$vectors; eigvecA
##            [,1]       [,2]       [,3]
## [1,] -0.1850242  0.1776538 -0.7876126
## [2,] -0.3045191 -0.9315817  0.4202760
## [3,] -0.9343630  0.3171667  0.4505934
eigvecB = eigB$vectors; eigvecB
##            [,1]        [,2]       [,3]
## [1,] -0.4518863 -0.86066364  0.6251497
## [2,] -0.3448715  0.07705199 -0.7438756
## [3,] -0.8227165  0.50331013  0.2362984

Interpretasi

Secara matematis:

  • Eigenvalue (\(\lambda\)): menunjukkan seberapa besar peregangan atau penyusutan yang dialami suatu vektor ketika ditransformasi oleh matriks. Nilai eigen besar → arah tersebut dominan, artinya kontribusinya lebih besar terhadap struktur atau penyebaran data.
  • Eigenvector (\(\mathbf{v}\)): menunjukkan arah yang tidak berubah ketika matriks diterapkan. Dengan kata lain, ia menjadi “arah utama” transformasi linear.

Jika kita bayangkan matriks \(\mathbf{A}\) sebagai suatu transformasi (misalnya rotasi, skala, atau regangan pada bidang), maka: - Arah yang ditunjuk oleh eigenvector tetap sama setelah transformasi.
- Besar perubahan panjang pada arah tersebut ditentukan oleh nilai eigen yang sesuai.

Aplikasi Nyata

Konsep eigenvalue dan eigenvector muncul di berbagai bidang, misalnya:

  1. Analisis Data (Statistika & Machine Learning):
    • Dalam Principal Component Analysis (PCA), eigenvalue menunjukkan berapa besar variasi data yang bisa dijelaskan oleh masing-masing komponen utama.
    • Eigenvector menunjukkan arah (kombinasi linier dari variabel) di mana variasi data paling besar terjadi.
    • Interpretasi: jika eigenvalue pertama jauh lebih besar dari yang lain, maka sebagian besar informasi data dapat direpresentasikan hanya oleh satu sumbu utama.
  2. Fisika & Rekayasa Struktur:
    • Pada analisis getaran (misalnya jembatan, gedung, pesawat), eigenvalue berkaitan dengan frekuensi alami dari struktur.
    • Eigenvector berkaitan dengan mode getaran, yaitu pola bentuk deformasi ketika struktur bergetar.
    • Interpretasi: jika suatu frekuensi alami beresonansi dengan beban luar (misalnya angin atau gempa), struktur bisa rusak → makanya insinyur harus menghitung eigenvalue dan eigenvector.
  3. Ilmu Komputer & Pengenalan Wajah:
    • Dalam Eigenfaces Method, wajah manusia direpresentasikan sebagai kombinasi dari eigenvector gambar (basis wajah).
    • Eigenvalue menunjukkan kontribusi masing-masing eigenface.
    • Interpretasi: wajah dapat disimpan/diidentifikasi hanya dengan beberapa eigenvector dominan, sehingga efisien untuk kompresi data wajah.
  4. Ekonomi & Keuangan:
    • Dalam analisis portofolio, matriks kovarians return saham dapat dievaluasi menggunakan eigenvalue dan eigenvector.
    • Eigenvalue besar menunjukkan faktor risiko dominan.
    • Eigenvector terkait memberikan arah kombinasi saham yang paling berkontribusi pada risiko.

Kesimpulan interpretasi:
- Eigenvalue besar → arah eigenvector yang bersesuaian menjelaskan struktur dominan dari transformasi atau data.
- Eigenvalue kecil → arah eigenvector yang bersesuaian kurang berpengaruh atau hanya menjelaskan variasi kecil.
- Dengan kata lain, nilai eigen = “besarnya pengaruh”, sedangkan vektor eigen = “arah pengaruh”.

Dekomposisi Nilai Singular (SVD)

Singular Value Decomposition (SVD) adalah salah satu faktorisasi matriks yang sangat penting dalam aljabar linear.
Setiap matriks \(\mathbf{A}\) berukuran \(m \times n\) dapat diuraikan menjadi tiga matriks:

\[ \mathbf{A} = \mathbf{U} \mathbf{D} \mathbf{V}^T \]

dengan:
- \(\mathbf{U}\) : matriks ortogonal berukuran \(m \times m\) (kolomnya disebut left singular vectors)
- \(\mathbf{D}\) : matriks diagonal berukuran \(m \times n\) yang berisi singular values (akar dari eigenvalue \(\mathbf{A}^T \mathbf{A}\))
- \(\mathbf{V}\) : matriks ortogonal berukuran \(n \times n\) (kolomnya disebut right singular vectors)

Intinya:
- Singular values (\(\sigma_i\)) mengukur “kekuatan” atau “kontribusi” masing-masing arah dalam matriks.
- Vektor singular (\(U\) dan \(V\)) menunjukkan arah utama transformasi data.

Contoh Perhitungan Manual Misalkan: \[ \mathbf{A} = \begin{bmatrix} 5 & -3 & 6 \\ 2 & -4 & 8 \\ -2 & 5 & -1 \\ 7 & 3 & 9 \end{bmatrix} \]

  1. Hitung \(\mathbf{A}^T \mathbf{A}\) (ukuran \(n \times n\)).
  2. Cari eigenvalue dari \(\mathbf{A}^T \mathbf{A}\). Akar dari eigenvalue ini = singular values (\(\sigma\)).
  3. Cari eigenvector → membentuk \(\mathbf{V}\).
  4. Gunakan \(\mathbf{U} = \frac{1}{\sigma_i} \mathbf{A}\mathbf{v}_i\).

Implementasi SVD di R:

# Membuat matriks Y
Y <- matrix(c(5,-3,6,
              2,-4,8,
              -2,5,-1,
              7,3,9), 
            nrow=4, ncol=3, byrow=TRUE)
Y
##      [,1] [,2] [,3]
## [1,]    5   -3    6
## [2,]    2   -4    8
## [3,]   -2    5   -1
## [4,]    7    3    9
# Melakukan dekomposisi SVD
svd_result <- svd(Y)

# Singular values
singular_value <- svd_result$d ; singular_value
## [1] 16.07076  7.41936  3.11187
# Matriks U
U <- svd_result$u ; U
##            [,1]       [,2]       [,3]
## [1,] -0.5046975  0.2278362 -0.3742460
## [2,] -0.5178195  0.4138180  0.7413297
## [3,]  0.1646416 -0.6063789  0.5337354
## [4,] -0.6708477 -0.6396483 -0.1596770
# Matriks V
V <- svd_result$v ; V
##            [,1]        [,2]       [,3]
## [1,] -0.5341591 -0.17494276 -0.8270847
## [2,]  0.1490928 -0.98251336  0.1115295
## [3,] -0.8321330 -0.06373793  0.5509011

Interpretasi

  • Singular values (\(\sigma_i\)):
    Menunjukkan seberapa besar kontribusi tiap dimensi dalam menjelaskan variasi data. Jika satu singular value jauh lebih besar daripada yang lain → sebagian besar informasi ada pada dimensi tersebut.

  • Matriks \(U\) (left singular vectors):
    Menunjukkan basis ortonormal untuk ruang kolom \(\mathbf{A}\). Dalam konteks data, ini bisa dipandang sebagai representasi data pada dimensi baru.

  • Matriks \(V\) (right singular vectors):
    Menunjukkan basis ortonormal untuk ruang baris \(\mathbf{A}\).

Aplikasi Nyata

  1. Kompresi Gambar
    • Dengan hanya menyimpan beberapa singular values terbesar, kita dapat merekonstruksi gambar dengan kualitas cukup baik, tetapi ukuran file jauh lebih kecil.
    • Interpretasi: singular values kecil mengandung “noise” atau detail halus → bisa diabaikan.
  2. Rekomendasi (Netflix, Spotify, dll.)
    • Data rating pengguna dapat direpresentasikan sebagai matriks besar. SVD digunakan untuk menemukan faktor laten (misalnya selera musik tersembunyi).
    • Interpretasi: singular vectors memetakan pengguna dan item ke dalam ruang dimensi rendah.
  3. Natural Language Processing (NLP)
    • Dalam Latent Semantic Analysis (LSA), SVD dipakai untuk mengurangi dimensi matriks kata-dokumen.
    • Interpretasi: singular values besar mewakili topik utama, sedangkan nilai kecil membuang kata-kata kurang penting.
  4. Pengolahan Sinyal & Data Genetik
    • SVD membantu mengidentifikasi pola dominan (signal utama) dan memisahkan dari noise.

Kesimpulan:
SVD adalah alat yang sangat kuat untuk reduksi dimensi, kompresi, dan ekstraksi pola. Singular values memberi tahu kita dimensi mana yang penting, sementara matriks \(U\) dan \(V\) menjelaskan arah utama dari struktur data.

Matriks Jarak

Matriks Jarak adalah matriks persegi yang berisi informasi tentang jarak pasangan antara setiap pasangan elemen dalam suatu himpunan. Nilai pada baris i dan kolom j menunjukkan jarak dari elemen ke-i ke elemen ke-j.

Dalam analisis data, kita sering perlu mengukur kemiripan atau perbedaan antar objek. Salah satu cara adalah dengan menghitung jarak antar vektor (data).
Jika terdapat dua vektor dalam ruang \(\mathbb{R}^n\):

\[ \mathbf{x} = (x_1, x_2, \dots, x_n), \quad \mathbf{y} = (y_1, y_2, \dots, y_n) \]

Maka distance metric \(d(\mathbf{x},\mathbf{y})\) digunakan untuk mengukur jarak antara keduanya.
Kumpulan semua jarak antar pasangan data dapat disusun menjadi matriks jarak.

Sebelum masuk ke matriks jarak, kita akan membuat terlebih dahulu dataset yang akan digunakan. Dalam contoh ini kita akan menggunakan syntax untuk melakukan random sampling.

library(factoextra) # Menggunakan library untuk visualisasi konsep jarak
set.seed(321) #salah satu metode untuk random sampling, angkanya bisa diubah sesuai keinginan
ss <- sample(1:50, 15) # ambil 15 data secara acak dari 1-50 observasi
df <- USArrests[ss, ]
df.scaled <- scale(df); df.scaled #standarisasi dilakukan jika satuan data frame berbeda-beda
##                  Murder     Assault   UrbanPop        Rape
## Wyoming      -0.3721741 -0.02296746 -0.3418930 -0.62039386
## Illinois      0.4221896  1.02244775  1.2520675  0.62633064
## Mississippi   1.6799322  1.14124493 -1.4507350 -0.39776448
## Kansas       -0.5486994 -0.56943449  0.0739228 -0.26418686
## New York      0.5766492  1.08184634  1.4599754  0.93801176
## Kentucky      0.2677300 -0.64071280 -0.8963140 -0.51650015
## Oklahoma     -0.4163054 -0.14176464  0.2125281  0.03265231
## Hawaii       -0.7031590 -1.38913505  1.2520675  0.06233622
## Missouri      0.1132704  0.17898775  0.3511333  1.24969289
## New Mexico    0.6428462  1.45011760  0.3511333  1.82852926
## Louisiana     1.5254725  1.02244775  0.0739228  0.35917539
## South Dakota -1.0341439 -0.91394632 -1.3814324 -1.03596869
## Iowa         -1.3871944 -1.27033787 -0.5498008 -1.25859806
## North Dakota -1.6961136 -1.40101477 -1.4507350 -1.85227639
## Texas         0.9296998  0.45222127  1.0441596  0.84896001
## attr(,"scaled:center")
##     Murder    Assault   UrbanPop       Rape 
##   8.486667 162.933333  64.933333  19.780000 
## attr(,"scaled:scale")
##    Murder   Assault  UrbanPop      Rape 
##  4.531929 84.177081 14.429467  6.737655

1. Jarak Euclidean

Jarak Euclidean merupakan jarak garis lurus terpendek di antara dua titikdalam ruang Euclidean. Jarak Euclidean memiliki rumus sebagai berikut : \[ \ d_{ij} = \sqrt{(x_i-x_j)^t(x_i-x_j)}\]

Contoh Matematis Misalkan \(\mathbf{x} = (2,3)\) dan \(\mathbf{y} = (5,7)\).

\[ d_{E}(\mathbf{x},\mathbf{y}) = \sqrt{(2-5)^2 + (3-7)^2} = \sqrt{(-3)^2 + (-4)^2} = \sqrt{9+16} = \sqrt{25} = 5 \]

Implementasi di R: Menghitung jarak Euclidean

# Menghitung jarak Euclidean antar observasi
dist.eucl <- dist(df.scaled, method = "euclidean"); dist.eucl
##                Wyoming  Illinois Mississippi    Kansas  New York  Kentucky
## Illinois     2.4122476                                                    
## Mississippi  2.6164146 3.1543527                                          
## Kansas       0.7934567 2.3786048   3.1993198                              
## New York     2.7921742 0.4095812   3.3878156 2.7128511                    
## Kentucky     1.0532156 2.9515362   2.3433244 1.2948587 3.2757206          
## Oklahoma     0.8659748 1.8685718   2.9986711 0.5547563 2.2043102 1.4993175
## Hawaii       2.2322175 2.7203365   4.4270510 1.4800030 2.9246694 2.5403456
## Missouri     2.0625111 1.4167282   3.0563398 1.8349434 1.5351057 2.3176129
## New Mexico   3.1109091 1.5775154   3.0617092 3.1551035 1.4705638 3.4011133
## Louisiana    2.4137967 1.6360410   1.7133330 2.6879097 1.7776353 2.4609320
## South Dakota 1.5765126 3.9457686   3.4644086 1.7515852 4.3067435 1.5082173
## Iowa         1.7426214 3.9154083   4.0958166 1.6038155 4.2724405 1.9508929
## North Dakota 2.5296038 4.8794481   4.4694938 2.6181473 5.2524274 2.5546862
## Texas        2.4496576 0.8218968   2.9692463 2.3259192 0.8377979 2.6949264
##               Oklahoma    Hawaii  Missouri New Mexico Louisiana South Dakota
## Illinois                                                                    
## Mississippi                                                                 
## Kansas                                                                      
## New York                                                                    
## Kentucky                                                                    
## Oklahoma                                                                    
## Hawaii       1.6491638                                                      
## Missouri     1.3724911 2.3123720                                            
## New Mexico   2.6268378 3.7154012 1.4937447                                  
## Louisiana    2.2916633 3.5012381 1.8909275  1.7882330                       
## South Dakota 2.1588538 2.9115203 3.2767510  4.4281177 3.7902169             
## Iowa         2.1130016 2.3395756 3.3845451  4.6758935 4.0922753    0.9964108
## North Dakota 3.0891779 3.4578871 4.3173165  5.5131433 4.8442635    1.1604313
## Texas        1.8768374 2.5920693 1.1756214  1.5867966 1.3643137    3.8935265
##                   Iowa North Dakota
## Illinois                           
## Mississippi                        
## Kansas                             
## New York                           
## Kentucky                           
## Oklahoma                           
## Hawaii                             
## Missouri                           
## New Mexico                         
## Louisiana                          
## South Dakota                       
## Iowa                               
## North Dakota 1.1298867             
## Texas        3.9137858    4.8837032
  • Fungsi dist() menghasilkan matrix jarak antar semua pasangan baris dalam dataset.
  • Parameter method = "euclidean" memastikan jarak dihitung dengan rumus Euclidean.

Hasil yang muncul adalah lower triangular matrix karena jarak antar titik bersifat simetris (\(d(x,y) = d(y,x)\)).

Visualisasi Jarak

# Visualisasi matriks jarak
fviz_dist(dist.eucl)

  • fviz_dist() dari package factoextra menampilkan heatmap jarak antar observasi.
  • Warna lebih gelap menunjukkan jarak lebih kecil (observasi lebih mirip), sedangkan warna terang menunjukkan jarak lebih jauh.

Interpretasi

  • Nilai jarak Euclidean semakin besar → kedua objek semakin jauh/berbeda.
  • Sifatnya sensitif terhadap skala data. Jika variabel memiliki skala berbeda, hasil jarak bisa bias → biasanya data dinormalisasi terlebih dahulu.

Aplikasi Nyata

  1. Clustering (K-Means):
    • Digunakan untuk mengelompokkan data berdasarkan kemiripan. Objek yang jaraknya dekat akan masuk ke cluster yang sama.
  2. Pencarian Tetangga Terdekat (KNN):
    • Algoritma klasifikasi KNN menggunakan jarak Euclidean untuk menentukan kelas data baru berdasarkan tetangga terdekatnya.
  3. Pengolahan Citra:
    • Digunakan untuk mengukur kemiripan antara dua gambar (misalnya dalam face recognition).
  4. Rekomendasi Produk:
    • Dalam sistem rekomendasi sederhana, jarak Euclidean dapat dipakai untuk mengukur kesamaan profil pengguna.

Kesimpulan:
Jarak Euclidean adalah metrik paling umum untuk mengukur kemiripan antar objek. Mudah dipahami karena sesuai intuisi jarak lurus dalam ruang nyata, tetapi harus hati-hati terhadap skala data dan outlier.

2. Jarak Chebyshev

Jarak Chebyshev adalah jarak yang ditentukan oleh selisih terbesar di antara koordinat dua titik.
Dengan kata lain, ia mengukur sejauh mana perbedaan maksimum antar dimensi.

Jarak Chebyshev memiliki rumus sebagai berikut : \[\ {d_{ij} = max(\lvert x_{li}-x_{lj} \rvert)}\]

Contoh Matematis

Misalkan \(\mathbf{x} = (2,3)\) dan \(\mathbf{y} = (5,7)\).

\[ d_{C}(\mathbf{x},\mathbf{y}) = \max\{|2-5|, |3-7|\} = \max\{3, 4\} = 4 \]

Implementasi di R:

# Hitung jarak Chebyshev (maximum distance)
dist.cheb <- dist(df.scaled, method = "maximum"); dist.cheb
##                Wyoming  Illinois Mississippi    Kansas  New York  Kentucky
## Illinois     1.5939604                                                    
## Mississippi  2.0521063 2.7028025                                          
## Kansas       0.5464670 1.5918822   2.2286315                              
## New York     1.8018683 0.3116811   2.9107104 1.6512808                    
## Kentucky     0.6399041 2.1483815   1.7819577 0.9702368 2.3562894          
## Oklahoma     0.6530462 1.1642124   2.0962376 0.4276699 1.2474473 1.1088421
## Hawaii       1.5939604 2.4115828   2.7028025 1.1781447 2.4709814 2.1483815
## Missouri     1.8700867 0.9009342   1.8018683 1.5138797 1.1088421 1.7661930
## New Mexico   2.4489231 1.2021986   2.2262937 2.0927161 1.1088421 2.3450294
## Louisiana    1.8976467 1.1781447   1.5246578 2.0741719 1.3860526 1.6631605
## South Dakota 1.0395394 2.6334999   2.7140760 1.4553552 2.8414078 1.3018739
## Iowa         1.2473704 2.2927856   3.0671266 0.9944112 2.3521842 1.6549244
## North Dakota 1.3780473 2.7028025   3.3760458 1.5880895 2.9107104 1.9638436
## Texas        1.4693539 0.5702265   2.4948946 1.4783991 0.6296251 1.9404736
##               Oklahoma    Hawaii  Missouri New Mexico Louisiana South Dakota
## Illinois                                                                    
## Mississippi                                                                 
## Kansas                                                                      
## New York                                                                    
## Kentucky                                                                    
## Oklahoma                                                                    
## Hawaii       1.2473704                                                      
## Missouri     1.2170406 1.5681228                                            
## New Mexico   1.7958770 2.8392526 1.2711298                                  
## Louisiana    1.9417780 2.4115828 1.4122022  1.4693539                       
## South Dakota 1.5939604 2.6334999 2.2856616  2.8644979 2.5596164             
## Iowa         1.2912504 1.8018683 2.5082909  3.0871273 2.9126670    0.8316315
## North Dakota 1.8849287 2.7028025 3.1019693  3.6808057 3.2215862    0.8163077
## Texas        1.3460052 1.8413563 0.8164294  0.9978963 0.9702368    2.4255920
##                   Iowa North Dakota
## Illinois                           
## Mississippi                        
## Kansas                             
## New York                           
## Kentucky                           
## Oklahoma                           
## Hawaii                             
## Missouri                           
## New Mexico                         
## Louisiana                          
## South Dakota                       
## Iowa                               
## North Dakota 0.9009342             
## Texas        2.3168942    2.7012364

Penjelasan:
- dist() = fungsi bawaan R untuk menghitung matriks jarak.
- df.scaled = data yang sudah distandardisasi (pakai scale()) supaya semua variabel punya bobot yang seimbang.
- method = "maximum" → ini instruksi ke R untuk menghitung Chebyshev distance, yaitu mengambil perbedaan absolut terbesar antar dimensi untuk tiap pasangan observasi.
- dist.cheb = hasil berupa matrix jarak (lower triangular form) antar observasi.

Visualisasi Jarak

fviz_dist(dist.cheb)

Penjelasan:
- fviz_dist() berasal dari library factoextra.
- Input dist.cheb akan divisualisasikan dalam bentuk heatmap jarak:
- Warna gelap → jarak lebih kecil (observasi lebih mirip).
- Warna terang → jarak lebih besar (observasi lebih jauh).

Interpretasi

  • Jarak Chebyshev hanya melihat dimensi dengan perbedaan terbesar.
  • Jika salah satu variabel memiliki selisih yang besar, maka itulah yang menentukan jarak keseluruhan.
  • Cocok digunakan ketika kesalahan terbesar yang terjadi di satu dimensi lebih penting daripada jumlah total perbedaan.

Aplikasi Nyata

  1. Catur (Langkah Raja):
    • Jarak Chebyshev digunakan untuk menghitung jumlah langkah minimum raja dari satu kotak ke kotak lain di papan catur.
  2. Quality Control (Manufaktur):
    • Digunakan untuk mengukur deviasi maksimum dari produk terhadap spesifikasi (panjang, lebar, tinggi). Fokus pada dimensi “terburuk”.
  3. Kecerdasan Buatan (Pathfinding):
    • Dalam algoritma pencarian jalur (misalnya game grid-based), jarak Chebyshev digunakan jika pergerakan diperbolehkan ke 8 arah (termasuk diagonal).

Kesimpulan:
Jarak Chebyshev menekankan pada selisih terbesar antar dimensi. Lebih tepat digunakan jika kita peduli pada perbedaan maksimum (worst-case scenario) dibandingkan total perbedaan.

3. Jarak Manhattan

Jarak Manhattan (juga disebut Taxicab Distance atau City Block Distance) adalah jumlah nilai absolut dari selisih antar koordinat.
Nama “Manhattan” berasal dari cara menghitung jarak di jalan berbentuk grid seperti kota Manhattan (hanya bisa jalan horizontal/vertikal, tidak diagonal).

Jarak Manhattan memiliki rumus sebagai berikut :

\[\ {d}_{ij}=\sum_{l=1}^{p} \lvert x_{li}-x_{lj} \rvert\]

Contoh Matematis Misalkan \(\mathbf{x} = (2,3)\) dan \(\mathbf{y} = (5,7)\).

\[ d_{M}(\mathbf{x},\mathbf{y}) = |2-5| + |3-7| = | -3 | + | -4 | = 3 + 4 = 7 \]

Implementasi di R

# Hitung jarak Manhattan
dist.man <- dist(df.scaled, method = "manhattan"); dist.man
##                 Wyoming   Illinois Mississippi     Kansas   New York   Kentucky
## Illinois      4.6804639                                                        
## Mississippi   4.5477901  5.1034373                                             
## Kansas        1.4950151  4.6314334   5.5975464                                 
## New York      5.4139111  0.7334472   5.4091682  5.3648806                      
## Kentucky      1.9159642  5.1088324   3.8673166  2.1102578  5.8422796           
## Oklahoma      1.3703957  3.6359252   5.4729270  0.9955082  4.3693724  2.8409781
## Hawaii        3.9738430  4.1009258   8.0763743  2.4788279  4.8343730  4.4465291
## Missouri      3.2505127  2.6766756   5.9782446  3.2014823  2.7867606  3.9878005
## New Mexico    5.6300548  2.7514592   5.3741207  5.5810243  2.4338278  6.0584233
## Louisiana     4.3384469  2.5485829   2.5548545  4.2894164  2.9731109  4.7668154
## South Dakota  3.0080629  7.6885267   5.4767741  3.0570933  8.4219740  2.5796943
## Iowa          3.1085028  7.7889667   7.2404771  3.1575333  8.5224139  3.3731605
## North Dakota  5.0427114  9.7231753   7.3728174  5.0917419 10.4566225  4.6143429
## Texas         4.6324690  1.5082739   5.1808752  4.5834386  1.4875431  5.0608376
##                Oklahoma     Hawaii   Missouri New Mexico  Louisiana
## Illinois                                                           
## Mississippi                                                        
## Kansas                                                             
## New York                                                           
## Kentucky                                                           
## Oklahoma                                                           
## Hawaii        2.6034473                                            
## Missouri      2.2059740  4.4728430                                 
## New Mexico    4.5855161  6.8523850  2.3795420                      
## Louisiana     3.5711187  6.1151982  3.4233902  3.0568606           
## South Dakota  4.0526016  4.5379784  6.2585756  8.6381176  7.3465098
## Iowa          4.1530415  3.9256352  6.3590155  8.7385576  7.4469497
## North Dakota  6.0872501  5.6222495  8.2932241 10.6727662  9.3811583
## Texas         3.5879303  4.4687467  2.1834220  2.9573454  2.6260207
##              South Dakota       Iowa North Dakota
## Illinois                                         
## Mississippi                                      
## Kansas                                           
## New York                                         
## Kentucky                                         
## Oklahoma                                         
## Hawaii                                           
## Missouri                                         
## New Mexico                                       
## Louisiana                                        
## South Dakota                                     
## Iowa            1.7637030                        
## North Dakota    2.0346485  1.9342086             
## Texas           7.6405319  7.7409718    9.6751804

Penjelasan:
- dist() = fungsi bawaan R untuk menghitung matriks jarak.
- df.scaled = data yang sudah distandardisasi (pakai scale()) agar semua variabel punya skala sama.
- method = "manhattan" → ini menginstruksikan R untuk menghitung jarak Manhattan, yaitu jumlah selisih absolut antar variabel.
- dist.man = hasilnya berupa matriks jarak (dalam format segitiga bawah) antar observasi.

Visualisasi Jarak

fviz_dist(dist.man)

Penjelasan:
- fviz_dist() (dari package factoextra) digunakan untuk menampilkan heatmap jarak.
- Warna gelap → jarak kecil (lebih mirip).
- Warna terang → jarak besar (lebih berbeda).

Interpretasi

  • Nilai jarak Manhattan menunjukkan berapa banyak langkah horizontal/vertikal yang diperlukan untuk berpindah dari titik \(x\) ke \(y\).
  • Tidak memperbolehkan langkah diagonal (berbeda dengan Euclidean yang lurus).
  • Sering lebih stabil daripada Euclidean jika ada outlier atau data berdimensi tinggi.

Aplikasi Nyata

  1. Penghitungan Jarak di Kota Grid:
    • Misalnya menghitung jarak tempuh taksi di kota dengan blok jalan berbentuk persegi (New York, Chicago).
  2. Data Teks (Natural Language Processing):
    • Menghitung jarak antar dokumen berdasarkan frekuensi kata.
    • Jarak Manhattan cocok jika kita ingin menghitung jumlah perbedaan antar kata secara absolut.
  3. Clustering dan Machine Learning:
    • Kadang dipilih dibandingkan Euclidean jika data memiliki banyak dimensi dengan skala yang sama.
  4. Optimasi Rute (Logistik/Gudang):
    • Jarak Manhattan digunakan untuk menghitung jarak antar titik dalam tata letak gudang berbentuk grid.

Kesimpulan:
Jarak Manhattan menghitung jarak dalam jalur grid, lebih sesuai untuk kondisi nyata ketika pergerakan hanya bisa horizontal atau vertikal. Cocok digunakan dalam data teks, logistik, dan masalah berdimensi tinggi.

4. Jarak Mahalanobis

Jarak Mahalanobis adalah ukuran jarak yang memperhitungkan distribusi data dan hubungan antar variabel (kovarians).
- Pada jarak Euclidean, kita hanya menghitung selisih kuadrat antar dimensi tanpa melihat apakah variabel saling berkorelasi.
- Tapi dalam kenyataan, banyak variabel saling berhubungan. Misalnya: tinggi dan berat badan → biasanya berkorelasi positif.

Mahalanobis mengatasi hal ini dengan “menormalkan” jarak menggunakan matriks kovarians.
Artinya, arah dengan varian besar (data menyebar lebar) akan dianggap lebih “murah” jaraknya, sedangkan arah dengan varian kecil (data rapat) akan dianggap lebih “mahal”.

Jarak Mahalanobis memiliki rumus sebagai berikut : \[d_{ij}=\sqrt{\left(\ {y_i}-\ {y_j}\right)^t\ {S^{-1}}\left(\ {y_i}-\ {y_j}\right)}\]

Implementasi di R:

# Load library
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
# Hitung jarak Mahalanobis
dist.mah <- mahalanobis.dist(df.scaled); dist.mah
##               Wyoming  Illinois Mississippi    Kansas  New York Kentucky
## Wyoming      0.000000 1.7186109    2.820779 1.4195095 1.8695558 2.867847
## Illinois     1.718611 0.0000000    3.658323 2.2905255 0.4722069 3.878642
## Mississippi  2.820779 3.6583235    0.000000 3.2139075 3.6566922 2.544477
## Kansas       1.419510 2.2905255    3.213907 0.0000000 2.1522535 2.048031
## New York     1.869556 0.4722069    3.656692 2.1522535 0.0000000 3.698342
## Kentucky     2.867847 3.8786421    2.544477 2.0480310 3.6983422 0.000000
## Oklahoma     1.146496 1.8980286    3.237573 0.6499978 1.7772007 2.505941
## Hawaii       3.466671 3.6449604    4.722203 2.2108491 3.3748818 2.753554
## Missouri     3.198071 3.6796400    3.956918 2.2592572 3.3618939 2.642756
## New Mexico   3.281318 3.5101406    4.057258 3.1016653 3.2869855 3.870023
## Louisiana    2.284940 2.5550539    1.688058 2.2700723 2.4136664 2.119635
## South Dakota 1.826205 3.3564158    3.087365 1.6274307 3.3404110 2.261154
## Iowa         1.327907 2.6329606    3.559587 1.1128197 2.6839965 2.621704
## North Dakota 1.582582 3.1919907    3.553572 1.9466491 3.3317039 3.040465
## Texas        2.540604 2.4769381    3.093919 1.7462066 2.1399545 2.108949
##               Oklahoma   Hawaii Missouri New Mexico Louisiana South Dakota
## Wyoming      1.1464956 3.466671 3.198071   3.281318  2.284940     1.826205
## Illinois     1.8980286 3.644960 3.679640   3.510141  2.555054     3.356416
## Mississippi  3.2375727 4.722203 3.956918   4.057258  1.688058     3.087365
## Kansas       0.6499978 2.210849 2.259257   3.101665  2.270072     1.627431
## New York     1.7772007 3.374882 3.361894   3.286985  2.413666     3.340411
## Kentucky     2.5059414 2.753554 2.642756   3.870023  2.119635     2.261154
## Oklahoma     0.0000000 2.705865 2.203038   2.660216  2.350208     1.672866
## Hawaii       2.7058650 0.000000 3.193764   4.645567  3.383255     3.551072
## Missouri     2.2030382 3.193764 0.000000   1.836797  3.256319     2.505784
## New Mexico   2.6602159 4.645567 1.836797   0.000000  3.676879     3.026024
## Louisiana    2.3502077 3.383255 3.256319   3.676879  0.000000     3.021642
## South Dakota 1.6728664 3.551072 2.505784   3.026024  3.021642     0.000000
## Iowa         1.3299426 2.790197 3.145245   3.792086  2.954252     1.518854
## North Dakota 1.9813596 3.780966 3.590548   3.950259  3.434074     1.304743
## Texas        1.9635201 2.082005 2.576037   3.501666  1.527269     3.090805
##                  Iowa North Dakota    Texas
## Wyoming      1.327907     1.582582 2.540604
## Illinois     2.632961     3.191991 2.476938
## Mississippi  3.559587     3.553572 3.093919
## Kansas       1.112820     1.946649 1.746207
## New York     2.683996     3.331704 2.139954
## Kentucky     2.621704     3.040465 2.108949
## Oklahoma     1.329943     1.981360 1.963520
## Hawaii       2.790197     3.780966 2.082005
## Missouri     3.145245     3.590548 2.576037
## New Mexico   3.792086     3.950259 3.501666
## Louisiana    2.954252     3.434074 1.527269
## South Dakota 1.518854     1.304743 3.090805
## Iowa         0.000000     1.045923 2.734770
## North Dakota 1.045923     0.000000 3.563193
## Texas        2.734770     3.563193 0.000000
# Ubah ke bentuk matriks penuh
dist.mah_matrix <- as.matrix(dist.mah); dist.mah_matrix
##               Wyoming  Illinois Mississippi    Kansas  New York Kentucky
## Wyoming      0.000000 1.7186109    2.820779 1.4195095 1.8695558 2.867847
## Illinois     1.718611 0.0000000    3.658323 2.2905255 0.4722069 3.878642
## Mississippi  2.820779 3.6583235    0.000000 3.2139075 3.6566922 2.544477
## Kansas       1.419510 2.2905255    3.213907 0.0000000 2.1522535 2.048031
## New York     1.869556 0.4722069    3.656692 2.1522535 0.0000000 3.698342
## Kentucky     2.867847 3.8786421    2.544477 2.0480310 3.6983422 0.000000
## Oklahoma     1.146496 1.8980286    3.237573 0.6499978 1.7772007 2.505941
## Hawaii       3.466671 3.6449604    4.722203 2.2108491 3.3748818 2.753554
## Missouri     3.198071 3.6796400    3.956918 2.2592572 3.3618939 2.642756
## New Mexico   3.281318 3.5101406    4.057258 3.1016653 3.2869855 3.870023
## Louisiana    2.284940 2.5550539    1.688058 2.2700723 2.4136664 2.119635
## South Dakota 1.826205 3.3564158    3.087365 1.6274307 3.3404110 2.261154
## Iowa         1.327907 2.6329606    3.559587 1.1128197 2.6839965 2.621704
## North Dakota 1.582582 3.1919907    3.553572 1.9466491 3.3317039 3.040465
## Texas        2.540604 2.4769381    3.093919 1.7462066 2.1399545 2.108949
##               Oklahoma   Hawaii Missouri New Mexico Louisiana South Dakota
## Wyoming      1.1464956 3.466671 3.198071   3.281318  2.284940     1.826205
## Illinois     1.8980286 3.644960 3.679640   3.510141  2.555054     3.356416
## Mississippi  3.2375727 4.722203 3.956918   4.057258  1.688058     3.087365
## Kansas       0.6499978 2.210849 2.259257   3.101665  2.270072     1.627431
## New York     1.7772007 3.374882 3.361894   3.286985  2.413666     3.340411
## Kentucky     2.5059414 2.753554 2.642756   3.870023  2.119635     2.261154
## Oklahoma     0.0000000 2.705865 2.203038   2.660216  2.350208     1.672866
## Hawaii       2.7058650 0.000000 3.193764   4.645567  3.383255     3.551072
## Missouri     2.2030382 3.193764 0.000000   1.836797  3.256319     2.505784
## New Mexico   2.6602159 4.645567 1.836797   0.000000  3.676879     3.026024
## Louisiana    2.3502077 3.383255 3.256319   3.676879  0.000000     3.021642
## South Dakota 1.6728664 3.551072 2.505784   3.026024  3.021642     0.000000
## Iowa         1.3299426 2.790197 3.145245   3.792086  2.954252     1.518854
## North Dakota 1.9813596 3.780966 3.590548   3.950259  3.434074     1.304743
## Texas        1.9635201 2.082005 2.576037   3.501666  1.527269     3.090805
##                  Iowa North Dakota    Texas
## Wyoming      1.327907     1.582582 2.540604
## Illinois     2.632961     3.191991 2.476938
## Mississippi  3.559587     3.553572 3.093919
## Kansas       1.112820     1.946649 1.746207
## New York     2.683996     3.331704 2.139954
## Kentucky     2.621704     3.040465 2.108949
## Oklahoma     1.329943     1.981360 1.963520
## Hawaii       2.790197     3.780966 2.082005
## Missouri     3.145245     3.590548 2.576037
## New Mexico   3.792086     3.950259 3.501666
## Louisiana    2.954252     3.434074 1.527269
## South Dakota 1.518854     1.304743 3.090805
## Iowa         0.000000     1.045923 2.734770
## North Dakota 1.045923     0.000000 3.563193
## Texas        2.734770     3.563193 0.000000

Penjelasan:
- mahalanobis.dist(df.scaled) menghitung jarak Mahalanobis antar baris data dalam df.scaled.
- dist.mah adalah objek jarak (dist object).
- as.matrix(dist.mah) mengubah hasil ke matriks penuh sehingga lebih mudah dibaca.

Interpretasi

  • Jika dua titik punya jarak Mahalanobis kecil, berarti keduanya mirip setelah memperhitungkan korelasi antar variabel.
  • Jika jaraknya besar, maka salah satu titik mungkin outlier atau berada jauh dari pola umum data.

Aplikasi Nyata

  • Deteksi outlier multivariat: titik dengan jarak Mahalanobis sangat besar → kandidat outlier.
  • Klasifikasi diskriminan (LDA/QDA): digunakan untuk menghitung kedekatan data dengan pusat kelompok.
  • Biometri: pengenalan wajah, sidik jari, suara → karena variabel fitur biasanya saling berkorelasi.

Kesimpulan Jarak Mahalanobis adalah ukuran jarak yang memperhitungkan skala dan korelasi antar variabel, sehingga lebih akurat untuk data multivariat.
Berbeda dengan Euclidean yang hanya melihat selisih mentah, Mahalanobis menyesuaikan jarak dengan struktur distribusi data.
Hal ini membuatnya sangat berguna untuk deteksi outlier, klasifikasi, dan analisis multivariat lainnya.

5. Jarak Minkowski

Jarak Minkowski adalah generalisasi dari beberapa jenis jarak lain.
Dengan menambahkan parameter \(p\), Minkowski mencakup:
- \(p = 1\) → Jarak Manhattan,
- \(p = 2\) → Jarak Euclidean,
- \(p \to \infty\) → Jarak Chebyshev.

Dengan demikian, Minkowski adalah rumus umum yang bisa menurunkan berbagai ukuran jarak lain.

Rumus: \[ d_{ij} = \left( \sum_{k=1}^D |x_{ik} - x_{jk}|^p \right)^{\tfrac{1}{p}} \] - Jika \(p = 1\) maka jarak Manhattan (\(L_{1}\) norm)
- Jika \(p = 2\) maka jarak Euclidean (\(L_{2}\) norm)
- Jika \(p \to \infty\) maka jarak Chebyshev (\(L_{\infty}\) norm)

Implementasi di R

set.seed(123)

# Data random (5 observasi dengan 3 variabel)
data <- matrix(runif(15, min = 1, max = 10), nrow = 5, ncol = 3)
colnames(data) <- c("X1", "X2", "X3")
print("Data random:")
## [1] "Data random:"
print(data)
##            X1       X2       X3
## [1,] 3.588198 1.410008 9.611500
## [2,] 8.094746 5.752949 5.080007
## [3,] 4.680792 9.031771 7.098136
## [4,] 8.947157 5.962915 6.153701
## [5,] 9.464206 5.109533 1.926322
# Tentukan dua titik yang akan dihitung jaraknya
p1 <- data[1, ]; p1
##       X1       X2       X3 
## 3.588198 1.410008 9.611500
p2 <- data[2, ]; p2
##       X1       X2       X3 
## 8.094746 5.752949 5.080007
# Fungsi jarak Minkowski
minkowski_distance <- function(x, y, p) {
  sum(abs(x - y)^p)^(1/p)
}

# Contoh penggunaan
dist_p1 <- minkowski_distance(p1, p2, p = 1); dist_p1   # Manhattan
## [1] 13.38098
dist_p2 <- minkowski_distance(p1, p2, p = 2); dist_p2   # Euclidean
## [1] 7.726871
dist_p3 <- minkowski_distance(p1, p2, p = 3); dist_p3   # Minkowski umum
## [1] 6.435156
dist_inf <- max(abs(p1 - p2)); dist_inf                 # Chebyshev
## [1] 4.531493

Penjelasan:
- p1 dan p2 → dua titik observasi dari dataset random.
- minkowski_distance() → fungsi untuk menghitung jarak Minkowski dengan parameter \(p\).
- dist_p1 → hasil jarak Manhattan.
- dist_p2 → hasil jarak Euclidean.
- dist_p3 → hasil jarak Minkowski dengan \(p=3\).
- dist_inf → jarak Chebyshev (batas \(p \to \infty\)).

Interpretasi

  • Minkowski fleksibel, bisa digunakan untuk berbagai kondisi.
  • Jika data bersifat grid seperti jalan kota → gunakan \(p=1\) (Manhattan).
  • Jika ingin jarak lurus standar → gunakan \(p=2\) (Euclidean).
  • Jika fokus pada perbedaan terbesar antar dimensi → gunakan \(p \to \infty\) (Chebyshev).
  • \(p\) yang lebih besar akan semakin menekankan perbedaan ekstrem.

Aplikasi Nyata

  • Analisis teks (NLP): menghitung jarak antar dokumen berdasarkan frekuensi kata.
  • Clustering data multivariat: pemilihan \(p\) memengaruhi bentuk cluster.
  • Kecerdasan buatan (AI): dalam algoritma K-Nearest Neighbors (KNN), jarak Minkowski digunakan sebagai metrik umum.

Kesimpulan Jarak Minkowski adalah rumus umum yang meliputi Euclidean, Manhattan, dan Chebyshev.
Dengan mengatur parameter \(p\), kita dapat menyesuaikan cara mengukur kedekatan antar observasi sesuai kebutuhan aplikasi.
Fleksibilitas ini menjadikannya pilihan populer dalam machine learning dan analisis data multivariat.

Vektor Rata-rata

Vektor rata-rata merupakan vektor yang setiap elemennya merupakan nilai rata-rata dari elemen yang bersesuaian pada sekumpulan vektor. Rumus matematis:

\[ \bar{x}_j = \frac{1}{n} \sum_{i=1}^n x_{ij}, \quad \bar{x} = \begin{bmatrix} \bar{x}_1 \\ \bar{x}_2 \\ \vdots \\ \bar{x}_p \end{bmatrix} \] Sebelum masuk ke vektor rata-rata kita buat dulu dataset yang akan digunakan dalam contoh.

BB = c(6.2,11.5,8.7,10.1,7.8,6.9,12.0,3.1,14.8,9.4)
PM = c(61,73,68,70,64,60,76,49,84,71)
RTB = c(115,138,127,123,131,120,143,95,160,128)
lizard = as.matrix(cbind(BB,PM,RTB)); lizard
##         BB PM RTB
##  [1,]  6.2 61 115
##  [2,] 11.5 73 138
##  [3,]  8.7 68 127
##  [4,] 10.1 70 123
##  [5,]  7.8 64 131
##  [6,]  6.9 60 120
##  [7,] 12.0 76 143
##  [8,]  3.1 49  95
##  [9,] 14.8 84 160
## [10,]  9.4 71 128

Matriks Rata-rata

Matriks rata-rata adalah sebuah matriks tunggal yang merepresentasikan rata-rata dari sekumpulan matriks dengan syarat matriks tersebut harus memiliki dimensi yang sama. Rumus matematis: Jika \(\mathbf{1}_n\) adalah vektor kolom berisi \(1\) maka: \[ M = \mathbf{1}_n \bar{x}^T \]

Implementasi di R:

vecMeans = as.matrix(colMeans(lizard)); vecMeans
##       [,1]
## BB    9.05
## PM   67.60
## RTB 128.00
vecRata = matrix(c(mean(BB), mean(PM), mean(RTB)), nrow=3, ncol=1); vecRata
##        [,1]
## [1,]   9.05
## [2,]  67.60
## [3,] 128.00

Matriks Kovarians

Matriks kovarians adalah matriks persegi yang menggambarkan variabilitas dan hubungan linear antara setiap pasangan variabel dalam suatu dataset multidimensi. Secara sederhana, matriks ini menunjukkan bagaimana setiap variabel bervariasi dengan dirinya sendiri (varians) dan bagaimana setiap variabel bervariasi dengan variabel lainnya (kovarians). Ini merupakan generalisasi dari konsep varians ke dalam ruang vektor.

Implementasi di R:

varkov = cov(lizard); varkov
##           BB        PM       RTB
## BB  10.98056  31.80000  54.96667
## PM  31.80000  94.04444 160.22222
## RTB 54.96667 160.22222 300.66667

Matriks Korelasi

Matriks korelasi adalah matriks yang menggambarkan kekuatan dan arah hubungan linear antara setiap pasangan variabel dalam suatu dataset. Ini merupakan versi standarisasi dari matriks kovarians.

Implementasi R :

korel = cor(lizard); korel
##            BB        PM       RTB
## BB  1.0000000 0.9895743 0.9566313
## PM  0.9895743 1.0000000 0.9528259
## RTB 0.9566313 0.9528259 1.0000000

Matriks Standarisasi

Matriks standarisasi adalah sebuah matriks data di mana setiap kolomnya telah distandarisasi sehingga rata-ratanya 0 dan simpangan bakunya 1.Tujuannya adalah untuk membuat semua variabel dalam dataset berada pada skala yang sama sehingga tidak ada variabel yang mendominasi hanya karena memiliki skala nilai yang lebih besar.Proses ini juga dikenal sebagai normalisasi Z-score.

Implementasi di R :

n = nrow(lizard);n
## [1] 10
u = matrix(1,n,1); u
##       [,1]
##  [1,]    1
##  [2,]    1
##  [3,]    1
##  [4,]    1
##  [5,]    1
##  [6,]    1
##  [7,]    1
##  [8,]    1
##  [9,]    1
## [10,]    1
xbar = cbind((1/n)*t(u)%*%lizard); xbar
##        BB   PM RTB
## [1,] 9.05 67.6 128
D = lizard - u %*% xbar; D
##          BB    PM RTB
##  [1,] -2.85  -6.6 -13
##  [2,]  2.45   5.4  10
##  [3,] -0.35   0.4  -1
##  [4,]  1.05   2.4  -5
##  [5,] -1.25  -3.6   3
##  [6,] -2.15  -7.6  -8
##  [7,]  2.95   8.4  15
##  [8,] -5.95 -18.6 -33
##  [9,]  5.75  16.4  32
## [10,]  0.35   3.4   0
S = (1/(n-1))*t(D)%*%D; S
##           BB        PM       RTB
## BB  10.98056  31.80000  54.96667
## PM  31.80000  94.04444 160.22222
## RTB 54.96667 160.22222 300.66667
Ds = diag(sqrt(diag(S))); Ds
##          [,1]     [,2]     [,3]
## [1,] 3.313692 0.000000  0.00000
## [2,] 0.000000 9.697651  0.00000
## [3,] 0.000000 0.000000 17.33974
R = solve(Ds) %*% S %*% solve(Ds); R
##           [,1]      [,2]      [,3]
## [1,] 1.0000000 0.9895743 0.9566313
## [2,] 0.9895743 1.0000000 0.9528259
## [3,] 0.9566313 0.9528259 1.0000000