Eu tenho um grande conjunto de dados e quero realizar uma redução de dimensionalidade.
Agora, em todos os lugares que leio, posso usar o PCA para isso. No entanto, ainda não consigo entender o que fazer depois de calcular / executar o PCA. Em R isso é facilmente feito com o comando princomp
.
Mas o que fazer depois de calcular o PCA? Se decidi usar os primeiros componentes principais, como reduzi exatamente meu conjunto de dados?
Respostas:
Acredito que o que você está recebendo na sua pergunta esteja relacionado ao truncamento de dados usando um número menor de componentes principais (PC). Para tais operações, acho que a função
prcomp
é mais ilustrativa, pois é mais fácil visualizar a multiplicação de matrizes usada na reconstrução.Primeiro, forneça um conjunto de dados sintético
Xt
, você executa o PCA (normalmente você centralizaria amostras para descrever os PCs relacionados a uma matriz de covariância:Nos resultados ou
prcomp
, você pode ver os PCs (res$x
), os valores próprios (res$sdev
) fornecendo informações sobre a magnitude de cada PC e as cargas (res$rotation
).Ao quadrar os valores próprios, você obtém a variação explicada por cada PC:
Por fim, você pode criar uma versão truncada dos seus dados usando apenas os principais PCs (importantes):
Você pode ver que o resultado é uma matriz de dados um pouco mais suave, com recursos de pequena escala filtrados:
E aqui está uma abordagem muito básica que você pode fazer fora da função prcomp:
Agora, decidir quais PCs reter é uma questão separada - uma questão em que eu estava interessado há algum tempo . Espero que ajude.
fonte
prcomp
faz isso por você. Dê uma olhadares$center
eres$scale
. IMHO é menos propenso a erros de usá-los (nenhuma diferença acidental sobre centralizar ou não / dimensionar ou não entre a chamada explícitascale
e aprcomp
chamada).what to do after calculating the PCA
ouhow do I reduce my dataset exactly
? Dado que o OP conduziu o PCA em sua amostra, sua pergunta é o que fazer com ele e o que realmente acontece com essas subamostras; não como fazer PCA. Poderíamos também proporE <- eigen(cov(Sample)); A<- scale(scale=F, Sample) %*% E$vectors
a realização de outra maneira de obter as pontuações (que é realmente o que o princomp fazstats:::princomp.default
).Essas outras respostas são muito boas e detalhadas, mas estou me perguntando se você está realmente fazendo uma pergunta muito mais básica: o que você faz depois de ter seus PCs?
Cada PC simplesmente se torna uma nova variável. Digamos que PC1 seja responsável por 60% da variação total e PC2 seja responsável por 30%. Como são 90% da variação total contabilizada, você pode simplesmente considerar essas duas novas variáveis (PCs) como uma versão simplificada de suas variáveis originais. Isso significa ajustá-los aos modelos, se é disso que você está interessado. Quando chega a hora de interpretar seus resultados, você o faz no contexto das variáveis originais que são correlacionadas com cada PC.
Desculpe se subestimei o escopo da pergunta!
fonte
Praticamente com o PCA, você está usando as projeções dos PCs (as "pontuações") como dados substitutos para sua amostra original. Você faz toda a sua análise das pontuações e depois reconstrói sua amostra original de volta usando os PCs para descobrir o que aconteceu no seu espaço original (que é basicamente a Regressão dos Componentes Principais ). Claramente, se você é capaz de interpretar significativamente seus vetores próprios ("loadings"), então você está em uma posição ainda melhor: você pode descrever o que acontece com sua amostra no modo de variação apresentado por esse carregamento, fazendo inferência diretamente nesse carregamento e não me importo com reconstrução. :)
Em geral, o que você "após calcular o PCA" depende do objetivo da sua análise. O PCA fornece apenas uma subamostra linearmente independente de seus dados, que é a ideal sob um critério de reconstrução de RSS. Você pode usá-lo para classificação, regressão ou ambos, ou, como mencionei, pode querer reconhecer modos ortogonais significativos de variações em sua amostra.
Um comentário : Eu acho que a melhor maneira ingênua de decidir o número de componentes a serem retidos é basear sua estimativa em algum limiar de variação de amostra que você gostaria de reter em sua amostra de dimensionalidade reduzida, em vez de apenas um número arbitrário, por exemplo. 3, 100, 200. Conforme explicado pelo usuário4959, você pode verificar essa variação cumulativa verificando o campo relevante da lista sob o
$loadings
campo no objeto de lista produzido porprincomp
.fonte
pls
princomp {stats}
Depois de executar o PCA, você poderá selecionar os dois primeiros componentes e a plotagem. É possível ver a variação dos componentes usando uma plotagem de scree em R. Também usando a função de resumo com loadings = T, você pode aprimorar a variação de recursos com os componentes.
Você também pode consultar este http://www.statmethods.net/advstats/factor.html e http://statmath.wu.ac.at/~hornik/QFS1/principal_component-vignette.pdf
Tente pensar o que você quer. Você pode interpretar muitas coisas da análise PCA.
Best Abhik
fonte