Existe algum valor na redução da dimensionalidade de um conjunto de dados em que todas as variáveis ​​são aproximadamente ortogonais?

11

Suponhamos que tem uma conjunto de dados -dimensional onde os dimensões são aproximadamente ortogonal (ter correlação zero).NN

Existe alguma utilidade em termos de:

  1. Visualização
  2. Representação (para eficiência do classificador)
  3. Ou outros critérios

executar redução de dimensionalidade nos dados?

user1172468
fonte
3
Resposta parcialmente relevante stats.stackexchange.com/a/92803/3277
ttnphns

Respostas:

8

Queria esclarecer um comentário que deixei sob a resposta de @ Peter-Flom, mas provavelmente vale a pena escrever uma resposta. Até que ponto você pode reduzir dimensões executando o PCA em dados quase ortogonais? A resposta é "depende" se você executa o PCA na matriz de correlação ou covariância .

Se você estiver usando o PCA na matriz de correlação, como isso será um pouco diferente da matriz de identidade, haverá uma simetria esférica que torna todas as direções "igualmente informativas". Reescalonar as variações de suas variáveis ​​para uma anterior ao PCA é uma abordagem matematicamente equivalente que produzirá o mesmo resultado. Embora a saída do PCA identifique alguns componentes com variação ligeiramente mais baixa que outros, isso pode ser atribuído (se assumirmos correlação zero na população) a nada mais do que variação aleatória na amostra, portanto, não seria um bom motivo para descartar esses componentes. De fato, essa disparidade entre os desvios padrão dos componentes deve diminuir em magnitude à medida que aumentamos o tamanho da amostra. Podemos confirmar isso em uma simulação.

set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
    x1 <- rnorm(n, mean=0, sd=sd1)
    x2 <- rnorm(n, mean=0, sd=sd2)
    x3 <- rnorm(n, mean=0, sd=sd3)
    x4 <- rnorm(n, mean=0, sd=sd4)
    prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}

Resultado:

> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion  0.2882 0.5505 0.7887 1.0000
> 
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion  0.2504 0.5006 0.7505 1.0000

No entanto, se você fizer o PCA usando a matriz de covariância em vez da matriz de correlação (equivalentemente: se não escalarmos os desvios padrão para 1 antes de aplicar o PCA), a resposta dependerá da dispersão de suas variáveis. Se suas variáveis ​​têm a mesma variação, ainda temos simetria esférica, portanto não há uma "direção privilegiada" e a redução dimensional não pode ser alcançada.

> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion  0.2507 0.5009 0.7508 1.0000

Porém, com uma mistura de variáveis ​​de alta e baixa variância, a simetria é mais como um elipsóide com alguns eixos largos e outros finos. Nesta situação, haverá componentes de alta variância carregando nas variáveis ​​de alta variância (onde o elipsóide é largo) e componentes de baixa variância carregando nas variáveis ​​de baixa variância (em quais direções o elipsóide é estreito).

> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion  0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
      PC1   PC2    PC3    PC4
x1  0.460 0.888  0.000  0.000
x2 -0.888 0.460  0.000  0.000
x3  0.000 0.000 -0.747 -0.664
x4  0.000 0.000  0.664 -0.747

Se as variáveis ​​tiverem variações muito diferentes (geometricamente um elipsóide novamente, mas com todos os eixos diferentes), a ortogonalidade permitirá que o primeiro PC carregue muito na variável de maior variação e assim por diante.

> pc1234 <-  princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion  0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
     PC1    PC2    PC3   PC4
x1 0.000  0.000 -0.001 1.000
x2 0.001 -0.001  1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000  0.003 -0.001 0.000

Nos dois últimos casos, houve componentes de baixa variação que você pode considerar jogar fora para obter uma redução dimensional, mas fazer isso é exatamente equivalente a jogar fora as variáveis ​​de menor variação em primeiro lugar . Essencialmente, a ortogonalidade permite identificar componentes de baixa variação com variáveis ​​de baixa variação; portanto, se você pretende reduzir a dimensionalidade dessa maneira, não está claro se você se beneficiaria do uso do PCA para fazer isso.

Nota bene: o tempo gasto discutindo o caso em que as variáveis ​​não são redimensionadas para a variação unitária - isto é, usando a covariância em vez da matriz de correlação - não deve ser tomada como uma indicação de que essa abordagem é de alguma forma mais importante, e certamente não que é melhor". A simetria da situação é simplesmente mais sutil, sendo necessária uma discussão mais longa.

Silverfish
fonte
Minha resposta talvez responda melhor ao problema apresentado pelo pôster original (que era sobre o que o PCA pode ou não pode alcançar), o que presumo explica o sinal verde! Mas peço aos leitores que analisem a resposta de @ RyanBressler, que fornece soluções alternativas .
Silverfish
11

Você pode tentar um método de aprendizado múltiplo de redução de dimensionalidade não linear mais geral, como incorporação localmente linear, mapas automáticos da Lapônia ou t-SNE.

É perfeitamente possível que exista um subespaço de dimensão inferior (coletor) em seus dados de uma maneira que deixe 0 correlação entre as dimensões da base N. Por exemplo, um círculo de pontos sobre a origem ou forma de onda, como visto aqui . O PCA não atenderá, mas outros métodos o farão.

Observar esses métodos é especialmente interessante e comum para visualização e análise exploratória de dados. Para uso em um classificador ou outro modelo, você precisará se restringir aos métodos que podem ser adequados ao treinamento e aplicados no teste, o que exclui muitos desses métodos. Se esse for seu principal interesse, você também deve procurar métodos para pré-treinamento não supervisionado e engenharia de recursos (supervisionada).

Ryan Bressler
fonte
6

Se todas as N variáveis ​​forem aproximadamente ortogonais, a redução da dimensão fará uma redução relativamente pequena. Por exemplo, emR

set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)

df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)

pcsol <- princomp(df1)
loadings(pcsol)

Em essência, "ortogonal" implica "já em seu menor tamanho".

Peter Flom - Restabelece Monica
fonte
2
você tem um pequeno erro de digitação em "orthongonal"
Silverfish
6
@ Silverfish, orthon é "um humanóide de estatura média, com longos cabelos loiros e pele bronzeada, usando sapatos marrom-avermelhados". Embora você possa estar certo nisso, Pedro quis dizer diferente.
ttnphns
4
Vale ressaltar que essa resposta depende de como as variáveis ​​são dimensionadas? Se houver variáveis de alta e baixa de variância e fazemos PCA na covariância não matriz de correlação, então não vai ser componentes de baixa variância que podem ser descartados (ortogonalidade significa apenas que as suas cargas fortemente identificá-los com uma variável de baixa variância cada). Faça as seguintes mudanças ligeiras: x1<-rnorm(100, sd=0.1)e pcsol <- princomp(df1, cor=FALSE)e há uma diferença, especialmente se olharmos para summary(pcsol). (Eu não estou sugerindo cov é uma abordagem melhor do que cor, só que é possível.)
Silverfish
Corrigi o erro de digitação, obrigado. Além disso, um bom argumento sobre o dimensionamento.
Peter Flom - Restabelece Monica
2
Isso não se aplica apenas à redução de dimensão que depende da covariância? Por que, por exemplo, o dimensionamento multidimensional não reduz aqui?
shadowtalker