Acho que encontrei minha resposta para o agrupamento kmeans:
Observando o código fonte do git, descobri que, para o scikit learn, a inércia é calculada como a soma da distância ao quadrado de cada ponto até o centróide mais próximo, ou seja, seu cluster designado. Então onde c r é o centróide do cluster designado ed é a distância ao quadrado. Eu= ∑Eu( d( i , c r ) )c rd
Agora, a fórmula da estatística de gap envolve
ondeDré a soma das distâncias ao quadrado entre todos os pontos no clusterr.
Wk= ∑r = 1k1 1( 2 ∗ nr)Dr
Drr
Introduzindo , - c na fórmula da distância ao quadrado ( c sendo o centróide das coordenadas do cluster r ), tenho um termo que corresponde à inércia (como no scikit) + um termo que desaparece se cada c for o baricentro de cada cluster (que deveria estar em kmeans). Então eu acho que W k é de fato inércia.+ c- ccrcWk
Eu ainda tenho duas perguntas:
- Você acha que meu cálculo está correto? (Por exemplo, não sei se isso vale para cluster hierárquico.)
- Se estou correto acima, codifiquei a estatística de gap (como diferença de inércia do log entre estimativa e cluster) e ela apresenta um desempenho ruim, especialmente no conjunto de dados da íris, alguém já tentou?