Eu tenho um conjunto de dados para o qual tenho vários conjuntos de rótulos binários. Para cada conjunto de rótulos, treino um classificador, avaliando-o por validação cruzada. Quero reduzir a dimensionalidade usando a análise de componentes principais (PCA). Minha pergunta é:
É possível executar o PCA uma vez para todo o conjunto de dados e usar o novo conjunto de dados de menor dimensionalidade para validação cruzada, conforme descrito acima? Ou preciso fazer um PCA separado para cada conjunto de treinamento (o que significaria fazer um PCA separado para cada classificador e para cada dobra de validação cruzada)?
Por um lado, o PCA não faz uso dos rótulos. Por outro lado, ele usa os dados de teste para fazer a transformação, então, receio que isso possa influenciar os resultados.
Devo mencionar que, além de me poupar algum trabalho, fazer o PCA uma vez no conjunto de dados inteiro permitiria visualizar o conjunto de dados para todos os conjuntos de etiquetas de uma só vez. Se eu tiver um PCA diferente para cada conjunto de etiquetas, precisarei visualizar cada conjunto de etiquetas separadamente.
fonte
caret
pacote: Validação cruzada do PCA e k-fold no Caret .Respostas:
Para medir o erro de generalização, é necessário fazer o último: um PCA separado para cada conjunto de treinamento (o que significaria fazer um PCA separado para cada classificador e para cada dobra CV).
Você aplica a mesma transformação ao conjunto de testes: ou seja, você não faz um PCA separado no conjunto de testes! Você subtrai a média (e, se necessário, divide pelo desvio padrão) do conjunto de treinamento, conforme explicado aqui: Centralize zero o conjunto de testes após o PCA no conjunto de treinamento . Em seguida, você projeta os dados nos PCs do conjunto de treinamento.
Você precisará definir um critério automático para o número de PCs a serem usados.
Como é apenas uma primeira etapa de redução de dados antes da classificação "real", o uso de alguns PCs em excesso provavelmente não afetará o desempenho. Se você tem uma expectativa de quantos PCs seriam bons com a experiência, talvez você possa usá-lo.
Você também pode testar posteriormente se foi necessário refazer o PCA para cada modelo substituto (repetindo a análise com apenas um modelo PCA). Eu acho que vale a pena relatar o resultado desse teste.
Certa vez, medi o viés de não repetir o PCA e constatei que, com meus dados de classificação espectroscópica, detectava apenas metade da taxa de erro de generalização ao não refazer o PCA para todos os modelos substitutos.
Dito isto, é possível construir um modelo PCA adicional de todo o conjunto de dados para fins descritivos (por exemplo, visualização). Apenas certifique-se de manter as duas abordagens separadas uma da outra.
Mas ele vê os dados. E se a variação entre classes for grande em comparação com a variação dentro da classe, a variação entre classes influenciará a projeção do PCA. Geralmente, a etapa do PCA é concluída porque você precisa estabilizar a classificação. Ou seja, em uma situação em casos adicionais fazer influenciar o modelo.
Se a variação entre as classes for pequena, esse viés não será grande, mas nesse caso o PCA também não ajudaria na classificação: a projeção do PCA não ajudaria a enfatizar a separação entre as classes.
fonte
A resposta a esta pergunta depende do seu projeto experimental. O PCA pode ser executado em todo o conjunto de dados, desde que você não precise construir seu modelo antes de conhecer os dados que está tentando prever. Se você possui um conjunto de dados no qual possui várias amostras, algumas das quais são conhecidas e outras são desconhecidas, e deseja prever as incógnitas, incluindo as incógnitas no PCA, você terá uma visão mais rica da diversidade de dados e pode ajudar a melhorar o desempenho do modelo. Como o PCA não é supervisionado, ele não está "atingindo o pico" porque você pode fazer o mesmo com as amostras desconhecidas e o conhecido.
Se, por outro lado, você tiver um conjunto de dados em que precisará construir o modelo agora e, em algum momento no futuro, obter novas amostras que deverão prever usando esse modelo pré-construído, deverá fazer o PCA separado em cada dobra para ter certeza de que será generalizado. Como nesse caso, não saberemos como os novos recursos podem ser e não podemos reconstruir o modelo para dar conta dos novos recursos, fazer o PCA com os dados de teste seria "máximo". Nesse caso, os recursos e os resultados das amostras desconhecidas não estão disponíveis quando o modelo seria usado na prática; portanto, eles não deveriam estar disponíveis ao treinar o modelo.
fonte
Faça o último, PCA no treinamento definido sempre
No PCA, aprendemos a matriz reduzida: U, que nos ajuda a obter a projeção
Z_train = U x X_train
No momento do teste, usamos o mesmo U aprendido na fase de treinamento e depois calculamos a projeção
Z_test = U x X_test
Portanto, estamos projetando essencialmente o conjunto de testes no espaço reduzido de recursos obtido durante o treinamento.
A suposição subjacente é que o conjunto de testes e trens deve vir da mesma distribuição, o que explica o método acima.
fonte