O K-means é um algoritmo de clustering iterativo integrado ao PolarDB for MySQL. Use-o para agrupar linhas de uma tabela em K clusters distintos com base em colunas de recursos numéricos, diretamente no banco de dados, sem exportar dados para uma plataforma externa de ML.
Funcionamento
O K-means particiona os dados nas seguintes etapas:
Divida o conjunto de dados em K grupos e selecione aleatoriamente K linhas como centroides iniciais.
Calcule a distância de cada linha até todos os centroides.
Atribua cada linha ao centroide mais próximo.
Recalcule cada centroide como a média de todas as linhas atribuídas a ele.
Repita as etapas 2 a 4 até que os centroides se estabilizem (as atribuições não mudem mais) ou o algoritmo atinja o limite de iterações.
O algoritmo usa as colunas especificadas em x_cols como recursos e gera um rótulo de cluster para cada linha.
Casos de uso
O K-means é eficaz para descobrir agrupamentos naturais em dados numéricos. As aplicações comuns incluem:
Classificação de documentos: Represente documentos como vetores usando frequência de termos e agrupe-os para identificar conjuntos semelhantes por tópico ou conteúdo.
Segmentação de clientes: Agrupe clientes por histórico de compras, interesses ou dados de atividade para definir segmentos de campanhas direcionadas. Por exemplo, segmente assinantes de telecomunicações pelo comportamento de pagamento: recargas, envio de mensagens de teste e navegação no site.
Detecção de fraudes: Aplique clustering em registros históricos de transações para identificar padrões associados a reivindicações fraudulentas. Use o modelo para sinalizar novos registros correspondentes a clusters de fraude conhecidos. Essa abordagem é comum na detecção de fraudes automotivas, médicas e de seguros.
Clustering de alertas de TI: Agrupe alertas da infraestrutura de rede, armazenamento ou banco de dados para categorizá-los, calcular o tempo médio de reparo e prever falhas em cascata.
Análise de registros de chamadas: Combine registros detalhados de chamadas (CDRs) com perfis de clientes para agrupar assinantes por comportamento de uso, ajudando a prever necessidades de serviço e reduzir o churn.
Análise de padrões criminais: Agrupe eventos criminais por tipo e localização para identificar pontos críticos e priorizar investigações.
Parâmetros
Defina o seguinte parâmetro na opção model_parameter da instrução CREATE MODEL.
|
Parâmetro |
Descrição |
Padrão |
|
|
Número de clusters (K). |
|
Exemplos
Os exemplos abaixo usam a tabela db4ai.testdata1, que contém as colunas numéricas dx1 e dx2.
Crie um modelo K-means
/*polar4ai*/CREATE MODEL test_kmeans WITH
(model_class = 'kmeans', x_cols = 'dx1,dx2',
y_cols='', model_parameter=(n_clusters=2))
AS (SELECT * FROM db4ai.testdata1);
Esta instrução treina um modelo K-means chamado test_kmeans que agrupa as linhas em 2 clusters com base nas colunas dx1 e dx2.
Execute previsões
Após treinar o modelo, use PREDICT para obter a atribuição de cluster de cada linha:
/*polar4ai*/SELECT dx1, dx2 FROM
PREDICT(MODEL test_kmeans,
SELECT * FROM db4ai.testdata1 LIMIT 10)
WITH (x_cols = 'dx1,dx2',
y_cols='');
Cada linha no resultado inclui seus valores originais de recursos (dx1, dx2) e um rótulo de cluster indicando o grupo atribuído.
Observações de uso
As colunas em
x_colsdevem conter dados do tipo ponto flutuante ou inteiro.