Algoritma K-Means adalah salah satu algoritma clustering paling populer dan mudah dipahami. Tujuannya adalah untuk mempartisi sekumpulan data menjadi K klaster yang berbeda, di mana setiap titik data hanya termasuk dalam klaster yang memiliki rata-rata terdekat (centroid).
Dalam artikel ini, kita akan membahas konsep dasar algoritma K-Means, bagaimana cara kerjanya, dan yang terpenting, bagaimana mengimplementasikannya menggunakan Python dengan pustaka populer seperti scikit-learn.
Clustering, atau pengelompokan, adalah tugas dalam pembelajaran mesin yang bertujuan untuk menemukan kelompok-kelompok alami dalam sebuah data. Data yang berada dalam satu kelompok (klaster) seharusnya memiliki kesamaan satu sama lain, sementara data dari kelompok yang berbeda seharusnya berbeda satu sama lain.
Contoh aplikasi clustering meliputi:
Algoritma K-Means beroperasi dalam beberapa langkah iteratif. Mari kita uraikan prosesnya:
Tujuan utama algoritma ini adalah untuk meminimalkan variasi intra-klaster (jarak total dari setiap titik data ke centroid klaster masing-masing) dan memaksimalkan variasi antar-klaster (jarak antara centroid klaster yang berbeda).
scikit-learn adalah pustaka yang sangat kuat untuk pembelajaran mesin di Python, dan ia menyediakan implementasi K-Means yang efisien dan mudah digunakan.
KMeans dari sklearn.cluster dan pustaka lain seperti numpy untuk manipulasi data dan matplotlib untuk visualisasi.KMeans, tentukan jumlah klaster n_clusters.fit() pada objek KMeans untuk melatih model dengan data Anda.predict() untuk menetapkan setiap titik data ke klaster yang sesuai.Berikut adalah contoh kode dasar untuk menggunakan K-Means di Python:
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 1. Buat Data Sampel
# Misalnya, kita punya 2 fitur dan 100 titik data
np.random.seed(42) # untuk reproduktibilitas
X = np.random.rand(100, 2) * 10 # Data acak antara 0 dan 10
# 2. Tentukan Jumlah Klaster (K)
k = 3 # Kita ingin membagi data menjadi 3 klaster
# 3. Buat dan Latih Model KMeans
kmeans = KMeans(n_clusters=k, random_state=42, n_init=10) # n_init=10 untuk menghindari hasil acak yang buruk
kmeans.fit(X)
# 4. Dapatkan Hasil Clustering
labels = kmeans.labels_ # Label klaster untuk setiap titik data
centroids = kmeans.cluster_centers_ # Posisi centroid
# 5. Visualisasi Hasil
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', marker='o', edgecolor='k', s=50)
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='X', s=200, label='Centroids')
plt.title('Hasil Clustering K-Means')
plt.xlabel('Fitur 1')
plt.ylabel('Fitur 2')
plt.legend()
plt.grid(True)
plt.show()
print("Centroids:\n", centroids)
print("Labels:\n", labels)
Dalam kode di atas:
numpy.k=3 untuk tiga klaster.KMeans dengan menentukan n_clusters dan random_state untuk hasil yang konsisten. n_init=10 berarti algoritma akan dijalankan 10 kali dengan centroid awal yang berbeda dan akan memilih hasil terbaik.fit(X) melatih model.kmeans.labels_ memberikan label klaster untuk setiap titik data, dan kmeans.cluster_centers_ memberikan koordinat dari centroid yang ditemukan.Salah satu tantangan terbesar dalam K-Means adalah memilih nilai K yang tepat. Terdapat beberapa metode untuk membantu menentukan nilai K yang optimal:
inertia_values = []
k_range = range(1, 11) # Coba K dari 1 sampai 10
for k_iter in k_range:
kmeans_iter = KMeans(n_clusters=k_iter, random_state=42, n_init=10)
kmeans_iter.fit(X)
inertia_values.append(kmeans_iter.inertia_)
plt.figure(figsize=(8, 6))
plt.plot(k_range, inertia_values, marker='o')
plt.title('Metode Elbow untuk Menentukan K Optimal')
plt.xlabel('Jumlah Klaster (K)')
plt.ylabel('Inertia')
plt.xticks(k_range)
plt.grid(True)
plt.show()
Dengan mengamati plot dari metode elbow, Anda dapat mencari titik di mana laju penurunan Inertia melambat secara signifikan, menunjukkan bahwa penambahan klaster tambahan tidak memberikan peningkatan yang berarti dalam hal mengurangi variasi dalam klaster.
Algoritma K-Means adalah alat yang ampuh dan fundamental dalam unsupervised learning untuk tugas pengelompokan. Dengan pemahaman yang baik tentang cara kerjanya dan implementasinya yang mudah menggunakan Python dan scikit-learn, Anda dapat mulai mengeksplorasi pola tersembunyi dalam data Anda. Ingatlah untuk mempertimbangkan metode penentuan nilai K yang optimal dan menyadari keterbatasan algoritma ini saat menerapkannya pada skenario dunia nyata.
Eksplorasilah lebih lanjut dengan dataset yang berbeda dan berbagai parameter KMeans untuk mendapatkan hasil yang paling sesuai dengan kebutuhan analisis Anda.
Visualisasi sederhana dari konsep K-Means dengan 3 klaster.