Partilhar via


Tutorial: Criar um modelo de clustering em R com aprendizado de máquina SQL

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Instância Gerenciada SQL do Azure

Na terceira parte desta série de tutoriais de quatro partes, você criará um modelo K-Means em R para executar clustering. Na próxima parte desta série, você implantará esse modelo em um banco de dados com os Serviços de Aprendizado de Máquina do SQL Server ou em Clusters de Big Data.

Na terceira parte desta série de tutoriais de quatro partes, você criará um modelo K-Means em R para executar clustering. Na próxima parte desta série, você implantará esse modelo em um banco de dados com os Serviços de Aprendizado de Máquina do SQL Server.

Na terceira parte desta série de tutoriais de quatro partes, você criará um modelo K-Means em R para executar clustering. Na próxima parte desta série, você implantará esse modelo em um banco de dados com o SQL Server R Services.

Na terceira parte desta série de tutoriais de quatro partes, você criará um modelo K-Means em R para executar clustering. Na próxima parte desta série, você implantará esse modelo em um banco de dados com os Serviços de Aprendizado de Máquina de Instância Gerenciada SQL do Azure.

Neste artigo, você aprenderá a:

  • Definir o número de clusters para um algoritmo K-Means
  • Executar agregação de dados
  • Analise os resultados

Na primeira parte, você instalou os pré-requisitos e restaurou o banco de dados de exemplo.

Na segunda parte, você aprendeu como preparar os dados de um banco de dados para executar clustering.

Na quarta parte, você aprenderá como criar um procedimento armazenado em um banco de dados que pode executar clustering em R com base em novos dados.

Pré-requisitos

  • A terceira parte desta série de tutoriais pressupõe que você tenha cumprido os pré-requisitos da parte um e concluído as etapas da parte dois.

Definir o número de clusters

Para agrupar os dados do cliente, você usará o algoritmo de agrupamento K-Means , uma das maneiras mais simples e conhecidas de agrupar dados. Você pode ler mais sobre K-Means em Um guia completo para o algoritmo de agrupamento K-means.

O algoritmo aceita duas entradas: os dados em si, e um número predefinido "k" que representa o número de clusters a gerar. A saída é k clusters com os dados de entrada particionados entre os clusters.

Para determinar o número de clusters para o algoritmo utilizar, use um gráfico da soma dos quadrados dentro dos grupos em função do número de clusters extraídos. O número apropriado de aglomerados a utilizar é na curvatura ou "cotovelo" da parcela.

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

Gráfico do cotovelo

Com base no gráfico, parece que k = 4 seria um bom valor para tentar. Esse valor k agrupará os clientes em quatro clusters.

Executar agregação de dados

No script R a seguir, você usará a função kmeans para executar clustering.

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

Analise os resultados

Agora que você fez o clustering usando K-Means, a próxima etapa é analisar o resultado e ver se você pode encontrar alguma informação acionável.

#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

As quatro médias de agrupamento são dadas usando as variáveis definidas na parte dois:

  • orderRatio = taxa de ordem de retorno (número total de pedidos parcial ou totalmente devolvidos versus o número total de pedidos)
  • itemsRatio = índice de itens de retorno (número total de itens devolvidos versus o número de itens comprados)
  • monetaryRatio = rácio do montante de retorno (montante monetário total dos itens devolvidos versus o montante adquirido)
  • frequência = frequência de retorno

A mineração de dados usando K-Means geralmente requer uma análise mais aprofundada dos resultados e etapas adicionais para entender melhor cada cluster, mas pode fornecer algumas boas pistas. Aqui estão algumas maneiras de interpretar esses resultados:

  • O cluster 1 (o maior cluster) parece ser um grupo de clientes que não estão ativos (todos os valores são zero).
  • O cluster 3 parece ser um grupo que se destaca em termos de comportamento de retorno.

Limpeza de recursos

Se você não quiser continuar com este tutorial, exclua o banco de dados tpcxbb_1gb.

Próximos passos

Na terceira parte desta série de tutoriais, você aprendeu como:

  • Definir o número de clusters para um algoritmo K-Means
  • Executar agregação de dados
  • Analise os resultados

Para implantar o modelo de aprendizado de máquina que você criou, siga a quarta parte desta série de tutoriais: