Algoritma K-Means

Pengertian Algoritma K Means.

K-Means untuk analisis data kejahatan

Clustering adalah teknik eksplorasi data yang digunakan untuk menemukan grup atau pola dalam himpunan data. Ada dua strategi pengelompokan standar: metode partisi dan pengelompokan hierarkis.Algoritma partisi yang paling terkenal dan umum digunakan termasuk: K-means clustering (MacQueen, 1967), di mana, setiap cluster diwakili oleh pusat atau sarana titik data milik cluster.

Ada beberapa pendekatan yang digunakan dalam mengembangkan metode clustering. Dua pendekatan utama adalah clustering dengan pendekatan partisi dan clustering dengan pendekatan hirarki. Clustering dengan pendekatan partisi atau sering disebut dengan partition-based clustering mengelompokkan data dengan memilah-milah data yang dianalisa ke dalam cluster-cluster yang ada. Clustering dengan pendekatan hirarki atau sering disebut dengan hierarchical clustering mengelompokkan data dengan membuat suatu hirarki berupa dendogram dimana data yang mirip akan ditempatkan pada hirarki yang berdekatan dan yang tidak pada hirarki yang berjauhan. Di samping kedua pendekatan tersebut, ada juga clustering dengan pendekatan automatic mapping (Self-Organising Map/SOM).

K-means merupakan salah satu pengelompokan data nonhierarki (sekatan) yang berusaha mempartisi data yang ada ke dalam bentuk dua atau lebih kelompok. Tujuan pengelompokan data ini adalah meminimalkan fungsi objektif yang diset dalam proses pengelompokan, yang berusaha meminimalkan variasi di dalam suatu kelompok dan memaksimalkan variasi antarkelompok.

Metode K-Means berusaha mengelompokkan data yang ada ke dalam beberapa kelompok, dimana data dalam satu kelompok mempunyai karakteristik yang sama satu sama lainnya dan mempunyai karakteristik yang berbeda dengan data yang ada di dalam kelompok yang lain.

Tahapan Algoritma K-Means

  1. Menyiapkan data.

  2. Statistika dasar sebelum menerapkan K-Means.

  3. Komputasikan k-means.

  4. Visualisasikan.

Eksperrimen Algoritma K-Means

Library

  1. Menyiapkan data

Untuk penerapan k-means menggunakan R, disini menggunakan dataset yang sudah tersedia di R yaitu mtcars dataset.

data("mtcars")
mtcars <- na.omit(mtcars)

head(mtcars)
  1. Statistika dasar sebelum menerapkan K-Means

Perhatikan bahwa variabel memiliki cara dan varians yang berbeda besar. Karena kita tidak ingin algoritma k-means bergantung pada unit variabel arbitrer, kita akan menskalakan data menggunakan skala fungsi R(), sebelum kita dapat menerapkan K-means.

desc_stats <- data.frame(
  Min = apply(mtcars, 2, min), # minimum
  Med = apply(mtcars, 2, median), # median
  Mean = apply(mtcars, 2, mean), # mean
  SD = apply(mtcars, 2, sd), # Standard deviation
  Max = apply(mtcars, 2, max) # Maximum
  )
desc_stats <- round(desc_stats, 1)
head(desc_stats)
df <- scale(mtcars)
head(df)
##                          mpg        cyl        disp         hp       drat
## Mazda RX4          0.1508848 -0.1049878 -0.57061982 -0.5350928  0.5675137
## Mazda RX4 Wag      0.1508848 -0.1049878 -0.57061982 -0.5350928  0.5675137
## Datsun 710         0.4495434 -1.2248578 -0.99018209 -0.7830405  0.4739996
## Hornet 4 Drive     0.2172534 -0.1049878  0.22009369 -0.5350928 -0.9661175
## Hornet Sportabout -0.2307345  1.0148821  1.04308123  0.4129422 -0.8351978
## Valiant           -0.3302874 -0.1049878 -0.04616698 -0.6080186 -1.5646078
##                             wt       qsec         vs         am       gear
## Mazda RX4         -0.610399567 -0.7771651 -0.8680278  1.1899014  0.4235542
## Mazda RX4 Wag     -0.349785269 -0.4637808 -0.8680278  1.1899014  0.4235542
## Datsun 710        -0.917004624  0.4260068  1.1160357  1.1899014  0.4235542
## Hornet 4 Drive    -0.002299538  0.8904872  1.1160357 -0.8141431 -0.9318192
## Hornet Sportabout  0.227654255 -0.4637808 -0.8680278 -0.8141431 -0.9318192
## Valiant            0.248094592  1.3269868  1.1160357 -0.8141431 -0.9318192
##                         carb
## Mazda RX4          0.7352031
## Mazda RX4 Wag      0.7352031
## Datsun 710        -1.1221521
## Hornet 4 Drive    -1.1221521
## Hornet Sportabout -0.5030337
## Valiant           -1.1221521
  1. Pengelompokan k-means

Pengelompokan K-means adalah jenis pembelajaran tanpa pengawasan, yang digunakan ketika Anda memiliki data yang tidak berlabel (yaitu, data tanpa kategori atau grup yang ditentukan). Tujuan dari algoritma ini adalah untuk menemukan kelompok dalam data, dengan jumlah kelompok yang diwakili oleh variabel K.

set.seed(123)
km.res <- kmeans(scale(mtcars), 4, nstart = 25)
km.res
## K-means clustering with 4 clusters of sizes 7, 5, 8, 12
## 
## Cluster means:
##          mpg        cyl        disp         hp        drat          wt
## 1  0.1082193 -0.5849321 -0.44867013 -0.6496905 -0.04967936 -0.02346989
## 2 -0.2639188  0.3429602 -0.05907659  0.7600688  0.44781564 -0.22101115
## 3  1.3247791 -1.2248578 -1.10626771 -0.9453003  1.09820619 -1.20086981
## 4 -0.8363478  1.0148821  1.02385129  0.6924910 -0.88974768  0.90635862
##         qsec         vs         am       gear       carb
## 1  1.1854841  1.1160357 -0.8141431 -0.1573201 -0.4145882
## 2 -1.2494801 -0.8680278  1.1899014  1.2367782  1.4781451
## 3  0.3364684  0.8680278  1.1899014  0.7623975 -0.8125929
## 4 -0.3952280 -0.8680278 -0.8141431 -0.9318192  0.1676779
## 
## Clustering vector:
##           Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
##                   2                   2                   3                   1 
##   Hornet Sportabout             Valiant          Duster 360           Merc 240D 
##                   4                   1                   4                   1 
##            Merc 230            Merc 280           Merc 280C          Merc 450SE 
##                   1                   1                   1                   4 
##          Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
##                   4                   4                   4                   4 
##   Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
##                   4                   3                   3                   3 
##       Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
##                   1                   4                   4                   4 
##    Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
##                   4                   3                   3                   3 
##      Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
##                   2                   2                   2                   3 
## 
## Within cluster sum of squares by cluster:
## [1] 21.28798 23.40276 19.04480 23.08349
##  (between_SS / total_SS =  74.5 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
# It’s possible to compute the mean of each of the variables in the clusters:
aggregate(mtcars, by=list(cluster=km.res$cluster), mean)
  1. Visualisasikan

Pengamatan diwakili oleh titik-titik dalam plot, menggunakan komponen utama jika ncol(data) > 2. Elips digambar di sekitar setiap cluster.

library("factoextra")
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
 fviz_cluster(km.res, data = df,
             palette = c("#2E9FDF","#00AFBB", "#FC4E07", "#E7B800"),
             ggtheme = theme_minimal(),
             main = "Partitioning Clustering Plot"
             )

Gambar di bawah ini menunjukkan plot siluet pengelompokan k-means dan memperkenalkan fungsi siluet.yang di maksud dengan fungsi siluet adalah Analisis siluet dapat digunakan untuk mempelajari jarak pemisahan antara cluster yang dihasilkan dan dapat dianggap sebagai metode yang lebih baik dibandingkan dengan metode Elbow. Analisis siluet juga memiliki keuntungan tambahan untuk menemukan pencilan jika ada dalam sebuah cluster.

library(cluster)
library(HSAUR)
## Loading required package: tools
## Warning: package 'HSAUR' was built under R version 3.3.3
## Loading required package: tools
data(pottery)
km    <- kmeans(pottery,3)
dissE <- daisy(pottery) 
dE2   <- dissE^2
sk2   <- silhouette(km$cl, dE2)
plot(sk2)