K-means Clustering dengan Julia

Feb 07 2023
menggunakan Clustering.jl Apa itu K-means Clustering? Pengelompokan K-means adalah metodologi pembelajaran mesin tanpa pengawasan yang digunakan untuk klasifikasi titik data.

menggunakan Clustering.jl

Foto oleh Tolga Ulkan di Unsplash

Apa itu K-means Clustering?

Pengelompokan K-means adalah metodologi pembelajaran mesin tanpa pengawasan yang digunakan untuk klasifikasi titik data. Satu set N titik data dipartisi menjadi k cluster, ( k adalah jumlah cluster ). Setiap cluster difokuskan pada centroidnya ( nilai rata-rata ), dan titik-titik/pengamatan dalam cluster tersebut dekat dengan centroidnya ( nilai mean ).

Apa tujuannya?

Tujuan dari pengelompokan K-means adalah untuk mempartisi satu set titik data N ke dalam k cluster dengan fokus untuk mengurangi jarak antara jumlah jarak kuadrat antara setiap titik data dan pusat cluster yang ditugaskan (centroid).

Pada dasarnya ini akan mengelompokkan poin ( dengan centroid serupa ) bersama-sama.

Dengan pengelompokan K-means, jarak antara titik data dan pusat cluster mewakili kesamaan antara titik data dan cluster.

Secara lebih luas , K-means clustering digunakan untuk berbagai keperluan, seperti segmentasi citra, segmentasi pasar, deteksi anomali, pengelompokan, dll...

Bagaimana cara kerjanya?

Ketika titik data telah ditetapkan ke kluster, algoritme k berarti memperbarui pusat massa dengan menghitung rata-rata titik data yang ditetapkan ke setiap kluster. Centroid yang diperbarui menjadi pusat cluster yang baru, yang mewakili rata-rata semua titik di cluster tersebut.

Setiap titik data dalam cluster telah ditetapkan oleh centroid yang paling dekat dengan titik data tersebut. Ini dilakukan dengan menghitung jarak antara setiap titik data dan semua centroid , lalu memilih centroid dengan jarak minimum.

Mari kita lihat sebuah contoh, dan beberapa plot…

Di bawah ini adalah pengaturan saya.

Saya menambahkan seed acak yang membuat percobaan dapat direproduksi, dan saya telah membuat beberapa data, X dan Y.

using Clustering, Random, Plots, DataFrames
Random.seed!(1)
X = rand(200);
Y = rand(200)

      
                

scatter(X,Y, legend=false , title = "Random Points")

      
                

Z  = [X Y]'

      
                

k = 4

Kemudian saya menambahkan iterasi, yang akan membatasi berapa banyak iterasi yang dilakukan oleh algoritma.

iter = 50
Result = kmeans(Z, k; maxiter=iter, display=:iter)

Konvergensi setelah 8 iterasi!

Saya memeriksa apakah ada 4 cluster:

nclusters(Result) == 4

      
                

Saya juga dapat melihat tugas cluster:

h = assignments(Result)

      
                

Saya bisa mendapatkan ukuran cluster:

c = counts(Result)

      
                

mu = Result.centers

      
                

Plot

scatter(X,Y
,legend=false 
,title = "Random Points with black centroids"
,xlabel = "X" 
,ylabel = "Y"
,group = h
,markersize = 8
);
scatter!(mu[1,:],mu[2,:]
,color = :black 
,markersize = 12
)

      
                

Kesimpulan

Pengelompokan K-means adalah algoritme pembelajaran mesin tanpa pengawasan yang berguna yang mengklasifikasikan titik data tergantung pada jaraknya antara titik pusat data. Ini akan menyebabkan titik data yang serupa dikelompokkan bersama.

Ukuran jarak yang digunakan dapat berupa jarak Euclidean atau jarak Manhattan , yang akan bergantung pada jenis data yang sedang dikelompokkan, dan pilihan ini juga dapat berdampak signifikan pada hasil pengelompokan K-means.

Saya harap Anda menikmati artikel ini, dan merasa terbantu!

Mari terhubung di Linkedin , atau github , atau ikuti saya untuk artikel lainnya tentang Julia, R, Python, dan statistik terapan!