106 Views

Perbandingan Clustering KMeans dengan DBSCAN – Postingan ini akan memberikan kalian perbandingan kinerja mengenai algoritma Clustering KMeans dengan DBSCAN. Untuk menilai berapa jumlah cluster yang terbaik, bisa kalian baca disini atau disini.

Algoritma KMeans telah banyak dibahas dan banyak digunakan secara umum karena sangat mudah, namun demikian algoritma ini kurang begitu tahan ketika terjadi overlapping data. Kalian bisa melihat plot dataset berikut

Kalian melihat, setidaknya ada 5 cluster atau grouping, dengan 2 diantaranya overlapping. Kalau pun kita paksa menggunakan KMeans Clustering, hasilnya tidak bagus.

library(factoextra)
data("multishapes")
df <- multishapes[, 1:2]
set.seed(123)
result_kmeans = kmeans(df, 5, nstart = 25)
fviz_cluster(result_kmeans, df,  geom = "point", 
             ellipse= FALSE, show.clust.cent = FALSE,
             palette = "jco", ggtheme = theme_classic())

Untuk dibutuhkan algoritma clustering yang lain seperti Fuzzy C-Means Clustering. Namun saat ini, saya tidak menggunakan algoritma tersebut dan menggunakan algoritma DBSCAN saja untuk melihat kinerjanya.  Kita akan menggunakan package fpc.

library("fpc")
db <- fpc::dbscan(df, eps = 0.15, MinPts = 5)
fviz_cluster(db, data = df, stand = FALSE,
             ellipse = FALSE, show.clust.cent = FALSE,
             geom = "point",palette = "jco", ggtheme = theme_classic())

Kalian bisa melihat hasil sebagai berikut

 

Sekilas Algoritma dbcan

Tujuannya adalah untuk mengidentifikasi daerah padat-dense region, yang dapat diukur dengan jumlah objek yang mendekati titik tertentu.

Dua parameter penting diperlukan untuk DBSCAN: epsilon (“eps”) dan poin minimum (“MinPts”). Parameter eps mendefinisikan radius lingkungan sekitar titik x. Ini disebut ϵ-sebuah lingkungan dari x. Parameter MinPts adalah jumlah minimum tetangga dalam radius “eps”.

Setiap titik x dalam kumpulan data, dengan jumlah tetangga lebih besar dari atau sama dengan MinPts, ditandai sebagai titik inti. Kita katakan bahwa x adalah titik batas, jika jumlah tetangganya kurang dari MinPts, tetapi itu milik ϵ – punya tetangga lainnya / neighborhood dari beberapa poin inti z. Akhirnya, jika suatu titik bukan merupakan titik inti atau batas, maka itu disebut titik kebisingan atau pencilan.

Untuk langkah demi langkah, bisa kalian Lebih lanjut, bisa baca disini, atau disini  atau disini. Bila menggunakan Python bisa baca disini.

Adapun bila suka menggunakan Python bisa disini

 

Leave a Reply