Designando rótulos de classe para clusters k-means

10

Eu tenho uma pergunta muito básica sobre clustering. Depois de encontrar k clusters com seus centróides, como faço para interpretar as classes dos pontos de dados que agrupei (designando rótulos de classe significativos para cada cluster). Não estou falando da validação dos clusters encontrados.

Pode ser feito com base em um pequeno conjunto de pontos de dados rotulados, para calcular a qual cluster esses pontos rotulados pertencem e com base no tipo e número de pontos que cada cluster recebe, decidir o rótulo? Isso parece bastante óbvio, mas não sei como é padrão atribuir rótulos a clusters dessa maneira.

Para ser claro, desejo executar um cluster não supervisionado que não use nenhum rótulo para encontrar primeiro meus clusters. Depois de encontrar os clusters, desejo atribuir rótulos de classe significativos aos clusters com base nas propriedades de alguns exemplos de pontos de dados.

Riyaz
fonte
Não tenho certeza de entender sua pergunta: geralmente, qualquer algoritmo k-means deve retornar informações sobre a associação de classe para cada ponto de dados. Você está falando sobre pontos de dados reais ou novas observações?
chl
@chi Suspeito que Riyaz esteja preocupado em encontrar nomes com os quais rotular os clusters e esteja falando sobre nomear a priori alguns dos pontos e, em seguida, usar algum algoritmo que considere a preponderância de pontos nomeados nos clusters para nomeá-los.
Glen_b -Reinstate Monica
2
@Riyaz, podemos usar a seguinte analogia para a Análise Fatorial para entender sua pergunta? Freqüentemente alguém analisará um conjunto de variáveis ​​para agrupá-las em grupos de variáveis ​​que parecem "se unir", mas o analista precisa pensar sobre a natureza das variáveis ​​que compõem cada cluster para criar um nome para / maneira de pensar sobre o que cada cluster (fator) é . É essencialmente isso que você está recebendo aqui?
gung - Restabelece Monica

Respostas:

4

Sim. O que você propõe é totalmente padrão e é a maneira como o software k-means padrão funciona automaticamente. No caso de k-significa, você calcula a distância euclidiana entre cada observação (ponto de dados) e a média de cada cluster (centróide) e atribui as observações ao cluster mais semelhante. Em seguida, o rótulo do cluster é determinado examinando as características médias das observações classificadas no cluster em relação às médias daquelas em relação aos outros clusters.

Tim
fonte
3

Se você olhar para os nomes no seu objeto kmeans, notará que há um objeto "cluster". Ele contém os rótulos de classe ordenados da mesma forma que os dados de entrada. Aqui está um exemplo simples que vincula os rótulos do cluster aos seus dados.

x <- data.frame(X=rnorm(100, sd=0.3), Y=rnorm(100, mean=1, sd=0.3))

k <- kmeans(x, 2) 
names(k)
x <- data.frame(x, K=k$cluster)

# You can also directly return the clusters
x <- data.frame(x, K=kmeans(x, 2)$cluster)
Jeffrey Evans
fonte
0

Os rótulos para o cluster podem se basear na classe de amostras majoritárias dentro de um cluster. Mas isso é verdade apenas se o número de clusters for igual ao número de classes.

user101780
fonte