K-Means: Algoritma Clustering Populer untuk Analisis Data

Apa itu K-Means?

Pengelompokan data adalah teknik fundamental dalam bidang analisis data yang bertujuan untuk mengelompokkan objek atau data yang serupa berdasarkan atribut-atribut yang dimiliki. Salah satu algoritma pengelompokan yang paling populer dan sederhana adalah K-Means. Dalam artikel ini, kita akan membahas konsep dasar K-Means dan langkah-langkah implementasinya.

K-Means adalah algoritma pengelompokan data yang efektif dan mudah dimengerti. Tujuannya adalah mempartisi data menjadi kelompok-kelompok yang disebut “kluster” berdasarkan kesamaan atribut. Setiap kluster direpresentasikan oleh sebuah pusat yang disebut “centroid”. Algoritma K-Means berusaha meminimalkan jarak antara setiap titik data dengan centroid kluster yang sesuai.

Bagaimana K-Means Bekerja?

Algoritma K-Means mengikuti langkah-langkah berikut:

  1. Inisialisasi: Tentukan jumlah kluster sebanyak $K$ yang diinginkan dan pilih secara acak sebagai centroid awal $(C)$.

  2. Pengelompokan: Setiap titik data $(x)$ diberikan label berdasarkan centroid terdekat terhadap titik tersebut. Titik-titik ini akan menjadi anggota kluster yang bersesuaian. $$d(x)=||x_i - C||$$ Untuk menghitung jarak titik data dengan centroid data dapat digunakan jarak euclidian seperti rumus di atas atau dengan trik kernel.

  3. Pembaruan Centroid: Setelah pengelompokan awal, centroid baru dihitung sebagai rata-rata dari semua titik data dalam kluster yang terkait. $$C=\dfrac{\sum_{i=1}^n{x_i}}{n}$$

  4. Iterasi: Langkah kedua dan ketiga diulang hingga tidak ada perubahan dalam pengelompokan atau iterasi maksimum tercapai.

  5. Hasil: Setelah iterasi selesai, hasil akhir adalah pengelompokan data yang optimal, dengan setiap titik data berasosiasi ke salah satu kluster.

Aplikasi K-Means di Dunia Nyata

K-Means menjadi algoritma sederhana dan serbaguna yang dapat diaplikasi pada berbagai bidang, termasuk:

  • Segmentasi Pelanggan: K-Means dapat digunakan untuk mengelompokkan pelanggan berdasarkan perilaku pembelian, demografi, atau atribut relevan lainnya. Informasi ini membantu bisnis dalam menyesuaikan strategi pemasaran untuk segmen pelanggan tertentu.

  • Kompresi Gambar: Dengan mengelompokkan warna yang serupa dalam sebuah gambar, K-Means dapat mengurangi jumlah warna yang digunakan sambil mempertahankan kualitas visual secara keseluruhan. Teknik ini banyak digunakan dalam algoritma kompresi gambar.

  • Deteksi Anomali: K-Means dapat digunakan untuk mengidentifikasi anomali atau pencilan dalam dataset. Titik data yang secara signifikan berbeda dari kluster yang ditetapkan dapat dianggap sebagai anomali dan memerlukan investigasi lebih lanjut.

  • Pengelompokan Dokumen: K-Means dapat mengelompokkan dokumen berdasarkan kontennya, memungkinkan organisasi dan pengambilan informasi yang efisien dalam sistem manajemen dokumen atau mesin pencari.

Implementasi K-Means dengan Python

Mari kita lihat bagaimana kita dapat mengimplementasikan algoritma K-Means menggunakan bahasa pemrograman Python dengan menggunakan pustaka scikit-learn.

Untuk implementasi K-Means dengan python tanpa pustaka scikit-learn dapat di lihat di sini https://github.com/yudopr11/simple-ml.

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

# Membuat data contoh
X = np.array([
    [1, 2], [2, 1], [3, 1],
    [5, 4], [5, 5], [6, 5],
    [10, 8], [7, 9], [11, 5],
    [14, 9], [14, 14], [9, 12]
    ])

# Menginisialisasi model K-Means dengan 2 kelompok
kmeans = KMeans(n_clusters=2, n_init='auto')

# Melatih model dengan data
kmeans.fit(X)

# Mendapatkan label kelompok untuk setiap titik data
labels = kmeans.labels_

# Mendapatkan koordinat centroid
centroids = kmeans.cluster_centers_

# Plot hasil pengelompokan
colors = ['green', 'red']

# Plot titik-titik data
for i in range(len(X)):
    plt.plot(X[i][0], X[i][1], color=colors[labels[i]], marker='o', markersize=10)

# Plot titik-titik centroid
for i in range(len(cntr)):
    plt.plot(centroids[i][0], centroids[i][1], color=colors[i], marker='x', markersize=10)

plt.show()

Dalam contoh di atas, kita membuat data contoh dengan dua kluster yang terlihat dalam bentuk koordinat. Kemudian, kita menggunakan pustaka scikit-learn untuk membuat objek KMeans dengan jumlah kluster (n_clusters) yang diinginkan, dalam hal ini 2. Selanjutnya, kita melatih model dengan data menggunakan metode fit(). Setelah model dilatih, kita dapat memperoleh label kluster untuk setiap titik data menggunakan atribut labels_. Koordinat centroid untuk setiap kluster dapat diakses melalui atribut cluster_centers_.


Hasil K-Means

Dengan menggunakan algoritma K-Means, kita dapat mengelompokkan data ke dalam kluster-kluster yang sesuai berdasarkan kesamaan atribut. Metode ini berguna dalam berbagai aplikasi seperti segmentasi pelanggan, analisis pasar, pengenalan pola, dan lain-lain.

Kesimpulan

Algoritma K-Means adalah alat yang berguna dalam pengelompokan data. Dengan memahami konsep dasar dan menerapkan algoritma ini dalam implementasi praktis menggunakan bahasa pemrograman Python, kita dapat menggali informasi berharga dari data dan menemukan pola yang tersembunyi.

Referensi

S. (2012, October 31). GitHub - stuntgoat/kmeans: K Means Clustering with Python. GitHub. https://github.com/stuntgoat/kmeans.
Jeffares, A. (2019, November 19). K-means: A Complete Introduction. Medium. https://towardsdatascience.com/k-means-a-complete-introduction-1702af9cd8c.
sklearn.cluster.KMeans. (n.d.). Scikit-learn. https://scikit-learn/stable/modules/generated/sklearn.cluster.KMeans.html.
Zhang, G. (2018, November 11). What is the kernel trick? Why is it important? Medium. https://medium.com/@zxr.nju/what-is-the-kernel-trick-why-is-it-important-98a98db0961d.