Então, digamos que eu tenha vários pontos de dados em R ^ n, onde n é bem grande (tipo 50). Sei que esses dados se enquadram em 3 clusters e sei em qual cluster cada ponto de dados faz parte. Tudo o que eu quero fazer é visualizar esses clusters em 2D de forma a maximizar a separação visual entre clusters que vejo, com o objetivo de provar que os clusters são facilmente separáveis com base na localização do ponto de dados em R ^ n sozinho.
A maneira como eu venho lidando com isso até agora envolve fazer uma transformação de PCA nos pontos de dados e visualizar pares de PCs aleatoriamente até encontrar um em que os clusters pareçam estar bem separados. Essa abordagem parece bastante ad hoc e parece que deve haver uma maneira fácil de encontrar uma rotação de dados no estilo PCA que, em vez de maximizar a variação geral, maximize a separação entre os clusters.
Existe uma técnica padrão por aí que faz isso? Se não, alguma idéia sobre como criar essa transformação?
Respostas:
"uma rotação de dados no estilo PCA que, em vez de maximizar a variação geral, maximiza a separação entre agrupamentos". A análise discriminante é exatamente essa técnica. Um componente principal maximiza a variação ao longo dele. Uma função discriminante maximiza a relação entre a variação do cluster / variação do pool dentro do cluster ao longo dela.
fonte
Há dois métodos que me vêm à cabeça, nos quais você pode estar interessado. O primeiro é fazer uso de clusters conhecidos e é chamado de 'Análise de componentes de vizinhança' por Goldberger et al .
A idéia é que você aprenda um mapeamento (por exemplo, afim) do espaço dimensional mais alto para um espaço visualizável. (por exemplo:A :Rn↦R2 ) Esse mapeamento é estimado maximizando o número médio de classificação correta se for usada uma variação da classificação de vizinhos k-mais próximos. Existem alguns resultados impressionantes obtidos:
O outro é o tSNE , que aprende um mapeamento (por exemplo,A :Rn↦R2 ) Esse mapeamento não possui restrições, mas a perda é otimizada (não danificada por alguma parametrização, mas com novos pontos emR2 próprio) é que o novo espaço reflete distâncias semelhantes ao espaço original. Semelhante é bastante complicado aqui, baseia-se em assumir certas distribuições dos pontos no espaço e a correspondente divergência KL.
Para o último, existe o código matlab que você pode encontrar no link fornecido. Aqui está uma visualização do conjunto de dados MNIST:
fonte
Você pode querer olhar para este documento:
G. Sanguinetti, Redução de dimensionalidade de conjuntos de dados em cluster, IEEE Trans. Análise de Padrões e Inteligência de Máquina (PAMI) 30 (3), 535-540 (2008) (www)
Que descreve uma versão não supervisionada da análise discriminante linear, eu vi algumas demonstrações disso e parece uma ferramenta muito útil para ter em uma caixa de ferramentas.
Se você já sabe a quais classes cada amostra pertence, então (como sugere ttnphns) deseja a Análise Discriminante Linear, o livro de Andrew Webb sobre reconhecimento estatístico de padrões é um bom livro de referência para esse tipo de coisa.
fonte
O artigo "Uma abordagem unificada para PCA, PLS, MLR e CCA" (de M Borga et al) fornece uma descrição compacta sobre vários tipos de métodos de projeção linear, incluindo PCA e LDA.
fonte
Os Mínimos Quadrados Parciais farão o que você deseja. A biblioteca "pls" em R é o que eu tradicionalmente usei. Aqui está um exemplo que cria 3 grupos de 50 pontos, os reúne em um quadro de dados com rótulos de grupo e executa o PLS neles:
fonte