Usei a estatística GAP para estimar k clusters em R. No entanto, não tenho certeza se a interpreto bem.
Do gráfico acima, presumo que devo usar 3 clusters.
Do segundo gráfico, devo escolher 6 clusters. É a interpretação correta da estatística GAP?
Eu ficaria grato por qualquer explicação.
Comentários
Resposta
Para obter um agrupamento ideal, você deve selecionar $ k $ de forma que maximize a estatística de lacuna. Aqui está o exemplo dado por Tibshirani et al. (2001) em seu artigo, o gráfico formado por dados artificiais com 2 clusters. Como você pode ver, 2 é claramente o $ k $ ideal, porque a estatística de lacuna é maximizada em $ k = 2 $:
No entanto , em muitos conjuntos de dados do mundo real, os clusters não são tão bem definidos e queremos ser capazes de equilibrar a maximização da estatística de lacuna com a parcimônia do modelo. Caso em questão: primeira imagem do OP. Se estivermos maximizando a estatística de lacuna sozinhas , devemos escolher o modelo com 30 (ou até mais!) Clusters. Supondo que esse gráfico continue a aumentar, é claro, os resultados são menos úteis. Portanto, Tibshirani sugere o método 1-erro padrão :
Escolha o tamanho do cluster $ \ hat {k} $ para ser o menor $ k $ tal que $ \ text {Gap} (k) \ geq \ text {Gap} (k + 1) – s_ {k + 1} $.
O que informalmente está identificando o ponto em que a taxa de aumento da estatística de lacuna começa a “diminuir”.
Então, na primeira imagem do OP, se tomarmos as barras de erro vermelhas como o erro padrão, então 3 é o menor $ k $ que satisfaz este critério:
Para a segunda imagem de OP, no entanto, você verá que a estatística de lacuna diminui imediatamente para $ k > 1 $. Portanto, o primeiro $ k $ que satisfaz o critério de erro padrão 1 é $ 1 $. Esta é a maneira do gráfico de dizer que os dados não devem ser agrupados.
Como se constatou, existem maneiras adicionais de escolher $ k $ ideais. O método padrão da função R clusGap
, por exemplo, sempre pesquisa o máximo local do gráfico e seleciona o menor $ k $ dentro de um erro padrão do máximo local. Usando este método firstSEmax
, selecionaríamos $ k = 30 $ e $ k = 19 $ para os gráficos 1 e 2 do OP, respectivamente. Como eu disse, no entanto, isso parece sofrer de um problema de complexidade.
Comentários
- Ao estimar o valor de $ k $ da estatística de lacuna , como posso calcular / estimar a probabilidade de que $ k $ seja o número verdadeiro de clusters? Ou minha pergunta não tem sentido?
- Obrigado por apontar a troca entre maximizar a estatística de lacuna e obter parcimônia do modelo
clusGap
com base no globalmax, não ' não sabia como implementar maxSE.