Apendiks C: Penyegaran Matematika untuk ML
Konsep Esensial Aljabar Linear, Kalkulus, Probabilitas, dan Optimasi
Apendiks C: Penyegaran Matematika untuk ML
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 gradC.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 matrixC.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, lossesC.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}\)
- Hitung \(\mathbf{A}\mathbf{B}\)
- Hitung \(\mathbf{A}^T\)
- Implementasikan dengan NumPy
Problem 2: Gradient Calculation
Diberikan \(f(x, y) = x^2 + 2xy + y^2\)
- Hitung \(\frac{\partial f}{\partial x}\) dan \(\frac{\partial f}{\partial y}\)
- Hitung gradient di titik \((1, 1)\)
- 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)
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