Resumo: O PCA pode ser executado antes do LDA para regularizar o problema e evitar o excesso de ajuste.
Lembre-se de que as projeções de LDA são calculadas por meio de composição automática de , onde e são matrizes de covariância dentro e entre classes. Se houver menos de pontos de dados (onde é a dimensionalidade do seu espaço, ou seja, o número de características / variáveis), então será singular e, portanto, não poderá ser invertido. Nesse caso, simplesmente não há como executar o LDA diretamente, mas se alguém aplicar o PCA primeiro, ele funcionará. O @Aaron fez essa observação nos comentários à sua resposta, e eu concordo com isso (mas discordo da sua resposta em geral, como você verá agora).Σ−1WΣBΣWΣBNNΣW
No entanto, isso é apenas parte do problema. O quadro geral é que o LDA tende muito a super-ajustar os dados. Observe que a matriz de covariância dentro da classe é invertida nos cálculos da LDA; para matrizes de alta dimensão, a inversão é uma operação realmente sensível que só pode ser feita com segurança se a estimativa de for realmente boa. Mas em altas dimensões , é realmente difícil obter uma estimativa precisa de e, na prática, é preciso ter muito mais do que pontos de dados para começar a esperar que a estimativa seja boa. Caso contrário,ΣWN≫1ΣWNΣW será quase singular (ou seja, alguns dos valores próprios serão muito baixos), e isso causará excesso de ajuste, ou seja, separação quase perfeita da classe nos dados de treinamento com desempenho casual nos dados de teste.
Para resolver esse problema, é preciso regularizar o problema. Uma maneira de fazer isso é usar o PCA para reduzir a dimensionalidade primeiro. Existem outros, indiscutivelmente melhores, por exemplo, método LDA regularizado (rLDA) que simplesmente usa com pequeno vez de (isso é chamado de estimador de encolhimento ), mas fazer o PCA primeiro é conceitualmente a abordagem mais simples e geralmente funciona bem.(1−λ)ΣW+λIλΣW
Ilustração
Aqui está uma ilustração do problema de excesso de ajuste. Gerei 60 amostras por classe em 3 classes a partir da distribuição Gaussiana padrão (média zero, variação unitária) em espaços de 10, 50, 100 e 150 dimensões e apliquei o LDA para projetar os dados em 2D:
Observe como, à medida que a dimensionalidade cresce, as classes se tornam cada vez melhores, enquanto na realidade não há diferença entre as classes.
Podemos ver como o PCA ajuda a evitar o sobreajuste, se fizermos as classes ligeiramente separadas. Adicionei 1 à primeira coordenada da primeira classe, 2 à primeira coordenada da segunda classe e 3 à primeira coordenada da terceira classe. Agora eles estão ligeiramente separados, veja a subtrama superior esquerda:
O sobreajuste (linha superior) ainda é óbvio. Porém, se eu pré-processar os dados com o PCA, mantendo sempre 10 dimensões (linha inferior), o excesso de ajustes desaparecerá enquanto as classes permanecerem quase idealmente separadas.
PS. Para evitar mal-entendidos: não estou afirmando que o PCA + LDA é uma boa estratégia de regularização (pelo contrário, eu recomendaria o uso do rLDA), estou apenas demonstrando que é uma estratégia possível .
Atualizar. Um tópico muito semelhante foi discutido anteriormente nos seguintes tópicos com respostas interessantes e abrangentes fornecidas por @cbeleites:
Veja também esta pergunta com algumas boas respostas:
best practice
. O PCA e o LDA, como técnicas de redução de dimensionalidade, são muito diferentes. Às vezes, as pessoas fazem PCA antes da LDA, mas ela tem seus riscos de jogar fora (com os PCs descartados) importantes dimensões discriminatórias. A pergunta que você fez foi realmente feita de alguma forma várias vezes neste site. Por favor, procure "PCA LDA", para ler o que as pessoas disseram.