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 ”) 

Metode tikungan-R

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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *