Precisamos definir o conjunto de treinamento e o conjunto de testes para clustering?

10

Quando fazemos classificação e regressão, geralmente definimos conjuntos de teste e treinamento para nos ajudar a construir e aprimorar modelos.

No entanto, quando fazemos cluster, também precisamos definir conjuntos de teste e treinamento? Por quê?

rz.He
fonte
Sim - por razões semelhantes à classificação / regressão. Você quer ter certeza de que qualquer modelo que você criar (digamos, seu gráfico de cotovelo indica que k = 3 em um cluster k-means) ainda é apropriado para dados não vistos.
precisa saber é
Obrigado ilanman;) Além disso, você tem alguma recomendação sobre como determinar o número real de clusters quando fazemos agrupamentos como kmeans?
precisa saber é o seguinte

Respostas:

6

Sim, porque o armazenamento em cluster também pode sofrer um problema de ajuste excessivo. Por exemplo, o número crescente de clusters sempre "aumenta o desempenho".

Aqui está uma demonstração usando o cluster K-Means:

A função objetivo do K-means é (detalhes da notação podem ser encontrados aqui )

J=i=1kj=1nxi(j)cj2

Com esse objetivo, o inferior significa modelo "melhor".J

Suponha que tenhamos os seguintes dados (dados da íris), escolher o número do cluster como será sempre "melhor" do que escolher o número do cluster como . A escolha de clusters será melhor que clusters. Podemos continuar nessa trilha e acabar com o custo : basta tornar o número do cluster igual ao número dos pontos de dados e colocar todo o centro do cluster nos pontos correspondentes.4354J=0

d=iris[,c(3,4)]

res4=kmeans(d, 4,nstart=20)
res3=kmeans(d, 3,nstart=20)


par(mfrow=c(1,2))
plot(d,col=factor(res4$cluster),
		 main=paste("4 clusters J=",round(res4$tot.withinss,4)))
plot(d,col=factor(res3$cluster),
		 main=paste("3 clusters J=",round(res3$tot.withinss,4)))

insira a descrição da imagem aqui

Se adiarmos os dados para teste, isso nos impedirá de ajustar demais. O mesmo exemplo, suponha que estamos escolhendo grupos de números grandes e colocando todos os centros de cluster nos pontos de dados de treinamento. O erro de teste será grande, porque os pontos de dados de teste não se sobrepõem aos dados de treinamento.

Haitao Du
fonte
Olá hxd1011, obrigado pela sua resposta rápida. Outra pergunta, você tem alguma recomendação sobre como determinar o número real de clusters quando fazemos agrupamentos como kmeans?
precisa saber é o seguinte
@ rz.He sim, verificar esta resposta stats.stackexchange.com/questions/261537/...
Haitao Du
2
+1 porque é uma resposta construtiva, mas, para bancar o advogado do diabo, você sabe que são três grupos. Se alguém mostrasse esses dados sem nenhum contexto, uma solução de 2 clusters também funcionaria perfeitamente. Talvez você tenha alguns dos pontos mais à direita como outliers para jogar "dados reais têm outliers" também. Seria muito mais construtivo (e rigoroso) observar a coerência entre as execuções de cluster com inicialização / tremulação / subconjunto usando algumas estatísticas (por exemplo, correlação copenética, Índice de Rand Ajustado, etc.).
precisa saber é o seguinte
E se você não usar k-means? Digamos, cluster médio de ligação? Receio que sua resposta seja adequada a k-means .
Quit - Anony-Mousse
@ Anony-Mousse: A resposta é específica ao k-means como exemplo, mas seria qualitativamente a mesma se o DBSCAN ou o agrupamento espectral ou qualquer outra coisa que fosse usada. Isso apenas mostra que uma métrica específica pode ser super ajustada.
usεr11852
5

Não, isso geralmente não será possível.

Existem muito poucos agrupamentos que você pode usar como um classificador. Somente com k-means, PAM etc., você pode avaliar a "generalização", mas o cluster tornou-se muito mais diversificado (e interessante) desde então. E, de fato, mesmo o antigo cluster hierárquico não generaliza bem para dados 'novos'. Clustering não é classificação. Muitos métodos de classificação não se transferem bem para cluster; incluindo otimização de hiperparâmetros.

Se você tiver apenas dados parcialmente rotulados, poderá usar esses rótulos para otimizar parâmetros. Mas o cenário geral de armazenamento em cluster será que você deseja aprender mais sobre seu conjunto de dados; para executar o clustering várias vezes, investigue os clusters interessantes (porque geralmente alguns clusters são muito pequenos ou grandes demais para serem interessantes!) e anote algumas das idéias que você obteve. O clustering é uma ferramenta para ajudar o ser humano a explorar um conjunto de dados , não uma coisa automática. Mas você não "implantará" um cluster. Eles não são muito confiáveis ​​e um único agrupamento nunca "conta toda a história".

Possui QUIT - Anony-Mousse
fonte
1
O agrupamento reflete uma propriedade global dos dados e, geralmente, não possui uma "verdade fundamental". Lamentando isso, acho que ninguém defende o uso de um cluster como classificador em primeira instância; no entanto, se encontrarmos um agrupamento interessante, será tolice não tentar usar os resultados incorporando-os ao processo de tomada de decisão. (Caso contrário, por que nós agrupar os dados para começar?)
usεr11852
para executar o cluster, ainda precisamos de um objetivo de otimizar. se for um problema de otimização, pode caber demais em um dado. Além dos kmeans, muitos outros métodos ainda precisam de um número de clusters.
Haitao Du
1
Nem todo algoritmo de cluster é um problema de otimização.
Quit - Anony-Mousse
1
E no que diz respeito ao resultado: você deseja usar os insights, não o resultado bruto. Interprete o cluster e trabalhe com a interpretação , porque haverá muitos pontos mal atribuídos.
Quit - Anony-Mousse
Eu apoio esta resposta, porque quando um novo ponto de dados chega, você aprende a representação e depois agrupa, então não há necessidade do teste. Mesmo se você estiver dividindo, está perdendo as informações dos dados.
Aaditya Ura 21/01
1

Não. Você não usa treinamento e testes em aprendizado não supervisionado. Não existe função objetiva no aprendizado não supervisionado para testar o desempenho do algoritmo.

S_Dhungel
fonte
3
Sem mais alguns detalhes, isso não é realmente um acréscimo à discussão e às duas respostas existentes. Você pode expandir isso?
Mdewey