OPTICS

"Ordering Points To Identify the Clustering Structure"

1. Apa Bedanya dengan DBSCAN?

DBSCAN punya satu kelemahan besar: Epsilon ($\epsilon$) fix. Jika ada dua cluster, satu padat sekali (butuh $\epsilon$ kecil), satu renggang (butuh $\epsilon$ besar), DBSCAN akan gagal mendeteksi salah satunya.

OPTICS mengatasi ini dengan tidak memaksakan cluster langsung. Alih-alih, dia membuat Urutan (Ordering) dan Reachability Distance. Bayangkan OPTICS seperti scan peta kontur gunung dan lembah.

2. Visualisasi: Reachability Plot

Grafik batang di bawah ini bukan Histogram biasa. Ini adalah "Jarak yang harus ditempuh untuk mencapai titik berikutnya".

Lembah (Valley) = Cluster (Titik-titik berdekatan)
Bukit (Peak) = Noise / Pemisah (Jarak jauh)

Dengan OPTICS, kita bisa memotong bukit di ketinggian berapapun untuk mendapatkan cluster dengan kepadatan berbeda!

3. Core & Reachability Distance

  • Core Distance: Jarak terkecil untuk mendapatkan MinPts tetangga. (Seberapa padat area sekitar saya?)
  • Reachability Distance: Jarak dari titik A ke B. "Kalau saya berdiri di A (Core), seberapa jauh saya harus merangkul untuk mencapai B?"

4. Implementasi Python (Scikit-Learn)

from sklearn.cluster import OPTICS
import numpy as np
import matplotlib.pyplot as plt

# 1. Data Dummy
X = np.array([[1, 2], [2, 5], [3, 6],
              [8, 7], [8, 8], [7, 3]])

# 2. Model OPTICS
# min_samples=2 (Minimal tetangga)
# xi dan min_cluster_size mengatur sensitivitas pemotongan lembah
clust = OPTICS(min_samples=2, xi=0.05, min_cluster_size=0.05)

# 3. Training
clust.fit(X)

# 4. Hasil Reachability
print("Reachability Distances:", clust.reachability_)
print("Labels:", clust.labels_)
# Label -1 artinya Noise.

# Kita bisa plot reachability_ untuk melihat struktur lembah seperti visualisasi di atas.