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:
- transformando o conjunto de dados via PCA e projetando-o em um novo subespaço 2D
- transformação (o já transformado por PCA) do conjunto de dados via LDA para max. separação em sala de aula
ou
- ignorando a etapa do PCA e usando os 2 principais componentes de um LDA.
ou qualquer outra combinação que faça sentido.
fonte
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.Respostas:
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 ΣB N N Σ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,ΣW N≫1 ΣW N Σ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:
fonte
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.
fonte
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).min(num_groups-1,num_features)
vêm ...