Análise de componentes principais: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
ajustes conforme WP:CHECKWIKI, typos fixed: Indices → Índices utilizando AWB
Linha 5:
[[Imagem:GaussianScatterPCA.png|thumb|right|PCA de uma [[distribuição Gaussiana multivariada]] centrada em (1,3) com um desvio padrão de 3 aproximadamente na direção (0.878, 0.478) e desvio padrão 1 na direção ortogonal. Os vetores na figura são os autovetores da [[matriz de covariância]] multiplicados pela raiz quadrada do autovalor correspondente, e transladados de forma a iniciarem na média.]]
 
'''A Análise de Componentes Principais''' ou ''principal component analysis'' (PCA) é um procedimento matemático que utiliza uma [[transformação ortogonal]] para converter um conjunto de observações de variáveis possívelmentepossivelmente correlacionadas a um conjunto de valores de variáveis [[Correlação e dependência|linearmente descorrelacionadas]] chamadas '''componentes principais'''. O número de componentes principais é menor ou igual ao número de variáveis originais. Esta transformação é definida de forma que o primeiro componente principal tem a maior [[variância]] possível (ou seja, é responsável pelo máximo de variabilidade nos dados), e cada componente seguinte, por sua vez, tem a máxima variância sob a restrição de ser ortogonal a (i.e., não-correlacionado com) os componentes anteriores. Os componentes principais são garantidamente independentes apenas se os dados forem [[multivariate normal distribution|normalmente distribuídos]] (conjuntamente). O PCA é sensível à escala relativa das variáveis originais. Dependendo da área de aplicação, o PCA é também conhecido pela ''' transformada [[Karhunen–Loève theorem|Karhunen–Loève]]''' ('''KLT''') discreta,'''transformada de [[Harold Hotelling|Hotelling]]''' ou '''decomposição ortogonal própria''' ('''POD''').
 
O PCA foi inventado em 1901 por [[Karl Pearson]].<ref>{{Cite journal| author = Pearson, K. | authorlink=Karl Pearson |year = 1901 | title = On Lines and Planes of Closest Fit to Systems of Points in Space | journal = Philosophical Magazine | volume = 2 | issue = 6 | pages = 559–572 | url = http://stat.smmu.edu.cn/history/pearson1901.pdf |format=PDF}}</ref> Agora, é mais comumente usado como uma ferramenta de [[exploratory data analysys|análise exploratória de dados]] e para fazer [[predictive modeling|modelos preditivos]]. PCA pode ser feito por [[Eigendecomposition of a matrix|decomposição em autovalores]] de uma matriz de [[covariância]] (ou de [[correlação]]) ou por [[decomposição em valores singulares]] de uma [[Data matrix (multivariate statistics)|matrixmatriz de dados]], geralmente depois de centralizar (e normalizar ou usar pontuações-Z) a matriz de dados para cada atributo..<ref>{{Cite journal| author = Abdi. H., & Williams, L.J. | authorlink=AbdiWilliams |year = 2010 | title = Principal component analysis. | journal = Wiley Interdisciplinary Reviews: Computational Statistics, | volume = 2 | pages = 433-459}}</ref> Os resultados de PCA são geralmente discutidos em termos pontuações de componentes, também chamados de pontuações de fatores (os valores de variável transfomadostransformados correspondem a um ponto de dado particular), e carregamentos (''loadings''), i.e., o peso pelo qual cada variável normalizada original deve ser multiplicada para se obter a pontuação de componente.<ref>Shaw P.J.A. (2003) ''Multivariate statistics for the Environmental Sciences'', Hodder-Arnold. ISBN 0-3408-0763-6. {{Page needed|date=June 2011}}</ref>
 
O PCA é a mais simples das verdadeiras análises multivariadas por [[autovetor]]es. Com frequência, sua operação pode ser tomada como sendo reveladora da estrutura interna dos dados, de uma forma que melhor explica a variânicavariância nos dados. Se visualizarmos um conjunto de dados multivariados em um espaço de alta [[Dimension (metadata)|dimensão]], com 1 eixo por variável, o PCA pode ser usado para fornecer uma visualização em dimensões mais baixas dos mesmos dados, uma verdadeira "sombra" do objeto original quando visto de seu ponto mais informativo. Isto é feito usando-se apenas os primeiros componentes principais, de forma que a dimensionalidade dos dados tranformadostransformados é reduzida.
 
O PCA é fortemente ligado à [[factor analysis|análise de fatores]]; de fato, alguns pacotes estatísticos propositadamente confluem as técnicas. A verdadeira análise de fatores faz assunções diferentes sobre a estrutura subjacente dos dados e encontra os autovetores de uma matriz levemente diferente.
 
== Detalhes ==
Linha 17:
</ref> como uma [[transformação linear]] [[orthogonal transformation|ortogonal]] que transforma os dados para um novo [[sistema de coordenadas]] de forma que a maior variância por qualquer projeção dos dados fica ao longo da primeira coordenada (o chamado ''primeiro componente''), a segunda maior variância fica ao longo da segunda coordenada, e assim por diante.
 
Seja a [[Matriz (matematicamatemática)|matriz]] de dados, '''X'''<sup>T</sup>, com [[média empírica]] nula (i.e., a média empírica (amostral) da distribuição foi subtraída dos dados), onde cada uma das ''n'' linhas representa uma repetição diferente do experimento, e cada uma das ''m'' colunas dá um tipo particuclarparticular de dado (e.g., os resultados de uma determinada sonda). (Note-se que '''X'''<sup>T</sup> é definida aqui e não '''X''' própriamentepropriamente dito, e o que estamos chamando de '''X'''<sup>T</sup> é por vezes denotado por '''X'''.) A [[decomposição em valores singulares]] de '''X''' é '''X''' = '''WΣV<sup>T</sup>''', onde a matriz ''m'' &times; ''m'' '''W''' é a matriz de [[autovetor]]es da [[matriz de covariância]] '''XX'''<sup>T</sup>, a matriz '''Σ''' é ''m'' &times; ''n'' e é uma [[matriz diagonal]] retangular com números reais não-negativos na diagonal, e a matriz ''n'' &times; ''n'' '''V''' é a matriz de autovetores de '''X'''<sup>T</sup>'''X'''. Assim, a transformação PCA que preserva a dimensionalidade (i.e., que dá o mesmo número de componentes principais do que o número de variáveis originais) é dada por:
 
: <math>
Linha 27:
</math>
 
'''V''' não é definida únicamenteunicamente no caso usual de ''m'' &lt; ''n'' &minus; 1, mas '''Y''' vai, com frequência, ser definida únicamenteunicamente. Como '''W''' (por definição da [[decomposição em valores singulares|SVD]] de uma matriz real) é uma [[matriz ortogonal]], e cada linha de '''Y'''<sup>T</sup> é simplesmente uma rotação da linha correspondente de '''X'''<sup>T</sup>. A primeira coluna de '''Y'''<sup>T</sup> é feita das "pontuações" dos casos reltivamenterelativamente ao componente "principal", a próxima coluna tem a pontuação relativamente ao segundo componente "principal", e assim por diante.
 
Se desejarmos uma representação de dimensionalidade reduzida, pode-se projetar '''X''' ao espaço reduzido definido apenas pelos primeiros ''L'' vetores singulares, '''W'''<sub>L</sub>:
Linha 37:
: <math>\mathbf{X}\mathbf{X}^\top = \mathbf{W}\mathbf{\Sigma}\mathbf{\Sigma}^\top\mathbf{W}^\top</math>
 
Dado um conjunto de pontos no [[espaço euclidiano]], o primeiro componente principal corresponde a uma linha que passa através da média multidimensional e minimiza a soma dos quadrados das distâncias dos pontos à linha. O segundo componente principal corresponde ao mesmo conceito, depois de subtrair-se toda a correlação com o primeiro componente principal dos pontos. Os valores singulares (em '''Σ''') são as raízes quadradas dos [[autovalor]]es da matriz '''XX'''<sup>T</sup>. Cada autovalor é proporcional à porção de "variância" (mais precisamente da soma dos quadrados das distâncias dos pontos à média multidimensional dos mesmos) que é correlacionada com cada autovetor. A soma de todos os autovalores é igual à soma dos quadrados dos pontos à média multidimensional dos mesmos. O PCA essencialmente rotaciona o conjunto de pontos em torno da média de forma a alinhá-los com os componentes principais. Isto move o máximo possível de variância (usando uma transformação ortogonal) a algumas das primeiras dimensões. Os valores nas dimensões restantes, portanto, tendem a serem pequenos e podem ser descartados com o mínimo de perda de informação. O PCA é comumente utilizado dessa maneramaneira para [[redução de dimensionalidade]]. O PCA tem a distinção de ser a melhor transformação ortogonal para manter o subspaçosubespaço que tem a maior "variância" (como definida ha pouco). No entanto, essa vantagem tem o preço de exigir mais recursos computacionais se comparado com, por exemplo, a [[transformada discreta de consenoscossenos]] (quando esta também for aplicável). Técnicas de [[dimensão de reducionalidade não-linear]] tendem a ser ainda mais dispendiosas (computacionalmente) do que o PCA.
 
O PCA é sensível à escala das variáveis. Se tivermos apenas duas variáveis de [[variâncias amostrais]] iguais e positivamente correlacionadas, então o PCA irá consistir de uma rotação de 45°, e os "carregamentos" (ou '''loadings''') para as duas variáveis relativos ao componente principal serão iguais. Mas se multiplicarmos todos os valores da primeira variável por 100, então o componente principal será quase igual a essa variável, com uma pequena contribuição da outra variável, ao passo que o segundo componente será quase que alinhado com a segunda variável original. Isso significa que, sempre que as diferentes variáveis têm unidades diferentes (como massa e temperatura), o PCA é de certa forma um método arbitrário de análise de dados. Por exemplo, resultados diferentes seriam obtidos se Farenheit fosse usado em vez de Celsius. Note-se que o artigo original de Pearson foi intitulado "On Lines and Planes of Closest Fit to Systems of Points in Space" – "in space" (no espaço) implica o espaço físico euclidiano, no qual tais ressalvas não ocorrem. Uma maneira de tornar o PCA menos arbitrário é usar as variáveis renormalizadas para variância unitária.
 
== Discussão ==
Subtração de média, ou "centralização na média", é necessária no PCA para garantir que os primeiros componentes principais descrevam a direção de máxima variância. Se a subtração da média não for feita, os primeiros componentes principais podem corresponder mais ou menos à média dos dados. Uma média de zero é necessária para encontrar a base que minimiza o [[Minimum mean square error|erro quadrado médio]] da aproximação dos dados.<ref>A. A. Miranda, Y. A. Le Borgne, and G. Bontempi. [http://www.ulb.ac.be/di/map/yleborgn/pub/NPL_PCA_07.pdf New Routes from Minimal Approximation Error to Principal Components], Volume 27, Number 3 / June, 2008, Neural Processing Letters, Springer</ref>
 
Assumindo-se uma [[média empírica]] nula, ou seja, a média empírica da distribuição foi subtraída do conjunto de dados, o componente principal ''w''<sub>1</sub> de um conjunto de dados '''X''' pode ser definido como:
Linha 60:
\right)^2 \right\}.</math>
 
O PCA é equivalente a [[empirical orthogonal functions|funções ortogonais empíricas]] (EOF), um nome que é usado em [[meteorologia]].
 
Uma [[Rede neural artificial|rede neural]] ''[[autoencoder]]'' com uma camada linear escondida é similar ao PCA. À convergência, os vetores de peso dos ''K'' neurônios na camada escondida formarão uma base para o espaço formado pelos primeiros ''K'' componentes principais. Diferente do PCA, essa técnica não necessariamente produz [[vetores ortogonais]].
 
O PCA é uma técnica fundamental em [[reconhecimento de padrões]]. No entandoentanto, não é otimizado para separabilidade de classes.<ref>{{Cite book| author=Fukunaga, Keinosuke | title = Introduction to Statistical Pattern Recognition |publisher=Elsevier | year = 1990 | url=http://books.google.com/books?visbn=0122698517| isbn=0122698517}}</ref> Uma alternativa é a [[linear discriminant analysis|LDA]], que leva esse aspecto em consideração.
 
== Propriedades e limitações do PCA ==
Linha 72:
 
== Calculando o PCA através do método da covariância ==
O cálculo do PCA udandousando o método da covariância é descrito nesta seção.<ref>Informações adicionais podem (verser tambémlidas [http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf hereaqui]).</ref> Note-se, porém, que é melhor usar a [[decomposição em valores singulares]] (com software padrão de álgebra linear).
 
O objetovoobjetivo é transformar um dado conjunto de dados '''X''' de dimensão ''M'' num conjunto alternativo '''Y''' de dimensão menor ''L''. Equivalentemente, deseja-se a matriz '''Y''', onde '''Y''' é a [[Karhunen–Loève transform]] (KLT) da matriz '''X''':
 
: <math> \mathbf{Y} = \mathbb{KLT} \{ \mathbf{X} \} </math>
Linha 90:
:: <math>u[m] = {1 \over N} \sum_{n=1}^N X[m,n] </math>
 
=== Calcule os deviosdesvios da média ===
A subtração de média é uma parte fundamental no cálculo de uma base de componentes principais que minimize o erro médio da aproximação dos dados.<ref>A.A. Miranda, Y.-A. Le Borgne, and G. Bontempi. [http://www.ulb.ac.be/di/map/yleborgn/pub/NPL_PCA_07.pdf New Routes from Minimal Approximation Error to Principal Components], Volume 27, Number 3 / June, 2008, Neural Processing Letters, Springer</ref> Logo, centralizam-se os dados da seguinte forma:
* Subtraia o vetor de média empírica '''u''' de cada coluna da matriz de dados '''X'''.
Linha 111:
 
=== Encontra-se os autovetores e autovalores da matriz de covariância ===
* Calcula-se a matriz '''V''' de [[autovetoautovetor]]reses que [[matriz diagonalizável|diagonaliza]] a matriz de covariância '''C''':
 
:: <math>\mathbf{V}^{-1} \mathbf{C} \mathbf{V} = \mathbf{D} </math>
 
: onde '''D''' é a [[matriz diagonal]] de [[autovalor|lautovaloresautovalores]] de '''C'''. Esse passo tipicamente involveenvolve o uso de um método numérico para o cálculo de autovetores e autovalores. Tais algoritmos são amplamente disponíveis como pacotes da maioria dos sistemas de [[álgebra matricial]], como o [[Scilab]], o [[R (linguagem de programação)]], [[Mathematica]],<ref>[http://reference.wolfram.com/mathematica/ref/Eigenvalues.html Eigenvalues function] Mathematica documentation</ref> [[SciPy]], [[GNU Octave]], bem como [[VXL]] e [[OpenCV]].
* A matriz '''D''' toma a forma de uma matriz diagonal ''M'' &times; ''M'', onde
:: <math>D[p,q] = \lambda_m \qquad \text{para } p = q = m</math>
Linha 144:
 
=== Converte-se os dados originais para pontuações-Z ===
* Criar um vetor desvio padrão ''M'' &times; 1 '''s''' da raízraiz quadrada de cada elemento ao longo da diagonal da matriz de covariância '''C''':
:: <math> \mathbf{s} = \{ s[m] \} = \{ \sqrt{C[m,m]} \} \qquad \text{for } m = 1, \ldots, M </math>
* Calcular a matriz ''M'' &times; ''N'' de [[standard score|pontuações-Z]]:
Linha 155:
:: <math> \mathbf{Y} = \mathbf{W}^* \cdot \mathbf{Z} = \mathbb{KLT} \{ \mathbf{X} \}.</math>
* '''W*''' é a [[conjugada transposta]] da matriz de autovetores.
* As colunas da matriz '''Y''' representam as [[Karhunen–Loevetransformadas transformde Karhunen–Loeve]]s (KLT) dos vetores de dados nas colunas da matriz &nbsp;'''X'''.
 
== Software/código fonte ==
Linha 177:
retorne <math>\mathbf{p}</math>
 
Esse algoritmo é simplesmente uma maneira eficiente de calcular '''XX<sup>T</sup>p''', normalizando, e colocando-se o resultado de volta em '''p''' (''[[:en:Power iteration]]''). Ele evita as ''nm''² operações de cálculo da matriz de covari6anciacovariância.
'''p''' ficará típicamentetipicamente próximo à primeira componente principal de '''X<sup>T</sup>''' dentro de poucas iterações, ''c''. (A magnitude de '''t''' será maior depois de cada iteração. A convergência será detectada quando aumenta muito pouco relativo à precisão da máquina.)
 
Componentes principais subsequentes podem ser calculados subtraindo-se o componente '''p''' de '''X<sup>T</sup>''' (ver [[Gram–Schmidt]]) e então repretindorepetindo-se tal algoritmo para encontrar a próxima componente principal. No entanto, esta estratégia simplista não é estável numéricamentenumericamente se mais de um pequeno número de componentes principais são exigidos, porque imprecisões nos cálculos afetarão aditivamente as estimativas de componentes principais subsequentes. Métodos mais avançados elaboram na ideia básica, como no caso do similar ''[[:en:Lanczos algorithm]]''.
 
Uma forma de se calcular o autovalor que corresponde a cada componente principal é medir a diferença na soma de distâncias ao quadrado entre as linhas e a média, antes e depois de subtrair-se o componente principal. O autovalor que corresponde ao componente que foi removido é igual a essa diferença.
Linha 225:
 
== Generalizações ==
=== Generalizações Nãonão-lineares ===
[[Imagem:Elmap breastcancer wiki.png|thumb|300px| Linear PCA versus nonlinear Principal Manifolds<ref>A. N. Gorban, A. Y. Zinovyev, [http://arxiv.org/abs/0809.0490 Principal Graphs and Manifolds], In: Handbook of Research on Machine Learning Applications and Trends: Algorithms, Methods and Techniques, Olivas E.S. et al Eds. Information Science Reference, IGI Global: Hershey, PA, USA, 2009. 28-59.</ref> para [[visualização]] de dados de [[microarray]] de [[câncer de mama]]: a) Configuração de nós e superfície principal 2D na variedade linear 3D de PCA. O conjunto de dados é curvo e não pode ser adequadamente mapeado num plano principal 2D; b) A distribuição nas coordenadas não-lineares internas da superfície principal (ELMap2D) junto com uma estimativa da densidade de pontos; c) O mesmo que b), mas para a variedade PCA 2D (PCA2D). O subtipo de câncer de mama "basal" é melhor lvisualizadovisualizado com ELMap2D e algumas características da distribuição tornam-se melhor resolvidas em comparação ao PCA2D. Variedades principais são produzidas pelo algoritmo de ''[[:en:elastic map]]s''. Há dados disponíveis para competição pública.<ref>Wang, Y., Klijn, J.G., Zhang, Y., Sieuwerts, A.M., Look, M.P., Yang, F., Talantov, D., Timmermans, M., Meijer-van Gelder, M.E., Yu, J. et al.: Gene expression profiles to predict distant metastasis of lymph-node-negative primary breast cancer. Lancet 365, 671-679 (2005); [http://www.ihes.fr/~zinovyev/princmanif2006/ Data online]</ref>]]
 
A maioria dos métodos modernos para ''[[:en:nonlinear dimensionality reduction]]'' encontram suas raízes teóricas e algorítmicas no PCA ou K-means. A ideia original de Pearson era tomar uma reta (ou plano) que seja o "melhor ajuste" a um conjunto de pontos/dados. '''[[Curvas]] principais e [[variedade]]s'''<ref>A. Gorban, B. Kegl, D. Wunsch, A. Zinovyev (Eds.), [http://pca.narod.ru/contentsgkwz.htm Principal Manifolds for Data Visualisation and Dimension Reduction,]
Linha 238:
 
=== Robustez - PCA com pesos ===
Apesar do PCA encontrar o método matematicamente ótimo (no sentido de minimizar o erro quadrático), ele é sensível a ''[[:en:outlier]]s'' nos dados, que produzem grandes erros que o PCA tenta evitar. Portanto, é de praxe remover os ''outliers'' ao calcular o PCA. No entanto, em alguns contextos, os ''outliers'' podem ser difíceis de se indentificaridentificar de antemão. Por exemplo, em algoritmos de [[mineração de dados]] como ''[[:en:correlation clustering]]'', a atribuição de pontos a clusters e ''outliers'' não é conhecida de antemão. Uma generalização proposta recentemente de PCA <ref>{{cite doi | 10.1007/978-3-540-69497-7_27 }}</ref> baseada em um '''PCA com pesos''' aumenta a robustez, associando pesos diferentes aos dados de acordo com sua relevância estimada.
 
== Ver também ==