Algoritma K-Modes

Pada Dunia nyata, data mungkin memiliki tipe yang berbeda, seperti data numerik dan kategorik. Untuk melakukan analisis cluster, kita harus mempertimbangkan tipe data yang kita miliki. Algoritma clustering yang biasa digunakan dalam teknik pengelompokan dan efisien digunakan untuk data besar adalah K-Means. akan tetapi algoritma K-Means hanya bisa digunakan untuk data numerik. Jadi, Huang pada tahun 1998 mengusulkan algoritma yang disebut K-Modes untuk menangani algoritma pengelompokan dengan tipe data kategorik. K-Modes pertamakali dipublikasikan oleh (Huang 1998) yang merupakan metode pertama yang dapat mengelompokan data kategorik. Pendekatan K-Modes merupakan hasil modifikasi dari K-Means standar untuk mengklasterisasi data kategoris dengan mengantikan fungsi jarak Euclidean dengan jarak mismatching. Algoritma K-Means hanya dapat bekerja dengan baik untuk set data yang tipe datanya numerik (interval atau rasio), namun tidak dapat digunakan untuk fitur kategorikal (nominal atau ordinal). Permasalahan yang terjadi pada K-Means ini terbatas pada penggunaan data bertipe numerik karena pengelompokan yang dilakukan K-Means dengan cara menghitung rata-rata dari suatu data dengan data yang lain. Untuk Menyelesaikan maslah tersebut K-Modes melakukan modifikasi pada K-Means sebagai Berikut:

  1. Menggunakan ukuran pencocokan ketidakmiripan sederhana pada fitur data bertipe kategorikal

  2. mengganti mean cluster dengan modus (nilai yang sering muncul)

  3. menggunakan metode partisi berbasis frekuensi untuk mencari modus dari sekumpulan data

Andaikan X dan Y adalah dua dara dengan variabel bertipe kategorik, ukuran ketidak miripan diantara X dan Y dapat diukur dengan jumlah ketidakcocokan nilai dari fitur yang berkorespondensi dari dua data. Semakin kecil nilai ketidakcocokan, maka semakin mirip data tersebut. matriks seperti ini sering disebut dengan pencocokan sederhana atau simple matching (Prastyo 2014)

Untuk menjalankan algortima K-Modes dibutuhkan library MASS dan library KlaR

library(MASS)
library(klaR)

Package readr menyiapkan fungsi read_csv() untuk import data dari file CSV. Pada kasus ini digunakan data Daerah Aliran Sungai (DAS).

library (readr)
urlfile = "https://raw.githubusercontent.com/dedenistiawan/Dataset/main/Dataset%20DAS.csv"

data<-read_csv(url(urlfile))
## Rows: 6861 Columns: 4
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (4): PRODUKTIVITAS, KEMIRINGAN LERENG, TINGKAT EROSI, MANAJEMEN LAHAN
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
data

Memeriksa Missing Value

colSums(is.na(data))
##     PRODUKTIVITAS KEMIRINGAN LERENG     TINGKAT EROSI   MANAJEMEN LAHAN 
##                 0                 0                 0                 0

Tidak ada data yang kosong untuk setiap variabel

Setelah data berhasil diimport, jalankan algoritma K-Modes.

cluster.results <-kmodes(data , 3, iter.max = 10, weighted = FALSE )

cluster.output <- cbind(data ,cluster.results$cluster)

Simpan hasil cluster ouput algoritma K-Modes dalam bentuk CSV.

write.csv(cluster.output, file = "kmodes clusters.csv", row.names = TRUE)

Reference

Huang, Zhexue. 1998. “Extensions to the k-Means Algorithm for Clustering Large Data Sets with Categorical Values.” Data Mining and Knowledge Discovery 2 (3): 283–304. https://doi.org/10.1023/a:1009769707641.
Prastyo, Eko. 2014. Data Mining-Mengolah Data Menjadi Informasi Menggunakan Matlab. ANDI.