Permita-me, sem ir muito longe, simplesmente copiar e colar uma lista de opções da minha própria função !kmini
(uma macro para SPSS), encontrada na coleção "Clustering" aqui .
Método para criar ou selecionar centros de cluster iniciais. Escolher:
- RGC - centróides de subamostras aleatórias . Os dados são particionados aleatoriamente por
k
não sobreposição, por associação, grupos e centróides desses grupos são apontados como os centros iniciais. Assim, os centros são calculados, não selecionados nos casos de conjuntos de dados existentes. Esse método gera centros próximos uns dos outros e do centróide geral dos dados.
- RP - pontos selecionados aleatoriamente .
k
casos distintos dos dados são selecionados aleatoriamente para serem os centros iniciais.
- RUNFP -
pontos mais distantes (seleção em execução). Os primeiros
k
casos são tomados como centros e, em seguida, durante o restante dos casos do conjunto de dados, são feitas substituições progressivas entre os centros; o objetivo das substituições é obter nos k
pontos finais mais distantes um do outro no espaço variável. Esses pontos (casos) que ocupam posições periféricas na nuvem de dados são os centros iniciais produzidos. (O método é usado como padrão no procedimento SPSS k-means QUICK CLUSTER
. Veja detalhes em Algoritmos do SPSS. Consulte também descrito aqui ).
- SIMFP - pontos mais distantes (seleção simples). O primeiro centro é selecionado como um caso aleatório no conjunto de dados. O segundo centro é selecionado como o caso o mais distante possível desse centro. O terceiro centro é selecionado como o caso o mais distante possível dos dois (do mais próximo dos dois), - e assim por diante.
- KMPP - pontos mais distantes aleatórios, ou k-means ++. O primeiro centro é selecionado como um caso aleatório no conjunto de dados. O 2º centro também é selecionado aleatoriamente, mas a probabilidade de seleção de um caso é proporcional à distância (euclidiana quadrada) dele àquele (1º) centro. O terceiro centro é selecionado também aleatoriamente com a probabilidade de seleção proporcional à distância de um caso ao mais próximo desses dois centros, - e assim por diante. (Arthur, D., Vassilvitskii, S .. K-means ++: as vantagens de uma semeadura cuidadosa. // Anais do 18º simpósio anual da ACM-SIAM sobre algoritmos discretos. 2007., 1027-1035.)
- GREP - pontos representativos do grupo . A idéia do método - coletar como centros
k
casos mais representativos, “substitutos”. O 1º centro é considerado o caso mais próximo do cenóide de dados geral. Em seguida, o restante dos centros é selecionado a partir dos pontos de dados, de modo que cada ponto seja considerado se está mais próximo (e quanto, em termos de distância euclidiana quadrada) a um conjunto de pontos que cada um dos últimos é para qualquer um dos centros já existentes. Ou seja, cada ponto é examinado como candidato para representar um grupo de pontos ainda não suficientemente representados pelos centros já coletados. O ponto mais representativo a esse respeito é selecionado como o próximo centro. (Kaufman, L. Rousseeuw, PJ Encontrando grupos de dados: uma introdução à análise de agrupamentos., 1990. Veja também: Pena, JM et al. Uma comparação empírica de quatro métodos de inicialização para o algoritmo K-means // Pattern Recognition Lett. 20 (10), 1999,
- [Existe também um método interessante, ainda não implementado por mim na macro, para gerar
k
pontos que são de uniforme aleatório, mas "menos aleatórios que aleatórios", em algum lugar entre aleatória e ganância; ver base teórica potencial para esse método]
- Mais um método é fazer cluster hierárquico pelo método de Ward. Você pode fazer isso em uma subamostra de objetos se a amostra for muito grande. Então, os meios dos
k
aglomerados produzidos por ele são as sementes iniciais do procedimento k-means. Ward é preferível a outros métodos hierárquicos de agrupamento porque compartilha o objetivo de destino comum com k-means.
Os métodos RGC, RP, SIMFP, KMPP dependem de números aleatórios e podem alterar o resultado de execução para execução.
O método RUNFP pode ser sensível à ordem dos casos no conjunto de dados; mas o método GREP não é (exceto em ocasiões em que existem muitos casos idênticos, vínculos, nos dados). O método GREP pode falhar na coleta de todos os k
centros se k
for grande em relação ao número de casos nos dados ( n
), especialmente quando k>n/2
. [A macro informará se os dados não permitem que esse método colete k
centros]. O método GREP é o mais lento, calcula [na minha implementação] matriz de distâncias entre todos os casos, portanto, não será adequado se houver dezenas de milhares ou milhões de casos. Você pode, no entanto, fazer isso em uma subamostra aleatória dos dados.
Atualmente, não estou discutindo qual método é "melhor" e em que circunstância, porque até agora não fiz uma extensa análise simulacional da questão. Minhas impressões muito preliminares e superficiais foram de que o GREP é particularmente digno (mas caro) e que, se você deseja que o método realmente barato ainda seja competitivo o suficiente, apenas k pontos aleatórios, RP, são uma escolha decente.
A última vez que fiz uma revisão abrangente da literatura sobre o assunto, que foi admitida há quase 20 anos, as duas principais recomendações foram:
Em aplicativos de big data, o método de Ward não funciona tão bem, embora possa ser aplicado a uma subamostra.
Fiz algumas simulações, que nunca cheguei a publicar, e descobri que:
A principal conclusão que tirei disso é que o algoritmo SPSS é surpreendentemente bom, mas se você tiver os recursos, mais de 1000 pontos de partida aleatórios serão o caminho a percorrer.
fonte
Com a nomenclatura ttnphns, testei RGC, RP e KMPP em:
Não recomendo o RGC porque os centros resultantes são muito próximos um do outro: a média de muitos pontos é próxima da média global (lei de grandes números). Isso pode desacelerar bastante a convergência: leva algum tempo até que os clusters comecem a se individualizar.
O RP geralmente é bom e recomendaria como a primeira escolha fácil.
O KMPP é muito popular e funciona muito bem em pequena dimensão: comparado ao RP, ele tende a reduzir a probabilidade de terminar em um mínimo local.
No entanto, quando eu estava trabalhando em grandes conjuntos de dados (1 milhão de pontos que são um conjunto de palavras de documentos textuais com grande dimensão), o RP superou ligeiramente o KMPP no sentido de que terminava com um número menor de iterações. Fiquei surpreso com isso. No grande conjunto de dados / dimensão alta, a convergência para o mínimo global é impossível, você mede a qualidade como "quão bom é o mínimo local" = "quão pequeno é o SOD final". Ambos os métodos tiveram a mesma qualidade.
Observe que é importante usar um método aleatório se você quiser usar replicações para melhorar a qualidade.
fonte