Se eu tiver um determinado conjunto de dados, quão inteligente seria inicializar os centros de cluster usando meios de amostras aleatórias desse conjunto de dados?
Por exemplo, suponha que eu queira 5 clusters
. Tomo 5 random samples
, digamos, size=20%
o conjunto de dados original. Eu poderia então tomar a média de cada uma dessas 5 amostras aleatórias e usá-las como meus 5 centros iniciais de cluster? Não sei onde li isso, mas queria saber o que vocês acham da ideia.
ATUALIZAÇÃO: Consulte este tópico Inicializando o clustering K-means: quais são os métodos existentes? para a discussão geral sobre os vários métodos de inicialização.
clustering
k-means
unsupervised-learning
JEquihua
fonte
fonte
Respostas:
Se você dividir a amostra aleatoriamente em 5 subamostras, suas 5 médias quase coincidirão. Qual é o sentido de fazer desses pontos de fechamento os centros iniciais do cluster?
Em muitas implementações K-means, a seleção padrão dos centros de cluster iniciais é baseada na idéia oposta: encontrar os 5 pontos mais distantes e torná-los os centros iniciais. Você pode perguntar qual pode ser o caminho para encontrar esses pontos distantes? Aqui está o que o K-means do SPSS está fazendo para isso:
Tome todos os k casos (pontos) do conjunto de dados como os centros iniciais. Todos os demais casos estão sendo verificados quanto à capacidade de substituí-los como centros iniciais, pelas seguintes condições:
Se a condição (a) não for satisfeita, a condição (b) é verificada; se não estiver satisfeito, o caso não se tornará um centro. Como resultado de tais casos, obtemos k casos máximos na nuvem que se tornam os centros iniciais. O resultado desse algo, embora robusto o suficiente, não é totalmente insensível à escolha inicial de "qualquer k casos" e à ordem de classificação dos casos no conjunto de dados; portanto, várias tentativas aleatórias de inicialização ainda são bem-vindas, como é sempre o caso com K-means.
Veja minha resposta com uma lista de métodos populares de inicialização para k-means. O método de divisão em subamostras aleatórias (criticadas por mim e por outras pessoas), bem como o método descrito usado pelo SPSS - também estão na lista.
fonte
Os meios serão muito semelhantes. Você também pode encontrar a média do conjunto de dados e, em seguida, colocar os centróides iniciais em um pequeno círculo / esfera em torno dessa média.
Se você quiser ver mais algum esquema de inicialização de som para k-means, dê uma olhada em k-means ++. Eles criaram um método bastante inteligente para semear k-means.
k-means ++: as vantagens de uma semeadura cuidadosa ".
Anais do décimo oitavo simpósio anual do ACM-SIAM sobre algoritmos discretos
Slides do autor: http://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf
fonte
Usar os meios de amostras aleatórias dará o oposto do que você precisa, como ttnphns apontou em seu comentário. O que precisamos é de uma maneira de encontrar pontos de dados bastante distantes um do outro.
Idealmente, você pode percorrer todos os pontos, encontrar as distâncias entre eles, determinar onde as distâncias são maiores ...
Não contornar a intenção do OP, mas acho que a "solução" está embutida no algoritmo k-means. Realizamos várias iterações e recalculamos os centróides do cluster com base nas iterações anteriores. Também geralmente executamos o algoritmo kmeans várias vezes (com valores iniciais aleatórios) e comparamos os resultados.
Se alguém tiver conhecimento a priori , conhecimento de domínio, isso poderá levar a um método superior de identificar onde os centros de cluster iniciais devem estar. Caso contrário, provavelmente é uma questão de selecionar pontos de dados aleatórios como valores iniciais e, em seguida, utilizar várias execuções e várias iterações por execução.
fonte
fonte