Tutorial: Membangun model pengklusteran di R dengan pembelajaran mesin SQL

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed Instance

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan membangun model K-Means di R untuk melakukan pengklusteran. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database dengan SQL Server Machine Learning Services atau di Kluster Big Data.

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan membangun model K-Means di R untuk melakukan pengklusteran. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database dengan SQL Server Machine Learning Services.

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan membangun model K-Means di R untuk melakukan pengklusteran. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database dengan SQL Server R Services.

Di bagian tiga dari seri tutorial empat bagian ini, Anda akan membangun model K-Means di R untuk melakukan pengklusteran. Di bagian berikutnya dari seri ini, Anda akan menyebarkan model ini dalam database dengan Azure SQL Managed Instance Machine Learning Services.

Dalam artikel ini, Anda akan mempelajari cara:

  • Menentukan jumlah kluster untuk algoritma K-Means
  • Melakukan pengklusteran
  • Menganalisis hasilnya

Di bagian satu, Anda menginstal prasyarat dan memulihkan database sampel.

Di bagian dua, Anda mempelajari cara menyiapkan data dari database untuk melakukan pengklusteran.

Di bagian empat, Anda akan mempelajari cara membuat prosedur tersimpan dalam database yang dapat melakukan pengklusteran di R berdasarkan data baru.

Prasyarat

  • Bagian ketiga dari seri tutorial ini mengasumsikan Anda telah memenuhi prasyarat bagian satu dan menyelesaikan langkah-langkah di bagian dua.

Menentukan jumlah kluster

Untuk mengelompokkan data pelanggan, Anda akan menggunakan algoritma pengklusteran K-Means , salah satu cara pengelompokan data yang paling sederhana dan paling terkenal. Anda dapat membaca selengkapnya tentang K-Means dalam Panduan lengkap untuk algoritma pengklusteran K-means.

Algoritma menerima dua input: Data itu sendiri, dan angka "k" yang telah ditentukan sebelumnya yang mewakili jumlah kluster yang akan dihasilkan. Outputnya adalah kluster k dengan data input yang dipartisi di antara kluster.

Untuk menentukan jumlah kluster untuk digunakan algoritma, gunakan plot dari dalam grup jumlah kuadrat, berdasarkan jumlah kluster yang diekstrak. Jumlah kluster yang sesuai untuk digunakan adalah di tikungan atau "siku" plot.

# Determine number of clusters by using a plot of the within groups sum of squares,
# by number of clusters extracted. 
wss <- (nrow(customer_data) - 1) * sum(apply(customer_data, 2, var))
for (i in 2:20)
    wss[i] <- sum(kmeans(customer_data, centers = i)$withinss)
plot(1:20, wss, type = "b", xlab = "Number of Clusters", ylab = "Within groups sum of squares")

Grafik siku

Berdasarkan grafik, sepertinya k = 4 akan menjadi nilai yang baik untuk dicoba. Nilai k tersebut akan mengelompokkan pelanggan ke dalam empat kluster.

Melakukan pengklusteran

Dalam skrip R berikut, Anda akan menggunakan kmean fungsi untuk melakukan pengklusteran.

# Output table to hold the customer group mappings.
# Generate clusters using Kmeans and output key / cluster to a table
# called return_cluster

## create clustering model
clust <- kmeans(customer_data[,2:5],4)

## create clustering ouput for table
customer_cluster <- data.frame(cluster=clust$cluster,customer=customer_data$customer,orderRatio=customer_data$orderRatio,
        itemsRatio=customer_data$itemsRatio,monetaryRatio=customer_data$monetaryRatio,frequency=customer_data$frequency)

## write cluster output to DB table
sqlSave(ch, customer_cluster, tablename = "return_cluster")

# Read the customer returns cluster table from the database
customer_cluster_check <- sqlFetch(ch, "return_cluster")

head(customer_cluster_check)

Menganalisis hasilnya

Sekarang setelah Anda melakukan pengklusteran menggunakan K-Means, langkah selanjutnya adalah menganalisis hasilnya dan melihat apakah Anda dapat menemukan informasi yang dapat ditindaklanjuti.

#Look at the clustering details to analyze results
clust[-1]
$centers
   orderRatio itemsRatio monetaryRatio frequency
1 0.621835791  0.1701519    0.35510836  1.009025
2 0.074074074  0.0000000    0.05886575  2.363248
3 0.004807692  0.0000000    0.04618708  5.050481
4 0.000000000  0.0000000    0.00000000  0.000000

$totss
[1] 40191.83

$withinss
[1] 19867.791   215.714   660.784     0.000

$tot.withinss
[1] 20744.29

$betweenss
[1] 19447.54

$size
[1]  4543   702   416 31675

$iter
[1] 3

$ifault
[1] 0

Empat sarana kluster diberikan menggunakan variabel yang ditentukan di bagian dua:

  • orderRatio = rasio pesanan pengembalian (jumlah total pesanan sebagian atau sepenuhnya dikembalikan versus jumlah total pesanan)
  • itemsRatio = rasio item kembali (jumlah total item yang dikembalikan versus jumlah item yang dibeli)
  • moneterRatio = rasio jumlah pengembalian (jumlah total item moneter yang dikembalikan versus jumlah yang dibeli)
  • frekuensi = frekuensi pengembalian

Penggalian data menggunakan K-Means sering memerlukan analisis lebih lanjut tentang hasilnya, dan langkah-langkah lebih lanjut untuk lebih memahami setiap kluster, tetapi dapat memberikan beberapa prospek yang baik. Berikut adalah beberapa cara untuk menginterpretasikan hasil ini:

  • Kluster 1 (kluster terbesar) tampaknya merupakan sekelompok pelanggan yang tidak aktif (semua nilai nol).
  • Kluster 3 tampaknya merupakan grup yang menonjol dalam hal perilaku pengembalian.

Membersihkan sumber daya

Jika Anda tidak akan melanjutkan tutorial ini, hapus database tpcxbb_1gb.

Langkah berikutnya

Di bagian tiga dari seri tutorial ini, Anda belajar cara:

  • Menentukan jumlah kluster untuk algoritma K-Means
  • Melakukan pengklusteran
  • Menganalisis hasilnya

Untuk menyebarkan model pembelajaran mesin yang telah Anda buat, ikuti bagian empat dari seri tutorial ini: