Cara menggunakan metode elbow di r untuk mencari cluster yang optimal
Salah satu algoritma pengelompokan yang paling umum digunakan dalam pembelajaran mesin dikenal sebagai pengelompokan k-means .
K-means clustering adalah teknik di mana kita menempatkan setiap observasi dari suatu dataset ke dalam salah satu K cluster.
Tujuan akhirnya adalah untuk memiliki K cluster dimana pengamatan dalam setiap cluster cukup mirip satu sama lain, sedangkan observasi dalam cluster yang berbeda sangat berbeda satu sama lain.
Saat melakukan k-means clustering, langkah pertama adalah memilih nilai K – jumlah cluster yang ingin kita observasi.
Salah satu cara paling umum untuk memilih nilai K dikenal sebagai metode siku , yang melibatkan pembuatan plot dengan jumlah cluster pada sumbu x dan total jumlah kuadrat pada sumbu y, kemudian mengidentifikasi di mana “lutut” atau belokan muncul dalam plot.
Titik pada sumbu x di mana “lutut” muncul memberi tahu kita jumlah cluster optimal untuk digunakan dalam algoritma clustering k-means.
Contoh berikut menunjukkan cara menggunakan metode siku di R.
Contoh: Menggunakan Metode Siku di R
Untuk contoh ini, kami akan menggunakan kumpulan data Penangkapan AS yang dibangun ke dalam R, yang berisi jumlah penangkapan per 100.000 orang di setiap negara bagian AS pada tahun 1973 karena pembunuhan, penyerangan, dan pemerkosaan, serta persentase populasi setiap negara bagian yang tinggal di daerah perkotaan. daerah. , UrbanPop.
Kode berikut menunjukkan cara memuat kumpulan data, menghapus baris dengan nilai yang hilang, dan menskalakan setiap variabel dalam kumpulan data agar memiliki rata-rata 0 dan deviasi standar 1:
#load data df <-USArrests #remove rows with missing values df <- na. omitted (df) #scale each variable to have a mean of 0 and sd of 1 df <- scale(df) #view first six rows of dataset head(df) Murder Assault UrbanPop Rape Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473 Alaska 0.50786248 1.1068225 -1.2117642 2.484202941 Arizona 0.07163341 1.4788032 0.9989801 1.042878388 Arkansas 0.23234938 0.2308680 -1.0735927 -0.184916602 California 0.27826823 1.2628144 1.7589234 2.067820292 Colorado 0.02571456 0.3988593 0.8608085 1.864967207
Untuk menemukan jumlah cluster yang optimal untuk digunakan dalam algoritma k-means, kita akan menggunakan fungsi fviz_nbclust() dari paket factoextra untuk membuat plot jumlah cluster versus total jumlah kuadrat:
library (cluster) library (factoextra) #create plot of number of clusters vs total within sum of squares fviz_nbclust(df, kmeans, method = “ wss ”)
Pada grafik ini terlihat terdapat “knee” atau kekusutan pada k = 4 cluster. Ini adalah titik di mana total jumlah kuadrat mulai stabil.
Hal ini memberitahu kita bahwa jumlah cluster optimal untuk digunakan dalam algoritma k-means adalah 4.
Catatan : Meskipun kita mungkin mendapatkan total jumlah kuadrat yang lebih rendah dengan menggunakan lebih banyak cluster, kita mungkin akan melakukan overfit pada data pelatihan dan oleh karena itu algoritma k-means tidak akan bekerja dengan baik pada data pengujian.
Kita dapat menggunakan fungsi kmeans() dari paket cluster untuk melakukan k-means clustering pada dataset menggunakan nilai optimal k dari 4:
#make this example reproducible set. seeds (1) #perform k-means clustering with k = 4 clusters km <- kmeans(df, centers = 4, nstart = 25) #view results km K-means clustering with 4 clusters of sizes 16, 13, 13, 8 Cluster means: Murder Assault UrbanPop Rape 1 -0.4894375 -0.3826001 0.5758298 -0.26165379 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331 3 0.6950701 1.0394414 0.7226370 1.27693964 4 1.4118898 0.8743346 -0.8145211 0.01927104 Vector clustering: Alabama Alaska Arizona Arkansas California Colorado 4 3 3 4 3 3 Connecticut Delaware Florida Georgia Hawaii Idaho 1 1 3 4 1 2 Illinois Indiana Iowa Kansas Kentucky Louisiana 3 1 2 1 2 4 Maine Maryland Massachusetts Michigan Minnesota Mississippi 2 3 1 3 2 4 Missouri Montana Nebraska Nevada New Hampshire New Jersey 3 2 2 3 2 1 New Mexico New York North Carolina North Dakota Ohio Oklahoma 3 3 4 2 1 1 Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee 1 1 1 4 2 4 Texas Utah Vermont Virginia Washington West Virginia 3 1 2 1 1 2 Wisconsin Wyoming 2 1 Within cluster sum of squares by cluster: [1] 16.212213 11.952463 19.922437 8.316061 (between_SS / total_SS = 71.2%) Available components: [1] "cluster" "centers" "totss" "withinss" "tot.withinss" "betweenss" [7] "size" "iter" "ifault"
Dari hasilnya kita dapat melihat bahwa:
- 16 negara bagian ditugaskan ke cluster pertama
- 13 negara bagian telah ditugaskan ke cluster kedua
- 13 negara bagian telah ditugaskan ke cluster ketiga
- 8 negara bagian telah ditugaskan ke cluster keempat
Kita juga dapat menambahkan penetapan klaster setiap negara bagian ke kumpulan data asli:
#add cluster assignment to original data
final_data <- cbind(USArrests, cluster = km$cluster)
#view final data
head(final_data)
Murder Assault UrbanPop Rape cluster
Alabama 13.2 236 58 21.2 4
Alaska 10.0 263 48 44.5 2
Arizona 8.1 294 80 31.0 2
Arkansas 8.8 190 50 19.5 4
California 9.0 276 91 40.6 2
Colorado 7.9 204 78 38.7 2
Setiap observasi dari database asli ditempatkan ke dalam salah satu dari empat kelompok.
Sumber daya tambahan
Tutorial berikut memberikan contoh langkah demi langkah tentang cara menjalankan berbagai algoritma clustering di R:
Pengelompokan K-Means di R: Contoh Langkah-demi-Langkah
Pengelompokan K-Medoids di R: Contoh Langkah-demi-Langkah
Pengelompokan Hierarki di R: Contoh Langkah-demi-Langkah