Anda di halaman 1dari 10

Algorithma K-Means

K-Means merupakan salah satu metode pengelompokan data


nonhirarki (sekatan) yang berusaha mempartisi data yang ada ke
dalam bentuk dua atau lebih kelompok. Metode ini mempartisi data
ke dalam kelompok sehingga data berkarakteristik sama dimasukkan
ke dalam satu kelompok yang sama dan data yang berkarakteristik
berbeda dikelompokkan ke dalam kelompok yang lain.
Pengelompokan ini bertujuan untuk meminimalkan fungsi objektif
yang diset dalam proses pengelompokan, yang pada umumnya
berusaha meminimalkan variasi di dalam suatu kelompok dan
memaksimalkan variasi antar kelompok (Prasetyo, 2012).

Langkah-langkah pengklasteran menggunakan algoritma K- Means


menurut Santosa (2007) diantaranya sebagai berikut:

Pilih jumlah cluster k, tentukan banyak cluster atau kempok data


yang ingin dibentuk.

Tentukan titik pusat (centroid) awal dari tiap cluster. Pusat- pusat
cluster diberi nilai awal dengan nilai random.

Alokasikan semua data/objek ke cluster terdekat. Kedekatan dua


objek ditentukan berdasarkan jarak kedua objek tersebut. Untuk
menghitung jarak semua data ke setiap titik pusat cluster dapat
menggunakan teori jarak Euclidean yang dirumuskan sebagaiberikut
:
Keterangan:

D(i,k) : Jarak data ke i ke pusat cluster k

Xij : Data pada indeks ke-j

Ckj : Pusat cluster pada indeks ke-j

Hitung kembali pusat cluster dengan keanggotaan cluster yang


sekarang. Pusat cluster adalah rata-rata dari semua data/objek dalam
cluster tertentu ataupun median dari cluster tersebut.
Tugaskan lagi setiap objek memakai pusat cluster yang baru. Jika
pusat cluster tidak berubah lagi maka proses clustering selesai. Atau,
kembali ke langkah ke 3 sampai pusat cluster tidak berubah lagi.

Algoritma K-Means tentunya masih memiliki kelemahan, salah


satunya yaitu dalam hal akurasi. Perhitungan yang cepat dan
sederhana merupakan keunggulan dari algoritma ini, namun algoritma
K-Means tidak bisa memberikan akurasi yang tepat. Hal ini
dikarenakan baik buruknya klasterisasi sangat bergantung pada nilai
centroid yang ditentukan di awal perhitungan, sehingga pemilihan
centroid awal yang berbeda ataupun tidak tepat akan sangat
berpengaruh pada hasil klasterisasi dan banyaknya iterasi yang harus
dilakukan (Arthur & Vassilvitskii, 2007).

Oleh karena itu, dalam jurnalnya yang berjudul k-means++: the


advantages of careful seeding, David Arthur dan Sergei
Vassilvitskii (2007) berpendapat bahwa hal itu bisa diatasi dengan
menambahkan random seeding technique pada pemilihan centroid
awal yang dapat meningkatkan akurasi pada algoritma. Terbukti,
pada jurnal tersebut David dan Sergei berhasil menunjukkan
bahwa algoritma K-Means yang telah ditambahkan randomized
seeding technique memberikan hasil yang lebih baik daripada
algoritma K- Means biasa dalam hal kecepatan dan akurasi.
Algoritma ini kemudian dinamakan dengan algoritma K-Means++.
Langkah algoritma K-Means++ tidak jauh berbeda dari algoritma K-
Means. Titik pusat klaster pertama tetap dipilih secara acak,
selanjutnya dilakukan perhitungan probabilitas untuk menentukan
centroid berikutnya sehingga setiap anggota memiliki
peluang untuk terpilih dan yang paling mendekati adalah yang paling
tepat. Setelah semua titik pusat klaster k terpilih, maka proses
dilanjutkan dengan algoritma K-Means standar. Berikut rumus
peluang atau randomized seeding technique:

Keterangan:

𝐷(𝑥′)2 : Jarak Euclidean Distance

∑𝑥∈𝑋 𝐷(𝑥′)2 : Jumlah jarak Euclidian Distance


Bekerja dengan Algoritma K-Means
Kita dapat memahami cara kerja algoritma pengelompokan K-Means dengan bantuan langkah-
langkah berikut :
Langkah 1 — Pertama, kita perlu menentukan jumlah cluster → K
Langkah 2 — Selanjutnya, pilih titik data K secara acak dan tetapkan setiap titik data ke
sebuah cluster. Dengan kata sederhana, mengklasifikasikan data berdasarkan jumlah titik data.
Langkah 3 — Sekarang itu akan menghitung centroid cluster.
Langkah 4 — Selanjutnya, tetap iterasi berikut sampai kami menemukan centroid optimal
yang merupakan penugasan titik data ke cluster yang tidak berubah lagi
 4.1 — Pertama, jumlah jarak kuadrat antara titik data dan centroid dihitung.
 4.2 — Sekarang, kita harus menetapkan setiap titik data ke klaster yang lebih dekat
daripada klaster lain (centroid).
 4.3 — Akhirnya hitung centroid untuk kluster dengan mengambil rata-rata semua titik
data kluster itu.

Penerapan algoritma pengelompokan K-Means dengan Python

1. Langkah pertama yaitu upload file data ritel cola ke dalam Jupyter Notebook

2. Import package  dari sklearn (scikit-learn) untuk melakukan clustering.


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler

3. Membaca data ritel cola yang sudah di upload serta menghapus kolom-kolom yang
tidak perlu dalam data.
ritel = pd.read_csv("ritel_cola.csv")
ritel = ritel.drop(["Unnamed: 4", "Unnamed: 5", "Unnamed: 6", "Unnamed: 7"], axis = 1)
ritel.head()import pandas as pd
Hasilnya

4. Setelah itu membuat plot data asli ritel cola untuk melihat sebaran aslinya
menggunakan sintaks berikut :

sns.scatterplot(x="Longitude", y="Latitude", data=ritel, s=100, color="red", alpha = 0.5)

Plot Data Ritel Cola


5. Selanjutnya yaitu menentukan variabel yang akan di klusterkan yaitu kolom “latitude”
dan “longitude” dan memberi nama ritel_x. Kemudian mengubahnya menajdi
bentuk array
#menentukan variabel kluster
ritel_x = ritel.iloc[:, 2:4]
ritel_x.head()#membuat array
x_array = np.array(ritel_x)
print(x_array)

6. Jika sudah berbentuk array maka selanjutnya menstandarkan ukuran variabel.


kemduian menentukan dan mengkonfigurasi fungsi kmeans. pada kali ini kita akan
mengkluster data ritel cola menajdi 5 kluster dengan kunci random 123
# menstandarkan ukuran variabel
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x_array)# membuat fungsi k-means
kmeans = KMeans(n_clusters = 5, random_state=123)# Menentukan kluster dari data
kmeans.fit(x_scaled)

7. Setelah itu menampilkan pusat cluster dan hasil cluster menggunakan perintah “
cluster_centers_” dan “ labels_”.

# Menampilkan pusat cluster


print(kmeans.cluster_centers_)
# Menampilkan hasil kluster
print(kmeans.labels_)

8.  Untuk mempermudah melihat data kluster maka menambah kolom kluster dalam data
frame ritel.

ritel["kluster"] = kmeans.labels_
ritel.head()
9. Jika sudah dilakukan clustering maka lakukan visualisasi pada plot untuk melihat
sebaran kluster berdasarkan warna dan ukuran plot.
plt.figsct = plt.scatter(x_scaled[:,1], x_scaled[:,0], s = 100, c = ritel.kluster, marker = "o", alpha
= 0.5)
centers = kmeans.cluster_centers_
plt.scatter(centers[:,1], centers[:,0], c='blue', s=200, alpha=0.5);
plt.title("Hasil Klustering K-Means")
plt.xlabel("Scaled Longitude")
plt.ylabel("Scaled Latitude")
plt.show()

Output Hasil kluster

plt.figure(figsize=[10,10])
sns.scatterplot(x_scaled[:,1], x_scaled[:,0], hue = ritel.kluster, palette="Set1", s = 100,
alpha = 0.7)
sns.scatterplot(centers[:,1], centers[:,0], color = "k", s = 200, alpha = 0.8);

Anda mungkin juga menyukai