Udostępnij za pomocą


Samouczek: tworzenie modelu klastrowania w języku R przy użyciu uczenia maszynowego SQL

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje usługi Azure SQL Managed Instance

W trzeciej części tej czteroczęściowej serii samouczków utworzysz model K-Średnich w języku R w celu wykonania klastrowania. W następnej części tej serii wdrożysz ten model w bazie danych z usługami SQL Server Machine Learning Services lub w klastrach danych big data.

W trzeciej części tej czteroczęściowej serii samouczków utworzysz model K-Średnich w języku R w celu wykonania klastrowania. W następnej części tej serii wdrożysz ten model w bazie danych za pomocą usług SQL Server Machine Learning Services.

W trzeciej części tej czteroczęściowej serii samouczków utworzysz model K-Średnich w języku R w celu wykonania klastrowania. W następnej części tej serii wdrożysz ten model w bazie danych z usługami JĘZYKA R programu SQL Server.

W trzeciej części tej czteroczęściowej serii samouczków utworzysz model K-Means w języku R do klastrowania. W następnej części tej serii wdrożysz ten model w bazie danych za pomocą usług Azure SQL Managed Instance Machine Learning Services.

W tym artykule dowiesz się, jak:

  • Określenie liczby klastrów w algorytmie k-means
  • Wykonywanie klastrowania
  • Analizowanie wyników

W części 1 zainstalowano wymagania wstępne i przywrócono przykładową bazę danych.

W drugiej części przedstawiono sposób przygotowywania danych z bazy danych do wykonywania klastrowania.

W czwartej części dowiesz się, jak utworzyć procedurę składowaną w bazie danych, która może wykonywać klastrowanie w języku R na podstawie nowych danych.

Wymagania wstępne

  • W trzeciej części tej serii samouczków przyjęto założenie, że spełniono wymagania wstępne części jednej i wykonano kroki opisane w drugiej części.

Definiowanie liczby klastrów

Aby klasterować dane klientów, użyjesz algorytmu klastrowania K-Średnich, jednego z najprostszych i najbardziej znanych sposobów grupowania danych. Więcej informacji na temat metody K-Średnich można przeczytać w kompletnym przewodniku po algorytmie klastrowania metodą K-średnich.

Algorytm akceptuje dwa dane wejściowe: same dane wejściowe i wstępnie zdefiniowaną liczbę "k" reprezentującą liczbę klastrów do wygenerowania. Dane wyjściowe to k klastry z danymi wejściowymi podzielonymi na partycje między klastrami.

Aby określić liczbę klastrów używanych przez algorytm, użyj wykresu sumy kwadratów wewnątrz grup w zależności od liczby wyodrębnionych klastrów. Odpowiednia liczba klastrów do użycia znajduje się w zagięciu lub "punkcie zgięcia" wykresu.

# 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")

Wykres łokcia

Na podstawie wykresu wygląda na to, że k = 4 byłoby dobrą wartością do wypróbowania. Ta wartość k grupuje klientów na cztery klastry.

Wykonywanie klastrowania

W poniższym skryscie języka R użyjesz funkcji kmeans do wykonania klastrowania.

# 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 output 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)

Analizowanie wyników

Po zakończeniu klastrowania przy użyciu metody K-średnich, następnym krokiem jest przeanalizowanie wyniku i sprawdzenie, czy można znaleźć informacje, na podstawie których można podjąć działania.

#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

Cztery metody klastra są podane przy użyciu zmiennych zdefiniowanych w drugiej części:

  • orderRatio = współczynnik zamówienia zwrotnego (łączna liczba zamówień częściowo lub w pełni zwrócona w porównaniu z łączną liczbą zamówień)
  • itemsRatio = współczynnik elementów zwracanych (łączna liczba zwróconych elementów w porównaniu z liczbą zakupionych elementów)
  • monetaryRatio = stosunek kwoty zwrotu (łączna kwota pieniężna elementów zwróconych w porównaniu do zakupionej kwoty)
  • frequency = częstotliwość zwrotu

Eksploracja danych przy użyciu metody K-średnich często wymaga dalszej analizy wyników i podejmowania kolejnych kroków w celu lepszego zrozumienia każdego klastra, ale może dostarczyć dobrych wskazówek. Oto kilka sposobów interpretowania tych wyników:

  • Klaster 1 (największy klaster) wydaje się być grupą klientów, którzy nie są aktywni (wszystkie wartości to zero).
  • Klaster 3 wydaje się być grupą, która wyróżnia się pod względem zachowania zwrotnego.

Uprzątnij zasoby

Jeśli nie zamierzasz kontynuować pracy z tym samouczkiem, usuń bazę danych tpcxbb_1gb.

Dalsze kroki

W trzeciej części tej serii samouczków przedstawiono następujące zagadnienia:

  • Określenie liczby klastrów w algorytmie k-means
  • Wykonywanie klastrowania
  • Analizowanie wyników

Aby wdrożyć utworzony model uczenia maszynowego, wykonaj czynności opisane w czwartej części tej serii samouczków: