K Berarti Pengelompokan di R: Tutorial Langkah demi Langkah dengan Contoh
Diterbitkan: 2020-02-17Sebagai ilmuwan data, Anda akan melakukan banyak pengelompokan. Ada banyak jenis algoritme pengelompokan yang tersedia, dan Anda harus berpengalaman dalam menggunakan semuanya. Pada artikel ini, kita akan membahas algoritma pengelompokan populer, K-means, dan melihat bagaimana itu digunakan di R.
Anda akan menemukan teori dasar di balik pengelompokan K-means di R dan cara penggunaannya. Kami juga telah membahas contoh praktis nanti di artikel. Pastikan untuk menandai artikel ini untuk referensi di masa mendatang. Baca selengkapnya tentang analisis pengelompokan di Data Mining.
Sebelum kita mulai membahas K berarti pengelompokan di R, kita harus melihat jenis algoritma pengelompokan yang ada sehingga Anda dapat lebih memahami bagaimana algoritma ini menanganinya.
Baca: Perpustakaan R Teratas dalam Ilmu Data
Daftar isi
Jenis Pengelompokan
Ketika Anda mengelompokkan beberapa objek sedemikian rupa sehingga objek yang paling mirip satu sama lain berada dalam cluster yang berdekatan, itu disebut clustering. Jarak antara objek bisa relevan dengan kesamaan mereka. Kemiripan menunjukkan kekuatan hubungan antara dua objek yang berbeda dalam ilmu data. Clustering adalah teknik data mining yang populer. Clustering menemukan aplikasinya di banyak industri dan area, termasuk analisis gambar, pembelajaran mesin, kompresi data, pengenalan pola, dan banyak lainnya.
Pengelompokan terdiri dari dua jenis – Keras dan Lunak. Mari kita bahas masing-masing secara singkat.
- Dalam hard cluster, titik data akan menjadi milik sebuah cluster sepenuhnya, atau tidak akan menjadi miliknya sama sekali. Tidak ada di antara.
- Dalam soft cluster, objek data dapat dikaitkan dengan lebih dari satu cluster sekaligus karena beberapa kemungkinan atau probabilitas.
Pelajari kursus ilmu data online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.
Jenis Algoritma Clustering
Seperti ada berbagai jenis cluster, ada juga berbagai jenis algoritma clustering. Anda dapat membedakan algoritme berdasarkan model klasternya. Ini berarti Anda dapat membedakannya berdasarkan bagaimana mereka membentuk kelompok. Jika kita akan mulai berbicara tentang semua jenis algoritma pengelompokan, panduan ini akan menjadi terlalu panjang dan jauh dari poin utama. Jadi, kita hanya akan membahas beberapa jenis algoritma pengelompokan yang menonjol. Ada algoritma pengelompokan berbasis konektivitas, berbasis centroid, berbasis kepadatan, dan berbasis distribusi.
Konsep Dasar K-Means
Konsep dasar K-means cukup sederhana. K-means berkaitan dengan pendefinisian klaster sehingga variasi total dalam klaster seminimal mungkin. Ada berbagai macam algoritma k-means. Algoritma k-means yang paling umum adalah algoritma Hartigan-Wong, yang menyatakan bahwa total variasi intra-cluster sama dengan jumlah jarak kuadrat jarak Euclidean antara centroid dan itemnya:
W( C k )= x i C k ( x i – k ) 2
Di sini xi mengacu pada titik data yang termasuk dalam cluster Ck dan k mengacu pada nilai rata-rata dari titik data yang ada dalam cluster Ck.
Nilai x i harus sedemikian rupa sehingga jumlah kuadrat jarak antara x i dan k adalah minimum.
Apa itu Algoritma K-means?
Untuk menggunakan algoritme, pertama-tama kita harus menyatakan jumlah cluster, K, yang akan ada dalam hasil kita. Algoritma pertama memilih K objek secara acak untuk bertindak sebagai pusat cluster awal. Kami menyebut objek-objek tersebut sebagai centroid atau sarana. Kemudian kami menetapkan objek yang tersisa ke centroid terdekat. Jarak Euclidean antara centroid cluster dan objek menentukan seberapa dekat mereka.
Setelah kami menetapkan objek ke centroid masing-masing, algoritma menghitung nilai rata-rata dari cluster. Setelah perhitungan ulang ini, kami memeriksa ulang pengamatan untuk melihat apakah mereka mungkin lebih dekat ke cluster yang berbeda. Kemudian, kami menetapkan kembali objek ke centroid yang sesuai. Kami terus mengulangi langkah-langkah ini hingga penetapan klaster berhenti. Ini berarti kita berhenti mengulangi iterasi ketika cluster yang terbentuk dalam suatu iterasi sama dengan cluster pada iterasi sebelumnya.
Menggunakan K-Means Clustering (Contoh)
Sekarang setelah Anda mengetahui apa itu algoritma K-means di R dan cara kerjanya, mari kita bahas contoh untuk klarifikasi yang lebih baik. Dalam contoh ini, kami akan mengelompokkan pelanggan organisasi dengan menggunakan database pelanggan grosir. Data untuk masalah ini tersedia di repositori pembelajaran mesin Berkley UCI. Anda dapat memeriksanya di sini .
Pertama, kita akan membaca datanya. Dan kemudian dapatkan ringkasannya. Setelah membaca data dan melihat ringkasannya, Anda akan melihat bahwa ada beberapa perbedaan mencolok antara konsumen teratas dalam kategori yang berbeda. Anda akan menemukan beberapa outlier, yang tidak dapat Anda hapus dengan mudah dengan normalisasi (atau penskalaan). Dengan data ini, sebuah bisnis ingin melihat apa yang paling sering dibeli oleh pelanggan kelas menengah mereka. Itu karena sebuah perusahaan akan memiliki gagasan yang baik tentang apa yang dibeli oleh pelanggan utama mereka.
Untuk membuat cluster pelanggan tingkat menengah, pertama-tama kita harus menyingkirkan pelanggan lapisan atas dari setiap kategori. Jadi kami akan menghapus 5 yang teratas dan membuat set baru. Inilah cara kami melakukannya:
top.n.custs <- function (data,cols,n=5) { #Memerlukan beberapa bingkai data dan N teratas untuk dihapus
idx.to.remove <-integer(0) #Inisialisasi vektor untuk menahan pelanggan yang dihapus
for (c in cols){ # Untuk setiap kolom dalam data yang kami berikan ke fungsi ini
col.order <-order(data[,c],decreasing=T) #Urutkan kolom “c” dalam urutan menurun (lebih besar di atas)
#Order mengembalikan indeks yang diurutkan (misalnya baris 15, 3, 7, 1, ...) daripada nilai aktual yang diurutkan.
idx <-head(col.order, n) #Ambil n pertama dari kolom C yang diurutkan ke
idx.to.remove <-union(idx.to.remove,idx) #Gabungkan dan hapus duplikat id baris yang perlu dihapus
}
return(idx.to.remove) #Kembalikan indeks pelanggan yang akan dihapus
}
top.custs <-top.n.custs(data,cols=3:8,n=5)
length(top.custs) #Berapa Banyak Pelanggan yang Perlu Dihapus?
data[top.custs,] #Periksa pelanggan yang tersedia

data.rm.top<-data[-c(top.custs),] #Hapus Pelanggan yang diperlukan
Dengan file baru ini, kami dapat mulai mengerjakan analisis klaster kami. Untuk melakukan analisis cluster, kami akan menggunakan kode berikut:
set.seed(76964057) #Setel benih untuk reproduktifitas
k <-kmeans(data.rm.top[,-c(1,2)], center=5) #Buat 5 cluster, Hapus kolom 1 dan 2
k$centers #Pusat kluster tampilan
table(k$cluster) #Berikan jumlah titik data di setiap cluster
Ketika Anda telah menjalankan kode ini pada database yang diberikan, Anda akan mendapatkan hasil ini:
- Cluster pertama akan memiliki deterjen berkualitas tinggi tetapi jumlah produk makanan segar yang rendah
- Cluster ketiga akan memiliki lebih banyak produk segar
Anda harus menggunakan insides dan betweenss untuk interpretasi hasil yang mendetail. k$withinss sama dengan jumlah kuadrat jarak antara setiap objek data dari pusat cluster. Semakin rendah rentangnya, semakin baik hasilnya. Jika ukuran insidess tinggi dalam data Anda, itu berarti ada banyak outlier, dan Anda perlu melakukan pembersihan data. k$betweenss adalah jumlah kuadrat jarak antara pusat cluster yang berbeda. Jarak antara pusat cluster harus setinggi mungkin.
Baca: 6 Struktur data yang lebih umum digunakan di R
Anda harus mengambil bantuan trial and error untuk mendapatkan hasil yang paling akurat. Untuk melakukannya, Anda perlu mencoba berbagai nilai untuk K. Ketika grafik hasil Anda tidak menunjukkan peningkatan di dalam cluster Anda, titik itu akan menjadi nilai yang paling sesuai untuk K. Anda dapat menemukan nilainya dari K melalui kode berikut:
rng<-2:20 #K dari 2 hingga 20
mencoba <-100 #Jalankan algoritma K Means 100 kali
avg.totw.ss <-integer(length(rng)) #Mengatur vektor kosong untuk menampung semua titik
for(v in rng){ # Untuk setiap nilai dari variabel range
v.totw.ss <-integer(tries) #Siapkan vektor kosong untuk menampung 100 percobaan
untuk (saya dalam 1: mencoba){
k.temp <-kmeans(data.rm.top,centers=v) #Jalankan kmeans
v.totw.ss[i] <-k.temp$tot.withinss#Menyimpan total dalam
}
avg.totw.ss[v-1] <-mean(v.totw.ss) #Rata-rata 100 total dalam
}
plot(rng,avg.totw.ss,type=”b”, main=”Total Dalam SS dengan Berbagai K”,
ylab=”Total Rata-Rata Dalam Jumlah Kuadrat”,
xlab="Nilai K")
Itu dia. Sekarang Anda dapat menggunakan grafik yang Anda dapatkan dari kode ini untuk mendapatkan nilai terbaik untuk K dan menggunakannya untuk mendapatkan hasil yang diperlukan. Gunakan contoh ini untuk mencoba pengetahuan Anda tentang pengelompokan K-means di R. Berikut adalah semua kode yang kami gunakan dalam contoh:
data <-read.csv(“Data pelanggan grosir.csv”,header=T)
ringkasan (data)
top.n.custs <- function (data,cols,n=5) { #Memerlukan beberapa bingkai data dan N teratas untuk dihapus
idx.to.remove <-integer(0) #Inisialisasi vektor untuk menahan pelanggan yang dihapus
for (c in cols){ # Untuk setiap kolom dalam data yang kami berikan ke fungsi ini
col.order <-order(data[,c],decreasing=T) #Urutkan kolom “c” dalam urutan menurun (lebih besar di atas)
#Order mengembalikan indeks yang diurutkan (misalnya baris 15, 3, 7, 1, ...) daripada nilai aktual yang diurutkan.
idx <-head(col.order, n) #Ambil n pertama dari kolom C yang diurutkan ke
idx.to.remove <-union(idx.to.remove,idx) #Gabungkan dan hapus duplikat id baris yang perlu dihapus
}
return(idx.to.remove) #Kembalikan indeks pelanggan yang akan dihapus
}
top.custs <-top.n.custs(data,cols=3:8,n=5)
length(top.custs) #Berapa Banyak Pelanggan yang Akan Dihapus?
data[top.custs,] #Periksa pelanggan
data.rm.top <-data[-c(top.custs),] #Hapus Pelanggan
set.seed(76964057) #Setel benih untuk reproduktifitas
k <-kmeans(data.rm.top[,-c(1,2)], center=5) #Buat 5 cluster, Hapus kolom 1 dan 2
k$centers #Tampilkan pusat cluster
table(k$cluster) #Berikan jumlah titik data di setiap cluster
rng<-2:20 #K dari 2 hingga 20
mencoba<-100 #Jalankan algoritma K Means 100 kali
avg.totw.ss<-integer(length(rng)) #Mengatur vektor kosong untuk menampung semua titik
for(v in rng){ # Untuk setiap nilai dari variabel range
v.totw.ss<-integer(tries) #Siapkan vektor kosong untuk menampung 100 percobaan
untuk (saya dalam 1: mencoba){
k.temp<-kmeans(data.rm.top,centers=v) #Run kmeans
v.totw.ss[i]<-k.temp$tot.withinss#Menyimpan total dalam
}
avg.totw.ss[v-1]<-mean(v.totw.ss) #Rata-rata 100 total dalam
}
plot(rng,avg.totw.ss,type=”b”, main=”Total Dalam SS dengan Berbagai K”,
ylab=”Total Rata-Rata Dalam Jumlah Kuadrat”,
xlab="Nilai K")
Kesimpulan
Kami harap Anda menyukai panduan ini. Kami telah mencoba untuk membuatnya tetap ringkas dan komprehensif. Jika Anda memiliki pertanyaan tentang algoritma K-means, jangan ragu untuk bertanya kepada kami. Kami akan senang untuk menjawab pertanyaan Anda.
Jika Anda penasaran untuk belajar tentang ilmu data, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktis, bimbingan dengan pakar industri, 1 -on-1 dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.
Apa saja kerugian menggunakan K-means?
Outlier dapat menarik centroid, atau outlier dapat diberikan cluster mereka sendiri daripada diabaikan. Karena K-means adalah stokastik, ia tidak dapat memastikan bahwa solusi pengelompokan optimal global akan ditemukan. Pada kenyataannya, data outlier dan noise mungkin membuat algoritma menjadi sangat sensitif. Sebelum mengelompokkan, pertimbangkan untuk menghilangkan atau memotong outlier. Saat mengelompokkan data dengan ukuran dan kepadatan yang bervariasi, K-means mengalami kesulitan. Anda harus menggeneralisasi K-means untuk mengelompokkan data tersebut. Bahkan jika mereka jelas milik cluster yang sama, algoritma k-means tidak mengizinkan titik data yang berjauhan untuk berbagi cluster yang sama.
Apa metode siku di K-means?
Metode k-means sangat bergantung pada pencarian jumlah cluster yang sesuai. Elbow Approach merupakan metode yang banyak digunakan untuk menentukan nilai K terbaik. Teknik elbow melakukan pengelompokan K-means pada dataset untuk rentang nilai K pada grafik, kemudian menghitung skor rata-rata untuk semua cluster untuk setiap nilai K. Skor distorsi, yang merupakan jumlah jarak kuadrat dari setiap titik ke pusat yang ditetapkan, dihitung secara default. Model berbasis data lainnya, seperti jumlah komponen utama untuk mengkarakterisasi kumpulan data, dapat menggunakan teknik yang sama untuk menentukan jumlah parameter.
Bagaimana kita bisa menemukan outlier di K-means?
Pencilan dalam pengelompokan K-Means dapat ditemukan menggunakan teknik berbasis jarak dan berbasis cluster. Pencilan ditemukan menggunakan dendrogram dalam kasus pengelompokan hierarkis. Tujuan proyek ini adalah untuk menemukan dan menghilangkan outlier untuk membuat pengelompokan lebih akurat. Data dipartisi ke dalam kelompok K dengan mengalokasikannya ke pusat cluster terdekat dengan pendekatan identifikasi outlier berbasis K-means. Kami kemudian dapat menghitung jarak atau perbedaan antara setiap item dan pusat clusternya, dan memilih outlier dengan jarak terbesar. Karena nilai ekstrim dapat dengan cepat mempengaruhi mean, metode pengelompokan K-means sensitif terhadap outlier.