Como visualizar a verdadeira dimensionalidade dos dados?

8

Eu tenho um conjunto de dados nominalmente 16-dimensional. Eu tenho cerca de 100 amostras em um caso e cerca de 20.000 em outro. Com base em várias análises exploratórias que conduzi usando PCA e mapas de calor, estou convencido de que a verdadeira dimensionalidade (ou seja, o número de dimensões necessárias para capturar a maior parte do "sinal") é de cerca de 4. Quero criar um slide para esse efeito para uma apresentação. A "sabedoria convencional" sobre esses dados, que pretendo refutar, é que a verdadeira dimensionalidade é uma ou duas.

O que é uma visualização simples e boa para mostrar a verdadeira dimensionalidade de um conjunto de dados? De preferência, deve ser compreensível para pessoas que possuem alguma experiência em estatística, mas não são estatísticos "reais".

dsimcha
fonte
1
Defina "verdadeiro", por favor.
cardeal
@ cardinal: É inevitavelmente subjetivo. Quero a quantidade de dimensões que capturam "a maioria" da variação.
dsimcha
1
isso é bom. Eu só queria saber com certeza o que você estava procurando. Existem exemplos interessantes em estatísticas multivariadas em que, por exemplo, se você deseja encontrar o melhor número de termos para manter um sentido de mínimos quadrados para o PCA, deve escolher uma classificação menor que a verdadeira, ou seja, a classificação real estrutura subjacente a partir da qual os dados foram gerados.
cardeal
Eu encontraria um caso específico em que o uso de 2 dimensões leva a uma resposta ruim, enquanto o uso de 4 dimensões leva a uma boa resposta. Isso ajudará a transmitir seu ponto de vista - as pessoas entendem exemplos. Adicione isso a algumas das coisas mais gerais fornecidas abaixo - "eblow" no scree plot, etc.
probabilityislogic
os "exemplos" seriam aqueles casos que têm grandes pontuações nas terceira e quarta componentes
probabilityislogic

Respostas:

6

Uma abordagem padrão seria fazer o PCA e, em seguida, mostrar um scree plot, que você deveria conseguir tirar isso de qualquer software que escolher. Um pouco de mexer e você pode torná-lo mais interpretável para o seu público em particular, se necessário. Às vezes eles podem ser convincentes, mas geralmente são ambíguos e sempre há espaço para discutir sobre como lê-los, para que uma trama de scree possa (editar: não!) Ser ideal. Vale uma olhada embora.

JMS
fonte
3
@JMS, (+1), especialmente para a nota de cautela nas parcelas de seixos. Eu os chamaria de "padrão", mas também de "má ideia" (de modo geral). Aqui está um conto de advertência e também uma maneira de escolher a classificação com mais segurança, especialmente se MSE for sua métrica. Isso também fornece um exemplo, se bem me lembro, em que a classificação verdadeira é a correta para minimizar o MSE.
cardeal
@ cardinal (+1) Thx pelo link para o artigo de Owen & Perry.
chl
Aparentemente, eu reinventei os scree plots em um ponto, mas não percebi que eles eram chamados de qualquer coisa. Obrigado por me lembrar deles e me informar que eles são "padrão". Como meu objetivo é produzir uma boa visualização, simples, padrão e bom o suficiente vence mais complicado, mas mais ideal.
dsimcha
2
@dsimcha, fiz uma pesquisa rápida no Google e, aparentemente, existe um pacote R que implementa a abordagem no link que forneci. Há um belo artigo de cerca de 20 anos atrás (talvez 30), acredito no The American Statistician , que demonstra claramente as falhas de inferência usando scots "padrão". Vou ver se consigo recuperar o título e postarei um link ou referência. Embora padrão, mas (bastante) falho, seja uma abordagem atraente, especialmente sob restrições de tempo, eu recomendaria gentilmente contra essa mentalidade. Felicidades.
cardeal
1
@JMS Existe um artigo de Zwick e Velicer (1986) que argumenta sobre o uso de análises paralelas (reamostragem de autovalores para testar se os valores observados foram maiores que o esperado por acaso) ou seu critério de MAP sobre scree plot ou a regra da raiz um. Nas simulações, os dois primeiros métodos superam fortemente os demais (por exemplo, precisão de 92% vs. 22%) na identificação do número real de componentes. O pacote R psychimplementa os dois com os gráficos do tipo scree (veja fa.parallel()e VSS()). O artigo é "Comparação de cinco regras para determinar o número de componentes a serem retidos".
lockedoff
4

Uma maneira de visualizar isso seria a seguinte:

  1. Execute um PCA nos dados.
  2. VV
  3. xiVVxi=vi+ci
  4. ||ci||||vi||

2

No Matlab (esquivando-se de todos os sapatos sendo jogados):

lat_d = 2;   %the latent dimension of the generating process
vis_d = 16;  %manifest dimension
n = 10000;   %number of samples
x = randn(n,lat_d) * randn(lat_d,vis_d) + 0.1 * randn(n,vis_d); %add some noise
xmu = mean(x,1);
xc = bsxfun(@minus,x,xmu);    %Matlab syntax for element recycling: ugly, weird.
[U,S,V] = svd(xc);  %this will be slow;
prev = U(:,1:2) * S(1:2,1:2);
prec = U(:,3:end) * S(3:end,3:end);
normv = sqrt(sum(prev .^2,2));
normc = sqrt(sum(prec .^2,2));
scatter(normv,normc);
axis equal;  %to illlustrate the differences in scaling, make axis 'square'

Isso gera o seguinte gráfico de dispersão:

gráfico de dispersão feito pelo código

Se você mudar lat_dpara 4, a linha é menos plana.

shabbychef
fonte
@shabbychef, isso parece pressupor que (a) a estrutura verdadeira é uma variedade linear e (b) as direções de alta variação são as mais importantes.
cardeal
1
@ cardinal Você pode estar confundindo suposição e efeito. A curvatura no coletor será manifestada como curvatura nesses gráficos de dispersão e a magnitude da curvatura será revelada na magnitude da variação vertical nas plotagens. Com efeito, shabbychef está visualizando os dados como residindo aproximadamente dentro de uma vizinhança tubular de um espaço linear de baixa dimensão. Isso não impõe restrições à forma dos dados.
whuber
@shabbyshef +1 para a idéia de decomposição, e, claro, a menção dos sapatos :)
mpiktas
@whuber, @shabbychef, eu provavelmente estava um pouco apressada com o meu comentário inicial, especialmente porque estava longe de um computador na época. Acho que inicialmente também interpretei mal a descrição de shabby e não consegui ver os gráficos. Eles são uma ótima maneira de aumentar um gráfico de pares padrão.
cardeal
1
(s,t)(cos(2πt),sin(2πt),2s/5,t2)stiid uniforme (0,1), ordenado por variação decrescente. As proporções de variância total são 49,2%, 46,5%, 2,9%, 1,4%. As duas linhas inferiores emulam os gráficos de @ shabby. Eles demonstram a natureza quase 2D dos dados enquanto revelam a pequena não linearidade que eu coloquei nele. É isso que você estava pensando?
whuber
0

Eu fiz o mesmo usando PROC Varclus no SAS. A idéia básica é gerar uma solução de 4 clusters, escolher a variável correlacionada mais alta com cada cluster e demonstrar que essa solução de 4 clusters explica mais a variação do que a solução de dois clusters. Para a solução de 2 clusters, você pode usar o Varclus ou os 2 primeiros componentes principais, mas eu gosto do Varclus, pois tudo é explicado por meio de variáveis ​​e não dos componentes. Existe um varclus em R, mas não tenho certeza se ele faz a mesma coisa.

-Ralph Winters

Ralph Winters
fonte