Konsep Clustering

Clustering sebagai pencarian struktur tanpa label beserta tantangan menilai hasilnya.

Daftar isi

Topik ini membahas clustering sebagai tugas pembelajaran tak terawasi untuk menemukan kelompok pada data yang tidak memiliki label sama sekali. Pembahasan mencakup perbedaan cara berpikir antara clustering dan klasifikasi, ranah penggunaan yang lazim, serta cara menilai hasil clustering melalui ukuran internal dan eksternal. Satu skrip Python menghitung inersia dan silhouette untuk berbagai jumlah cluster pada data sintetis, lalu hasilnya dibaca untuk memperlihatkan kekuatan dan batas setiap ukuran.

Mengelompokkan data tanpa label#

Clustering mengelompokkan baris data sehingga baris yang sejenis berkumpul dalam satu cluster dan baris yang berbeda karakter terpisah ke cluster lain. Kesejajaran itu diukur dari jarak pada ruang fitur, yaitu dua baris dengan nilai fitur yang mirip dianggap berdekatan. Algoritma clustering hanya melihat fitur, karena tidak ada kolom label yang memberi tahu kelompok mana yang benar. Hasilnya berupa nomor cluster untuk setiap baris, dan nomor itu baru bermakna setelah isi setiap cluster diperiksa.

Cara menilai hasil clustering berbeda mendasar dari klasifikasi. Klasifikasi memiliki jawaban benar pada data uji, sehingga kinerjanya dihitung sebagai akurasi atau metrik turunannya. Clustering tidak memiliki acuan semacam itu, karena pembagian yang wajar bisa lebih dari satu. Data pengguna, misalnya, dapat dibagi menjadi tiga kelompok besar atau delapan kelompok halus, dan keduanya sah sesuai kebutuhan. Penilaian clustering karenanya mengandalkan koherensi kelompok, masuk akalnya kelompok menurut pengetahuan domain, serta kegunaannya bagi keputusan berikutnya. Penamaan cluster tetap menjadi pekerjaan manusia karena algoritma hanya menghasilkan nomor.

Penggunaan yang lazim#

Penggunaan pertama adalah eksplorasi data. Sebelum memodelkan apa pun, clustering membantu memeriksa apakah data membentuk gumpalan alami atau justru menyebar merata, dan jawabannya memengaruhi pemilihan model berikutnya. Data yang terbagi menjadi beberapa gumpalan rapat menunjukkan struktur yang siap dimanfaatkan, sedangkan data yang menyebar tanpa batas jelas menandakan bahwa pembagian tegas akan bersifat paksaan.

Penggunaan kedua adalah segmentasi, yaitu pembagian baris data menjadi kelompok berdasarkan pola yang mirip agar setiap kelompok dapat diperlakukan berbeda. Contoh netralnya adalah segmentasi pola peminjaman perpustakaan menjadi kelompok peminjam menyeluruh, peminjam berkala, dan peminjam satu topik. Contoh lainnya adalah segmentasi pola konsumsi listrik rumah tangga menjadi kelompok konsumsi merata sepanjang hari dan kelompok yang bertumpu pada malam hari. Segmentasi semacam ini tidak menilai siapa yang baik atau buruk, melainkan hanya memetakan pola yang ada. Kelompok hasilnya kemudian menjadi bahan keputusan, misalnya penjadwalan layanan atau pengelompokan koleksi.

Penggunaan ketiga adalah pra-langkah analisis. Nomor cluster dapat ditambahkan sebagai fitur baru bagi model terawasi, atau analisis statistik dijalankan terpisah per cluster agar perbedaan antar kelompok tidak tersamar dalam rata-rata global. Pada kedua peran itu, clustering bekerja sebagai alat bantu, sehingga kualitasnya perlu diperiksa ulang dalam konteks tugas yang memakai hasilnya.

Menilai hasil clustering#

Ukuran internal menilai hasil clustering hanya dari data dan penugasannya, tanpa label apa pun. Inersia (inertia) adalah jumlah kuadrat jarak setiap titik ke centroid clusternya, sehingga nilai yang kecil berarti anggota cluster rapat. Masalahnya, inersia selalu turun ketika jumlah cluster dinaikkan, sehingga mengejar inersia terkecil hanya mendorong jumlah cluster sebanyak mungkin. Ukuran ini karenanya tidak dapat digunakan sendirian.

Ukuran internal lainnya adalah silhouette, yang memadukan kepadatan dalam cluster dan jarak antar cluster. Perhitungannya bertumpu pada dua jarak untuk setiap titik. Nilai aa adalah jarak rata-rata ke sesama anggota cluster sendiri, sedangkan nilai bb adalah jarak rata-rata ke anggota cluster tetangga terdekat:

s=b−amax⁡(a,b) s = \frac{b - a}{\max(a, b)}

Nilai ss berada pada rentang [−1,1][-1, 1]. Nilai yang mendekati 1 menandakan titik yang rapat dengan sesama anggota clusternya dan jauh dari cluster lain. Rata-rata silhouette seluruh titik digunakan sebagai skor satu pembagian, dan pembagian dengan skor tertinggi menjadi kandidat terbaik. Ukuran eksternal berbeda peran, yaitu membandingkan hasil clustering dengan label yang kebetulan tersedia, misalnya spesies bunga pada dataset iris. Pemeriksaan semacam itu hanya dimungkinkan oleh kebetulan dan bukan bagian dari tugas clustering, tetapi berguna sebagai alat belajar.

Skrip berikut menghitung kedua ukuran internal pada data sintetis empat gumpalan untuk kk dari 2 sampai 7. Jalankan skrip dari folder topik dengan perintah python3 -B silhouette-blobs.py.

python silhouette-blobs.py
"""Membandingkan inersia dan silhouette untuk berbagai jumlah cluster."""

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import silhouette_score

pd.set_option("display.width", 80)

# data sintetis dengan empat gumpalan yang diketahui
X, _ = make_blobs(n_samples=400, centers=4, random_state=42)

baris = []
for k in range(2, 8):
    km = KMeans(n_clusters=k, n_init=10, random_state=42)
    label = km.fit_predict(X)
    baris.append({
        "k": k,
        "inersia": km.inertia_,
        "silhouette": silhouette_score(X, label),
    })

tabel = pd.DataFrame(baris).set_index("k")
tabel["inersia"] = tabel["inersia"].map("{:.1f}".format)
tabel["silhouette"] = tabel["silhouette"].map("{:.4f}".format)
print(tabel.to_string())
text Keluaran
   inersia silhouette
k
2  12840.7     0.5920
3   2886.5     0.7575
4    766.5     0.7935
5    691.3     0.6949
6    622.1     0.5562
7    554.2     0.4404

Pembacaan tabel memperlihatkan perilaku kedua ukuran. Silhouette naik menuju puncak 0.7935 pada k=4k = 4, tepat pada jumlah gumpalan yang diciptakan, lalu menurun ketika cluster yang ada dipaksa terbagi lagi. Sebaliknya, inersia turun terus dari 12840.7 hingga 554.2 tanpa pernah berbalik naik, sehingga nilai inersia terkecil selalu terjadi pada kk terbesar dan tidak menunjukkan pilihan terbaik. Perbandingan ini menegaskan bahwa inersia layak dibaca sebagai kurva untuk mencari titik siku (elbow), sedangkan silhouette memberi saran jumlah cluster secara lebih langsung.

Ringkasan#

  • Clustering mengelompokkan baris data berdasarkan kedekatan fitur tanpa label, sehingga tidak ada jawaban benar tunggal dan hasilnya dinilai dari koherensi kelompok serta kegunaannya.
  • Inersia mengukur kepadatan cluster tetapi selalu menurun ketika jumlah cluster bertambah, sehingga tidak dapat digunakan sendirian.
  • Silhouette memadukan kedekatan dalam cluster dan jarak antar cluster pada rentang [−1,1][-1, 1], dan puncaknya menunjukkan jumlah cluster yang lebih meyakinkan.
  • Pemeriksaan eksternal hanya mungkin bila label kebenaran kebetulan tersedia, dan penamaan cluster tetap pekerjaan manusia.

Referensi#