Belajar Machine Learning - Unsupervised: Clustering & Dimensionality Reduction
Episode 8 of 25

Belajar Machine Learning - Unsupervised: Clustering & Dimensionality Reduction

Memasuki unsupervised learning: clustering dengan k-Means, DBSCAN, dan hierarchical beserta evaluasi silhouette, lalu dimensionality reduction memakai PCA untuk reduksi fitur serta t-SNE dan UMAP untuk visualisasi data berdimensi tinggi.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Sejauh ini kita selalu punya label (y) untuk diawasi. Pada episode ini kita masuk ke unsupervised learning: tidak ada label, hanya X. Model harus menemukan struktur tersembunyi sendiri.

Mengapa unsupervised penting di dunia nyata? Karena label itu mahal dan sering tidak ada. Segmen pelanggan mana yang paling menguntungkan? Transaksi mana yang aneh? Gambar mana yang mirip? Pertanyaan-pertanyaan ini tidak butuh label — butuh kemampuan menemukan pola. Kita akan membahas dua pilar: clustering dan dimensionality reduction.

Clustering: Mengelompokkan Data

Clustering mengelompokkan data sehingga anggota satu kelompok lebih mirip satu sama lain dibanding kelompok lain. Mirip organisasi file: dokumen yang bertema sama dikumpulkan dalam folder yang sama, tanpa perlu label tema di awal.

k-Means

k-Means adalah algoritma clustering paling populer. Cara kerjanya:

  1. Pilih k titik sebagai pusat cluster awal (centroid).
  2. Setiap titik digolongkan ke centroid terdekat.
  3. Pindahkan centroid ke rata-rata anggotanya.
  4. Ulangi sampai centroid stabil.
k-Means clustering
from sklearn.cluster import KMeans
 
kmeans = KMeans(n_clusters=3, n_init=10, random_state=42)
labels = kmeans.fit_predict(X)
print(labels[:10])

Karena berbasis jarak, k-Means wajib scaling — ingat pelajaran episode 4. Nilai k tidak diketahui sebelumnya; kita harus memilihnya, misalnya dengan elbow method atau silhouette (di bawah).

DBSCAN

DBSCAN berbeda pendekatan: ia mengelompokkan berdasarkan kepadatan titik. Kelebihannya:

  • Tidak perlu menentukan jumlah cluster.
  • Bisa mendeteksi outlier sebagai titik di daerah sepi.
  • Bisa menemukan cluster bentuk tidak teratur.
DBSCAN
from sklearn.cluster import DBSCAN
 
dbscan = DBSCAN(eps=0.5, min_samples=5)
labels = dbscan.fit_predict(X)
# label -1 = outlier
print(set(labels))

Bayangkan k-Means sebagai menggambar lingkaran berpusat; DBSCAN sebagai menandai "kerumunan" — titik yang dikelilingi titik lain bergabung, yang sendirian dibiarkan (label -1 = noise).

Hierarchical Clustering

Hierarchical clustering membangun hierarki: mulai dari setiap titik sebagai cluster sendiri, lalu menggabungkan yang paling mirip secara bertahap. Hasilnya divisualisasikan sebagai dendrogram — peta pohon yang menunjukkan struktur berlapis.

Agglomerative clustering
from sklearn.cluster import AgglomerativeClustering
 
agglo = AgglomerativeClustering(n_clusters=3)
labels = agglo.fit_predict(X)

Kelebihannya: kita tidak harus memilih jumlah cluster di awal — potong dendrogram di level mana pun untuk mendapat jumlah cluster berbeda.

Evaluasi Clustering: Silhouette

Tanpa label, bagaimana tahu clustering kita bagus? Metrik paling populer: silhouette score, bernilai -1 sampai 1.

  • Dekat 1: titik sangat cocok dengan clusternya dan jauh dari cluster lain.
  • Dekat 0: titik berada di perbatasan antar cluster.
  • Negatif: titik mungkin salah cluster.
Silhouette score
from sklearn.metrics import silhouette_score
 
for k in range(2, 7):
    kmeans = KMeans(n_clusters=k, n_init=10, random_state=42)
    labels = kmeans.fit_predict(X)
    score = silhouette_score(X, labels)
    print(f"k={k}: silhouette={score:.3f}")

Kita juga bisa membandingkan nilai k untuk memilih jumlah cluster terbaik — k dengan silhouette tertinggi biasanya pilihan yang masuk akal.

Dimensionality Reduction

Ketika fitur sangat banyak, masalah muncul: komputasi lambat, visualisasi mustahil, dan model rawan overfit. Dimensionality reduction mereduksi jumlah dimensi sambil mempertahankan informasi penting.

PCA (Principal Component Analysis)

PCA menemukan arah (komponen) di mana data paling bervariasi, lalu memproyeksikan data ke arah-arah itu. Komponen pertama menangkap variansi terbesar, komponen kedua menangkap sisanya, dan seterusnya.

PCA
from sklearn.decomposition import PCA
 
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
print(X_reduced.shape)
print(f"variansi dijelaskan: {pca.explained_variance_ratio_.sum():.2%}")

Fitur baru (komponen) adalah kombinasi linear fitur lama — jadi interpretasi per-fiturnya hilang. Tapi untuk keperluan reduksi dan visualisasi, ini sangat efektif.

TeknikTujuanKecepatanInterpretasi
PCAReduksi fitur & visualisasiCepat, deterministikLinear (komponen kombinasi fitur)
t-SNEVisualisasiLambat di dataset besarMenjaga kedekatan lokal
UMAPVisualisasiLebih cepat dari t-SNEMenjaga struktur lokal & global

t-SNE dan UMAP

t-SNE dan UMAP memetakan data berdimensi tinggi ke 2D/3D khusus untuk visualisasi. Mereka berusaha menjaga titik yang berdekatan di ruang asli tetap berdekatan di ruang proyeksi.

UMAP
import umap
 
embedding = umap.UMAP(n_components=2, random_state=42)
X_2d = embedding.fit_transform(X)
 
import matplotlib.pyplot as plt
plt.scatter(X_2d[:, 0], X_2d[:, 1], c=labels, s=5)
plt.show()

Warning

t-SNE dan UMAP adalah alat visualisasi, bukan reduksi fitur untuk modeling. Jarak dan cluster yang terlihat di plot tidak boleh dianggap sebagai hasil clustering — mereka bisa menyesatkan. Gunakan PCA untuk reduksi yang dipakai model, t-SNE/UMAP untuk eksplorasi visual.

Praktik: Segmen Pelanggan

Gabungkan pipeline yang sudah kita pelajari:

Clustering end-to-end
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.cluster import KMeans
 
pipeline = Pipeline([
    ("scale", StandardScaler()),
    ("pca", PCA(n_components=5)),
    ("kmeans", KMeans(n_clusters=3, n_init=10, random_state=42)),
])
 
labels = pipeline.fit_predict(X)
segmen = df.assign(segment=labels)
print(segmen.groupby("segment").mean())

Perhatikan alurnya: scaling → PCA → k-Means, dalam satu Pipeline. Hasil groupby memberi profil tiap segmen — misalnya segmen 0 berisi customer muda berpendapatan rendah, segmen 1 customer lama berpendapatan tinggi. Profil inilah bahan keputusan bisnis.

Common Pitfalls

  • Tidak scaling sebelum k-Means dan PCA — fitur berskala besar mendominasi.
  • Menentukan k secara asal — pakai silhouette/elbow.
  • Menginterpretasi jarak t-SNE/UMAP sebagai jarak sebenarnya — hanya untuk visual.
  • Memakai PCA untuk interpretasi bisnis — komponennya tidak mudah dijelaskan.
  • Menganggap clustering tanpa validasi — selalu cek silhouette dan profil cluster.

Penutup

Pada episode 8 ini, kalian telah menguasai dua pilar unsupervised learning.

Inti yang harus dibawa pulang:

  • k-Means cepat dan sederhana, tapi butuh k dan scaling; DBSCAN mendeteksi outlier dan bentuk bebas; hierarchical memberi struktur berlapis.
  • Silhouette adalah metrik evaluasi clustering yang utama.
  • PCA mereduksi fitur dan bisa dipakai sebelum modeling; t-SNE/UMAP khusus visualisasi.
  • Selalu scale sebelum clustering dan PCA.

Di episode 9 selanjutnya kita akan membahas feature engineering & feature selection — membuat fitur turunan, binning, interaksi, penanganan tanggal/kategori, lalu memilih fitur terbaik dengan metode filter, wrapper, dan embedded. Sampai jumpa di episode 9!