Faz sentido combinar PCA e LDA?

25

Suponha que eu tenha um conjunto de dados para uma tarefa de classificação estatística supervisionada, por exemplo, por meio de um classificador Bayes. Este conjunto de dados consiste em 20 recursos e eu quero reduzi-lo a 2 recursos por meio de técnicas de redução de dimensionalidade, como Análise de Componentes Principais (PCA) e / ou Análise Discriminante Linear (LDA).

Ambas as técnicas estão projetando os dados em um subespaço de recurso menor: com o PCA, eu encontraria as direções (componentes) que maximizam a variação no conjunto de dados (sem considerar os rótulos de classe), e com o LDA eu teria os componentes que maximizavam o intervalo entre separação de classe.

Agora, estou me perguntando se, como e por que essas técnicas podem ser combinadas e se faz sentido.

Por exemplo:

  1. transformando o conjunto de dados via PCA e projetando-o em um novo subespaço 2D
  2. transformação (o já transformado por PCA) do conjunto de dados via LDA para max. separação em sala de aula

ou

  1. ignorando a etapa do PCA e usando os 2 principais componentes de um LDA.

ou qualquer outra combinação que faça sentido.

ameba diz Restabelecer Monica
fonte
2
Não pode haver universal 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.
ttnphns
@SebastianRaschka: Gostaria de saber se minha resposta aqui foi útil ou você tem mais alguma dúvida sobre esses problemas?
Ameba diz Reinstate Monica
@amoeba desculpe, mas não vi a resposta até agora - de alguma forma, deve ter escapado das rachaduras, obrigado!

Respostas:

44

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).ΣW1Σ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,ΣWN1Σ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:

Sobreajuste no LDA

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:

Sobreajuste no LDA e regularização com PCA

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:

ameba diz Restabelecer Monica
fonte
Essa é uma ótima resposta, sério! E, ao explicar a teoria subjacente, você também tem uma boa explicação prática, outra ótima resposta para minha coleção de referências. Muito obrigado!
Eu não entendo a segunda trama, parece-me que as classes não são separados com PCA antes LDA (linha inferior)
Pierree
@PierreE, no segundo gráfico, as classes são geradas de tal forma que quase não são separadas. A separação é pequena. Na linha inferior, você pode ver essa ligeira separação, mas precisa olhar atentamente: concentre-se nas classes azul e vermelho e verá que uma é deslocada para a esquerda e outra para a direita.
Ameba diz Reinstate Monica
OK eu vejo. Eu esqueci que a separação de classes que vemos na linha superior é realmente super adequada. Graças
Pierree
1

Se você tiver um problema de duas classes, o LDA o levará para uma dimensão. Não há razão para fazer o PCA primeiro.

Aaron
fonte
11
Humm, não sigo o seu raciocínio aqui: tenho certeza de que o LDA NÃO o leva à unidimensional, a menos que você escolha. Depende de quantos vetores próprios você deseja reter após classificar os valores próprios, diminuindo os valores. Talvez esteja faltando alguma coisa aqui ... mas não mencionei o número de aulas. Vamos supor que temos 3 classes com 20 recursos cada e quero projetá-las em um subespaço 3D.
11
O único motivo para fazer o PCA primeiro é se a matriz de covariância dentro da classe é singular. Se você tiver 20 recursos e três classes, ele não será singular, portanto, não faça o PCA primeiro.
Aaron
4
assume we have 3 classes. @SebastianRaschka: Então o LDA permitirá no máximo 2 funções discriminantes. O número de valores próprios no LDA é mínimo (num_groups-1, num_features).
ttnphns
@Sebastian O número de funções discriminantes que você escolhe no LDA depende do que você deseja fazer com ele. Como uma transformação espacial, é praticamente como um PCA "supervisionado" e você escolhe quantos quiser. Como método de classificação de separação de hiperplano , o hiperplano é, por definição, da dimensão N-1. Eu poderia fazer uma pergunta sobre o assunto para obter informações adicionais, porém, porque eu ainda não entendo onde é que o min(num_groups-1,num_features)vêm ...
Matthieu
11
@ Matthieu Eu acredito que é por causa da matriz de dispersão entre classes, você a cria adicionando c (c = número de classes) matrizes que possuem classificação 1 ou menos. Portanto, você só pode ter c-1 autovalores diferentes de zero no máximo.