Agrupamento hierárquico
Predefinição:Descrição curtaPredefinição:Barra de aprendizagem de máquina Em mineração de dados e estatística, o agrupamento hierárquico (também chamado de análise de agrupamento hierárquico ou HCA) é um método de análise de agrupamento que busca construir uma hierarquia de agrupamentos. As estratégias para o agrupamento hierárquico geralmente se dividem em duas categorias:
- Aglomerativo: Esta é uma abordagem "de baixo para cima": cada observação começa em seu próprio agrupamento, e pares de agrupamentos são fundidos à medida que se sobe na hierarquia.
- Divisivo: Esta é uma abordagem "de cima para baixo": todas as observações começam em um único agrupamento, e divisões são realizadas de forma recursiva à medida que se desce na hierarquia.
Em geral, as fusões e divisões são determinadas de maneira gulosa. Os resultados do agrupamento hierárquico[1] são geralmente apresentados em um dendrograma.
O agrupamento hierárquico tem a vantagem distinta de que qualquer medida válida de distância pode ser usada. Na verdade, as próprias observações não são necessárias: tudo o que é usado é uma matriz de distâncias (formalmente uma matriz de dissimilaridade). Por outro lado, exceto pelo caso especial da distância de ligação única, nenhum dos algoritmos (exceto a busca exaustiva em ) pode garantir encontrar a solução ótima.
Complexidade
O algoritmo padrão para agrupamento aglomerativo hierárquico (AAH) tem uma complexidade de tempo de e requer de memória, o que o torna muito lento para conjuntos de dados de tamanho médio. No entanto, para alguns casos especiais, são conhecidos métodos aglomerativos eficientes ótimos (de complexidade ): SLINK[2] para agrupamento por ligação única e CLINK[3] para agrupamento por ligação completa. Com um heap, o tempo de execução do caso geral pode ser reduzido para , uma melhoria em relação ao limite mencionado de , ao custo de aumentar ainda mais os requisitos de memória. Em muitos casos, a sobrecarga de memória dessa abordagem é grande demais para ser praticamente utilizável.
O agrupamento divisivo com uma busca exaustiva é , mas é comum usar heurísticas mais rápidas para escolher divisões, como k-means.
Ligação entre Agrupamentos
Para decidir quais agrupamentos devem ser combinados (para aglomerativo), ou onde um agrupamento deve ser dividido (para divisivo), é necessária uma medida de dissimilaridade entre conjuntos de observações. Na maioria dos métodos de agrupamento hierárquico, isso é alcançado pelo uso de uma distância apropriada d, como a distância euclidiana, entre observações individuais do conjunto de dados, e um critério de ligação, que especifica a dissimilaridade de conjuntos como uma função das distâncias entre pares de observações nos conjuntos. A escolha da métrica e da ligação pode ter um grande impacto no resultado do agrupamento, onde a métrica de nível inferior determina quais objetos são mais similares, enquanto o critério de ligação influencia a forma dos agrupamentos. Por exemplo, a ligação completa tende a produzir agrupamentos mais esféricos do que a ligação única.
O critério de ligação determina a distância entre conjuntos de observações como uma função das distâncias entre pares de observações.
Alguns critérios de ligação comumente usados entre dois conjuntos de observações A e B e uma distância d são:[4][5]
| Nomes | Fórmula |
|---|---|
| Máximo ou agrupamento por ligação completa | |
| Mínimo ou agrupamento por ligação única | |
| Ligação média não ponderada (ou UPGMA) | |
| Ligação média ponderada (ou WPGMA) | |
| Ligação de centróide, ou UPGMC | onde e são os centróides de A resp. B. |
| Ligação mediana, ou WPGMC | onde |
| Ligação versátil[6] | |
| Ligação de Ward,[7] Aumento Mínimo da Soma dos Quadrados (MISSQ)[8] | |
| Soma Mínima de Erro dos Quadrados (MNSSQ)[8] | |
| Aumento Mínimo na Variância (MIVAR)[8] | |
| Variância Mínima (MNVAR)[8] | |
| Ligação Mini-Max[9] | |
| Ligação de Hausdorff[10] | |
| Ligação de Medoid de Soma Mínima[11] | tal que m é o medoid do agrupamento resultante |
| Ligação de Aumento de Soma Mínima de Medoid[11] | |
| Ligação de Medoid[12][13] | onde , são os medoids dos agrupamentos anteriores |
| Agrupamento de energia mínima |
Alguns desses só podem ser recalculados recursivamente (WPGMA, WPGMC), para muitos um cálculo recursivo com equações de Lance-Williams é mais eficiente, enquanto para outros (Mini-Max, Hausdorff, Medoid) as distâncias têm que ser calculadas com a fórmula completa mais lenta. Outros critérios de ligação incluem:
- A probabilidade de que os agrupamentos candidatos se originem da mesma função de distribuição (ligação V).
- O produto do grau de entrada e saída em um gráfico k-vizinhos mais próximos (ligação de grau de gráfico).[14]
- O incremento de algum descritor de agrupamento (ou seja, uma quantidade definida para medir a qualidade de um agrupamento) após a fusão de dois agrupamentos.[15][16][17]
Exemplo de Agrupamento Aglomerativo

Por exemplo, suponha que esses dados devam ser agrupados e que a distância Euclidiana seja a métrica de distância utilizada.
O dendrograma do agrupamento hierárquico seria:

Cortar a árvore em uma determinada altura resultará em um agrupamento particionado com uma precisão selecionada. Neste exemplo, cortar após a segunda linha (de cima para baixo) do dendrograma resultará nos agrupamentos {a} {b c} {d e} {f}. Cortar após a terceira linha resultará nos agrupamentos {a} {b c} {d e f}, que é um agrupamento mais grosseiro, com um número menor, mas com agrupamentos maiores.
Este método constrói a hierarquia a partir dos elementos individuais, fundindo progressivamente os agrupamentos. Em nosso exemplo, temos seis elementos {a} {b} {c} {d} {e} e {f}. O primeiro passo é determinar quais elementos devem ser fundidos em um agrupamento. Geralmente, queremos pegar os dois elementos mais próximos, de acordo com a distância escolhida.
Opcionalmente, também é possível construir uma matriz de distâncias nesta etapa, onde o número na i-ésima linha e j-ésima coluna é a distância entre o i-ésimo e o j-ésimo elementos. Então, à medida que o agrupamento progride, linhas e colunas são fundidas à medida que os agrupamentos são fundidos e as distâncias atualizadas. Esta é uma maneira comum de implementar esse tipo de agrupamento e tem a vantagem de armazenar em cache as distâncias entre os agrupamentos. Um algoritmo simples de agrupamento aglomerativo é descrito na página de agrupamento por ligação simples; ele pode ser facilmente adaptado para diferentes tipos de ligação (veja abaixo).
Suponha que tenhamos fundido os dois elementos mais próximos, b e c, agora temos os seguintes agrupamentos {a}, {b, c}, {d}, {e} e {f}, e queremos fundi-los ainda mais. Para fazer isso, precisamos pegar a distância entre {a} e {b c} e, portanto, definir a distância entre dois agrupamentos. Geralmente, a distância entre dois agrupamentos A e B é uma das seguintes:
- A distância máxima entre elementos de cada agrupamento (também chamado de agrupamento por ligação completa):
- A distância mínima entre elementos de cada agrupamento (também chamado de agrupamento por ligação simples):
- A distância média entre elementos de cada agrupamento (também chamado de agrupamento por ligação média, usado por exemplo no UPGMA):
- A soma de toda a variância intra-agrupamento.
- O aumento na variância para o agrupamento que está sendo fundido (método de Ward[7])
- A probabilidade de que agrupamentos candidatos se originem da mesma função de distribuição (V-ligação).
Em caso de distâncias mínimas empatadas, um par é escolhido aleatoriamente, permitindo assim gerar vários dendrogramas estruturalmente diferentes. Alternativamente, todos os pares empatados podem ser unidos ao mesmo tempo, gerando um dendrograma único.[18]
Sempre é possível decidir parar o agrupamento quando há um número suficientemente pequeno de agrupamentos (critério de número). Algumas ligações também podem garantir que a aglomeração ocorra a uma distância maior entre os agrupamentos do que a aglomeração anterior, e então pode-se parar o agrupamento quando os agrupamentos estão muito distantes para serem fundidos (critério de distância). No entanto, isso não é o caso de, por exemplo, a ligação do centróide onde as chamadas reversões[19] (inversões, desvios da ultrametricidade) podem ocorrer.
Agrupamento Divisivo
O princípio básico do agrupamento divisivo foi publicado como o algoritmo DIANA (Análise Divisiva de Agrupamento).[20] Inicialmente, todos os dados estão no mesmo agrupamento e o maior agrupamento é dividido até que cada objeto esteja separado. Como existem maneiras de dividir cada agrupamento, heurísticas são necessárias. DIANA escolhe o objeto com a dissimilaridade média máxima e, em seguida, move todos os objetos para este agrupamento que são mais semelhantes ao novo agrupamento do que ao restante.
Informalmente, DIANA não é tanto um processo de "dividir", mas sim de "esvaziar": a cada iteração, um agrupamento existente (por exemplo, o agrupamento inicial de todo o conjunto de dados) é escolhido para formar um novo agrupamento dentro dele. Objetos se movem progressivamente para este agrupamento aninhado, esvaziando o agrupamento existente. Eventualmente, tudo o que resta dentro de um agrupamento são agrupamentos aninhados que cresceram lá, sem possuir nenhum objeto solto por si só.
Formalmente, DIANA opera nas seguintes etapas:
- Deixe ser o conjunto de todos os índices de objetos e o conjunto de todos os agrupamentos formados até agora.
- Itere o seguinte até que :
- Encontre o agrupamento atual com 2 ou mais objetos que tenha o maior diâmetro:
- Encontre o objeto neste agrupamento com a maior dissimilaridade em relação ao restante do agrupamento:
- Retire do seu antigo agrupamento e coloque-o em um novo grupo fragmentado .
- Enquanto não estiver vazio, continue migrando objetos de para adicioná-los a . Para escolher quais objetos migrar, não considere apenas a dissimilaridade com , mas também ajuste pela dissimilaridade com o grupo fragmentado: defina onde definimos , então ou pare de iterar quando , ou migre .
- Adicione a .
Intuitivamente, acima mede o quanto um objeto deseja deixar seu agrupamento atual, mas é atenuado quando o objeto também não se encaixaria no grupo fragmentado. Tais objetos provavelmente iniciarão seu próprio grupo fragmentado eventualmente.
O dendrograma de DIANA pode ser construído permitindo que o grupo fragmentado seja um filho do agrupamento esvaziado a cada vez. Isso constrói uma árvore com como sua raiz e agrupamentos únicos de um único objeto como suas folhas.
Software
Implementações de código aberto


- ALGLIB implementa vários algoritmos de agrupamento hierárquico (ligação simples, ligação completa, Ward) em C++ e C# com memória O(n²) e tempo de execução O(n³).
- ELKI inclui múltiplos algoritmos de agrupamento hierárquico, várias estratégias de ligação e também inclui os algoritmos eficientes SLINK,[2] CLINK[3] e Anderberg, extração flexível de agrupamentos de dendrogramas e vários outros algoritmos de análise de agrupamento.
- Julia tem uma implementação dentro do pacote Clustering.jl.[21]
- Octave, o análogo do GNU para MATLAB implementa agrupamento hierárquico na função "linkage".
- Orange, uma suíte de software de mineração de dados, inclui agrupamento hierárquico com visualização interativa de dendrograma.
- R possui funções internas[22] e pacotes que fornecem funções para agrupamento hierárquico.[23][24][25]
- SciPy implementa agrupamento hierárquico em Python, incluindo o algoritmo SLINK eficiente.
- Scikit-learn também implementa agrupamento hierárquico em Python.
- Weka inclui análise de agrupamento hierárquico.
Implementações comerciais
- MATLAB inclui análise de agrupamento hierárquico.
- SAS inclui análise de agrupamento hierárquico no PROC CLUSTER.
- Mathematica inclui um Pacote de Agrupamento Hierárquico.
- NCSS inclui análise de agrupamento hierárquico.
- SPSS inclui análise de agrupamento hierárquico.
- Qlucore Omics Explorer inclui análise de agrupamento hierárquico.
- Stata inclui análise de agrupamento hierárquico.
- CrimeStat inclui um algoritmo de agrupamento hierárquico de vizinho mais próximo com uma saída gráfica para um Sistema de Informação Geográfica.
Veja também
- Cladística
- Dendrograma
- Filogenética computacional
- Hashing sensível à localidade
- Homologia persistentePredefinição:Div col end
Referências
Predefinição:Authority control
- ↑ Predefinição:Citar livro
- ↑ 2,0 2,1 Predefinição:Citar periódico
- ↑ 3,0 3,1 Predefinição:Citar periódico
- ↑ Predefinição:Citar web
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ 7,0 7,1 Predefinição:Citar periódico
- ↑ 8,0 8,1 8,2 8,3 Predefinição:Citation
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ 11,0 11,1 Predefinição:Citar conferência
- ↑ Predefinição:Citar conferência
- ↑ Predefinição:Citar conferência
- ↑ Predefinição:Citar livro Veja também: https://github.com/waynezhanghk/gacluster
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar livro
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar periódico
- ↑ Predefinição:Citar livro
- ↑ Predefinição:Citar livro
- ↑ Predefinição:Citar web
- ↑ Predefinição:Citar web
- ↑ Predefinição:Citation
- ↑ Predefinição:Citar web
- ↑ Predefinição:Citar web