Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2017 (14.x) e versões
posteriores Instância Gerenciada SQL do Azure
Na terceira parte desta série de tutoriais de quatro partes, você construirá um modelo K-Means em Python 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ê construirá um modelo K-Means em Python 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ê construirá um modelo K-Means em Python 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 Python com base em novos dados.
Pré-requisitos
- A terceira parte deste tutorial 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.
O objetivo do K-means é agrupar os itens em k clusters de modo que todos os itens no mesmo cluster sejam tão semelhantes entre si e tão diferentes dos itens em outros clusters, quanto possível.
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 using the Elbow method
################################################################################################
cdata = customer_data
K = range(1, 20)
KM = (sk_cluster.KMeans(n_clusters=k).fit(cdata) for k in K)
centroids = (k.cluster_centers_ for k in KM)
D_k = (sci_distance.cdist(cdata, cent, 'euclidean') for cent in centroids)
dist = (np.min(D, axis=1) for D in D_k)
avgWithinSS = [sum(d) / cdata.shape[0] for d in dist]
plt.plot(K, avgWithinSS, 'b*-')
plt.grid(True)
plt.xlabel('Number of clusters')
plt.ylabel('Average within-cluster sum of squares')
plt.title('Elbow for KMeans clustering')
plt.show()
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 Python a seguir, você usará a função KMeans do pacote sklearn.
################################################################################################
## Perform clustering using Kmeans
################################################################################################
# It looks like k=4 is a good number to use based on the elbow graph.
n_clusters = 4
means_cluster = sk_cluster.KMeans(n_clusters=n_clusters, random_state=111)
columns = ["orderRatio", "itemsRatio", "monetaryRatio", "frequency"]
est = means_cluster.fit(customer_data[columns])
clusters = est.labels_
customer_data['cluster'] = clusters
# Print some data about the clusters:
# For each cluster, count the members.
for c in range(n_clusters):
cluster_members=customer_data[customer_data['cluster'] == c][:]
print('Cluster{}(n={}):'.format(c, len(cluster_members)))
print('-'* 17)
print(customer_data.groupby(['cluster']).mean())
Analise os resultados
Agora que você executou o clustering usando K-Means, a próxima etapa é analisar o resultado e ver se você pode encontrar alguma informação acionável.
Observe os valores médios de agrupamento e os tamanhos de cluster impressos a partir do script anterior.
Cluster0(n=31675):
-------------------
Cluster1(n=4989):
-------------------
Cluster2(n=1):
-------------------
Cluster3(n=671):
-------------------
customer orderRatio itemsRatio monetaryRatio frequency
cluster
0 50854.809882 0.000000 0.000000 0.000000 0.000000
1 51332.535779 0.721604 0.453365 0.307721 1.097815
2 57044.000000 1.000000 2.000000 108.719154 1.000000
3 48516.023845 0.136277 0.078346 0.044497 4.271237
As quatro médias de agrupamento são dadas usando as variáveis definidas na primeira parte:
- 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 0 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.
O cluster 0 é um conjunto de clientes que claramente não estão ativos. Talvez você possa direcionar os esforços de marketing para esse grupo para despertar um interesse por compras. Na próxima etapa, você consultará o banco de dados para obter os endereços de e-mail dos clientes no cluster 0, para que possa enviar um e-mail de marketing para eles.
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ê concluiu estas etapas:
- 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: