Apendiks C: Penyegaran Matematika untuk ML

Konsep Esensial Aljabar Linear, Kalkulus, Probabilitas, dan Optimasi

Apendiks C: Penyegaran Matematika untuk ML

🎯 Tujuan Apendiks

Apendiks ini menyediakan penyegaran cepat konsep matematika esensial yang digunakan dalam Machine Learning. Fokus kami adalah pada intuisi dan aplikasi praktis daripada pembuktian teoritis yang mendalam.

Yang akan Anda pelajari: - Operasi matriks dan vektor (fondasi ML) - Kalkulus dasar untuk memahami optimasi - Probabilitas dan statistika untuk modeling - Gradient descent dan optimasi - Entropy dan information theory dasar


C.1 Aljabar Linear

C.1.1 Vektor dan Matriks

Intuisi: Mengapa Ini Penting?

Dalam Machine Learning, kita bekerja dengan data dalam bentuk vektor dan matriks. Dataset dengan 1000 sampel dan 50 fitur adalah matriks 1000Ă—50. Setiap baris adalah vektor fitur untuk satu sampel.

Definisi Dasar

Sebuah vektor adalah array 1-dimensi dari angka:

\[\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \end{bmatrix} \in \mathbb{R}^n\]

Sebuah matriks adalah array 2-dimensi:

\[\mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1m} \\ a_{21} & a_{22} & \cdots & a_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nm} \end{bmatrix} \in \mathbb{R}^{n \times m}\]

Contoh ML: Dalam neural network, weight layer diwakili sebagai matriks \(\mathbf{W}\), dan input batch adalah matriks dengan fitur di kolom dan sampel di baris.

Operasi Matriks Penting

1. Penjumlahan Matriks (Element-wise) \[\mathbf{C} = \mathbf{A} + \mathbf{B} \quad \Rightarrow \quad c_{ij} = a_{ij} + b_{ij}\]

2. Perkalian Matriks (Dot Product) \[\mathbf{C} = \mathbf{A}\mathbf{B} \quad \Rightarrow \quad c_{ij} = \sum_{k=1}^{p} a_{ik}b_{kj}\]

Dimensi: \((n \times p) \times (p \times m) = (n \times m)\)

3. Dot Product Vektor \[\mathbf{u} \cdot \mathbf{v} = \sum_{i=1}^{n} u_i v_i = \|\mathbf{u}\| \|\mathbf{v}\| \cos\theta\]

Dot product mengukur kesamaan arah antara dua vektor. Penting untuk:

  • Menghitung similarity dalam recommender systems
  • Forward pass dalam neural networks
  • Kernel functions dalam SVM

4. Transpose \[\mathbf{A}^T_{ij} = \mathbf{A}_{ji}\]

Menukar baris dan kolom. Berguna untuk:

  • Mengkonversi antara berbagai representasi data
  • Menghitung gradient dalam backpropagation: \(\nabla\mathbf{W} = \mathbf{X}^T\delta\)

5. Inverse Matriks \[\mathbf{A}\mathbf{A}^{-1} = \mathbf{I}\]

Hanya didefinisikan untuk matriks persegi non-singular (determinan ≠ 0).

Aplikasi ML: Least squares solution: \(\mathbf{w} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}\)

Implementasi NumPy

import numpy as np

# Vektor dan matriks
v = np.array([1, 2, 3])  # Vektor 1D
A = np.array([[1, 2], [3, 4], [5, 6]])  # Matriks 3x2

# Operasi dasar
C = A + B  # Penjumlahan element-wise
C = A @ B  # Perkalian matriks (atau np.dot(A, B))
dot_product = np.dot(u, v)  # Dot product vektor
A_T = A.T  # Transpose
A_inv = np.linalg.inv(A)  # Inverse (hanya square matrices)

C.1.2 Eigenvalues dan Eigenvectors

Intuisi

Eigenvector adalah vektor yang tidak berubah arah ketika diproyeksikan oleh matriks, hanya berubah skalanya (eigenvalue).

\[\mathbf{A}\mathbf{v} = \lambda\mathbf{v}\]

Mengapa penting? - PCA (Principal Component Analysis): Menemukan arah varians maksimal dalam data - Graph Neural Networks: Spektral properties penting untuk structure learning - Stability analysis: Eigenvalues menceritakan dinamika sistem

Contoh Praktis

Matriks covariance dataset adalah simetris. Eigenvector-nya adalah principal components (arah varians terbesar), dan eigenvalue-nya adalah varians dalam arah itu.

# PCA menggunakan eigendecomposition
cov_matrix = np.cov(X.T)  # Covariance matrix
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)

# Urutkan berdasarkan eigenvalue terbesar
idx = eigenvalues.argsort()[::-1]
principal_components = eigenvectors[:, idx]

C.2 Kalkulus

C.2.1 Derivative dan Partial Derivative

Intuisi

Derivative mengukur laju perubahan fungsi. Dalam ML, kita gunakan untuk:

  • Menemukan minimum loss (gradient descent)
  • Menghitung sensitivitas output terhadap input
  • Backpropagation dalam neural networks

\[\frac{df}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}\]

Interpretasi geometris: Slope dari tangent line pada kurva di titik \(x\).

Aturan Dasar Derivative

Fungsi Derivative
\(c\) (konstanta) \(0\)
\(x^n\) \(nx^{n-1}\)
\(e^x\) \(e^x\)
\(\ln(x)\) \(\frac{1}{x}\)
\(\sin(x)\) \(\cos(x)\)
\(f(x) + g(x)\) \(f'(x) + g'(x)\)
\(f(x) \cdot g(x)\) \(f'(x)g(x) + f(x)g'(x)\)

Partial Derivative

Ketika fungsi tergantung pada banyak variabel, partial derivative adalah derivative terhadap satu variabel, menganggap yang lain konstan:

\[\frac{\partial f}{\partial x} = \text{derivative terhadap } x \text{ saja}\]

Contoh: Loss function \(L(\mathbf{w}, b) = \frac{1}{n}\sum(y - f(\mathbf{w}x + b))^2\)

\[\frac{\partial L}{\partial w_i} = \text{sensitivitas loss terhadap weight } w_i\]

C.2.2 Gradient

Gradient adalah vektor dari semua partial derivatives:

\[\nabla f = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{bmatrix}\]

Interpretasi: Gradient menunjuk ke arah peningkatan tercepat fungsi.

Aplikasi kritis: Untuk minimasi, kita bergerak berlawanan arah gradient:

\[\mathbf{x}_{\text{baru}} = \mathbf{x}_{\text{lama}} - \alpha \nabla f(\mathbf{x}_{\text{lama}})\]

Ini adalah gradient descent, algoritma fundamental untuk training ML.

C.2.3 Chain Rule (Untuk Backpropagation)

Chain rule adalah tulang punggung backpropagation dalam deep learning:

\[\frac{df}{dx} = \frac{df}{du} \cdot \frac{du}{dx}\]

Contoh neural network: Untuk output layer: \(\hat{y} = \sigma(\mathbf{w}^T\mathbf{x} + b)\)

Error: \(L = \frac{1}{2}(\hat{y} - y)^2\)

Untuk update weight \(w_i\):

\[\frac{\partial L}{\partial w_i} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial w_i}\]

dimana \(z = \mathbf{w}^T\mathbf{x} + b\).

# Numerical gradient checking (untuk verify backprop)
def numerical_gradient(f, x, eps=1e-5):
    grad = np.zeros_like(x)
    for i in range(x.size):
        x_plus = x.copy()
        x_plus.flat[i] += eps
        x_minus = x.copy()
        x_minus.flat[i] -= eps
        grad.flat[i] = (f(x_plus) - f(x_minus)) / (2 * eps)
    return grad

C.3 Probabilitas dan Statistika

C.3.1 Konsep Probabilitas Dasar

Probability mass function (PMF) untuk diskrit: \[P(X = x)\]

Probability density function (PDF) untuk kontinyu: \[f(x) = \frac{dP}{dx}\]

Conditional Probability

Probabilitas \(A\) diberikan \(B\) sudah terjadi:

\[P(A|B) = \frac{P(A \cap B)}{P(B)}\]

Aplikasi: Classification posterior dalam naive bayes:

\[P(\text{class}|\text{features}) = \frac{P(\text{features}|\text{class})P(\text{class})}{P(\text{features})}\]

Bayes’ Theorem

\[P(A|B) = \frac{P(B|A)P(A)}{P(B)}\]

Interpretasi: - \(P(A|B)\): Posterior (kepercayaan setelah melihat evidence) - \(P(B|A)\): Likelihood (seberapa likely evidence diberikan hypothesis) - \(P(A)\): Prior (kepercayaan awal) - \(P(B)\): Evidence (normalization constant)

C.3.2 Distribusi Probabilitas Umum

Normal Distribution (Gaussian)

\[f(x|\mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\]

Mengapa penting? - Banyak natural phenomena mengikuti normal distribution - Central Limit Theorem: rata-rata dari banyak random variables terdistribusi normal - Asumsi dalam banyak algoritma (linear regression, Gaussian naive bayes)

Bernoulli Distribution

\[P(X = 1) = p, \quad P(X = 0) = 1-p\]

Aplikasi: Binary classification, logistic regression

Multinomial Distribution

Generalisasi dari Bernoulli untuk multiple categories. Aplikasi: Multi-class classification.

C.3.3 Mean, Variance, Covariance

Mean (Expected Value): \[E[X] = \sum_{x} x \cdot P(X=x) \quad \text{(diskrit)} \quad \text{atau} \quad E[X] = \int x f(x)dx \quad \text{(kontinyu)}\]

Variance: \[\text{Var}(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2\]

Mengukur spread dari distribusi.

Covariance: \[\text{Cov}(X,Y) = E[(X - E[X])(Y - E[Y])]\]

Mengukur dependensi linear antara dua variabel.

Correlation: \[\rho(X,Y) = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} \in [-1, 1]\]

Normalized covariance (scale-invariant).

# Statistika dasar dengan NumPy
data = np.array([1, 2, 3, 4, 5])
mean = np.mean(data)
variance = np.var(data)
std = np.std(data)

# Covariance matrix
X = np.random.randn(100, 5)  # 100 samples, 5 features
cov_matrix = np.cov(X.T)  # 5x5 matrix
correlation = np.corrcoef(X.T)  # Correlation matrix

C.4 Optimasi dan Gradient Descent

C.4.1 Problem Optimasi

Machine Learning pada intinya adalah problem optimasi:

\[\min_{\mathbf{w}} L(\mathbf{w}) = \frac{1}{n}\sum_{i=1}^{n} \ell(y_i, f(\mathbf{w}; x_i))\]

dimana:

  • \(\mathbf{w}\): parameters/weights yang ingin dioptimalkan
  • \(L(\mathbf{w})\): loss function (mengukur prediction error)
  • \(\ell\): loss untuk satu sampel

C.4.2 Gradient Descent

Algoritma: 1. Inisialisasi \(\mathbf{w}\) secara random 2. Repeat:

  • Hitung gradient: \(\mathbf{g} = \nabla L(\mathbf{w})\)
  • Update: \(\mathbf{w} := \mathbf{w} - \alpha \mathbf{g}\)
  • Cek convergence

Hyperparameter penting: Learning Rate (\(\alpha\))

  • \(\alpha\) terlalu kecil: Konvergensi lambat, bisa stuck di local minimum
  • \(\alpha\) terlalu besar: Diverge atau oscillate
  • \(\alpha\) optimal: Balance antara kecepatan dan stabilitas
def gradient_descent(loss_fn, grad_fn, w_init, alpha=0.01, epochs=1000):
    w = w_init.copy()
    losses = []

    for epoch in range(epochs):
        loss = loss_fn(w)
        losses.append(loss)

        grad = grad_fn(w)
        w = w - alpha * grad  # Update step

        if epoch % 100 == 0:
            print(f"Epoch {epoch}: Loss = {loss:.4f}")

    return w, losses

C.4.3 Local Minima vs Global Minima

  • Global minimum: Titik terendah di seluruh function space
  • Local minimum: Titik terendah dalam neighborhood tertentu

Tantangan: Non-convex loss functions (seperti di deep learning) memiliki banyak local minima.

Solusi praktis: - Multiple random initializations - Adaptive learning rates (Adam, RMSprop) - Batch normalization - Regularization untuk smoothing landscape


C.5 Information Theory Basics

C.5.1 Entropy

Entropy mengukur ketidakpastian atau informasi rata-rata dalam distribusi:

\[H(X) = -\sum_{x} P(x) \log P(x)\]

Interpretasi: - \(H = 0\): Pasti (no uncertainty) - \(H\) maksimum: Uniform distribution (maximum uncertainty)

Contoh: Dataset dengan 50% class A dan 50% class B memiliki entropy lebih tinggi daripada 99% class A dan 1% class B.

Aplikasi: - Decision trees: Memilih split berdasarkan information gain - Model selection: Entropy regularization

C.5.2 Cross-Entropy

Mengukur divergence antara true distribution \(p\) dan predicted distribution \(q\):

\[H(p,q) = -\sum_{x} p(x) \log q(x)\]

Dalam classification: Untuk true label (one-hot): \(p = [0, 1, 0]\) dan predicted probabilities \(q = [0.1, 0.8, 0.1]\)

\[\text{Cross-Entropy} = -[0 \cdot \log(0.1) + 1 \cdot \log(0.8) + 0 \cdot \log(0.1)] = -\log(0.8)\]

Mengapa cross-entropy loss? - Penalizes incorrect predictions lebih keras - Mathematically elegant untuk probability models - Standard dalam deep learning frameworks

from sklearn.metrics import log_loss

# Cross-entropy loss
y_true = [0, 1, 1, 0]  # True labels
y_pred = [0.1, 0.9, 0.8, 0.3]  # Predicted probabilities

ce_loss = log_loss(y_true, y_pred)
print(f"Cross-entropy loss: {ce_loss:.4f}")

C.6 Ringkasan Cepat

Konsep Formula Aplikasi ML
Dot Product \(\mathbf{u} \cdot \mathbf{v} = \sum u_i v_i\) Neural network forward pass
Gradient \(\nabla f = [\frac{\partial f}{\partial x_1}, \ldots]\) Gradient descent optimization
Chain Rule \(\frac{df}{dx} = \frac{df}{du} \cdot \frac{du}{dx}\) Backpropagation
Conditional Prob \(P(A\|B) = \frac{P(B\|A)P(A)}{P(B)}\) Naive Bayes classifier
Variance \(\text{Var}(X) = E[X^2] - (E[X])^2\) Feature scaling, regularization
Cross-Entropy \(H(p,q) = -\sum p(x)\log q(x)\) Loss function untuk classification

C.7 Latihan Praktis

Problem 1: Matrix Operations

Diberikan \(\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\) dan \(\mathbf{B} = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix}\)

  1. Hitung \(\mathbf{A}\mathbf{B}\)
  2. Hitung \(\mathbf{A}^T\)
  3. Implementasikan dengan NumPy

Problem 2: Gradient Calculation

Diberikan \(f(x, y) = x^2 + 2xy + y^2\)

  1. Hitung \(\frac{\partial f}{\partial x}\) dan \(\frac{\partial f}{\partial y}\)
  2. Hitung gradient di titik \((1, 1)\)
  3. Verifikasi dengan numerical gradient

Problem 3: Probability

Dataset memiliki 70% spam dan 30% legitimate emails. Dari spam emails, 95% mengandung kata “free” Dari legitimate, 5% mengandung kata “free”

Jika email mengandung kata “free”, berapa probabilitas email tersebut adalah spam? (Gunakan Bayes’ theorem)


C.8 Referensi Tambahan

  • Buku: “Mathematics for Machine Learning” oleh Deisenroth, Faisal, & Ong (free online)
  • Online: Khan Academy - Linear Algebra, Calculus, Probability
  • NumPy Docs: https://numpy.org/doc/
  • Visualization: 3Blue1Brown - Essence of Algebra/Calculus (YouTube)
đź’ˇ Tip Pembelajaran

Jangan hanya membaca, praktikkan! Setiap konsep di sini lebih baik dipelajari dengan: 1. Menulis ulang formula tangan 2. Implement dengan code 3. Eksperimen dengan data real 4. Gunakan dalam project ML