Lda.id

Lda.id

Diperbarui 2026-02-16 Baca 2 menit
Ringkasan
  • LDA adalah reduksi dimensi terawasi yang memaksimalkan jarak antar kelas dan meminimalkan sebaran dalam kelas.
  • Karena memanfaatkan label, LDA sering efektif sebagai praproses klasifikasi.
  • Kinerja dipengaruhi distribusi kelas dan asumsi kovarians.

Intuisi #

Berbeda dari PCA, LDA mengejar keterpisahan kelas secara langsung. Arah proyeksi dipilih agar kelas makin kompak dan saling jauh.

Penjelasan Rinci #

1. PCA vs LDA #

  • PCA: tak menggunakan label, hanya menjaga varian terbesar.
  • LDA: menggunakan label untuk memaksimalkan seperability kelas.

2. Rumus #

Dengan kelas (C_1, \dots, C_k):

  • Scatter intra-kelas: (S_W = \sum_{j=1}^k \sum_{x_i \in C_j} (x_i - \mu_j)(x_i - \mu_j)^\top)
  • Scatter antar-kelas: (S_B = \sum_{j=1}^k n_j (\mu_j - \mu)(\mu_j - \mu)^\top)
  • Maksimalkan (J(w) = \frac{w^\top S_B w}{w^\top S_W w}); autovektor (S_W^{-1}S_B) menjadi arah diskriminan (maksimal n_classes - 1).

3. Dataset contoh #

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import make_blobs

X, y = make_blobs(
    n_samples=600,
    n_features=3,
    random_state=11711,
    cluster_std=4,
    centers=3,
)

fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(projection="3d")
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
ax.set_xlabel("$x_1$")
ax.set_ylabel("$x_2$")
ax.set_zlabel("$x_3$")

Dataset 3D


4. LDA di scikit-learn #

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

lda = LDA(n_components=2).fit(X, y)
X_lda = lda.transform(X)

plt.figure(figsize=(8, 8))
plt.scatter(X_lda[:, 0], X_lda[:, 1], c=y, alpha=0.5)
plt.xlabel("LD1")
plt.ylabel("LD2")
plt.title("Embedding 2D via LDA")
plt.show()

Proyeksi LDA


5. Bandingkan dengan PCA #

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

plt.figure(figsize=(8, 8))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, alpha=0.5)
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.title("Embedding 2D via PCA")
plt.show()

Proyeksi PCA

PCA mencampur kelas karena tak menggunakan label; LDA menjaga pemisahan.


6. Tips #

  • Komponen maksimal = jumlah kelas − 1.
  • Standardisasi fitur terlebih dahulu.
  • Jika asumsi kovarians homogen tak terpenuhi, pertimbangkan QDA atau LDA regularisasi.