Suponha que tenhamos variáveis mensuráveis, , fazemos um número de medições e, em seguida, desejamos realizar uma decomposição de valor singular nos resultados para encontrar os eixos de maior variância para a pontos no espaço dimensional. ( Nota: supor que os meios de já foram subtraídos, assim para todo .)
Agora, suponha que uma (ou mais) das variáveis tenha uma magnitude característica significativamente diferente das demais. Por exemplo, poderia ter valores na gama de enquanto que o resto pode ser em torno de . Isto irá distorcer o eixo de maior variância em direção 'eixo s muito.
A diferença de magnitudes pode ser simplesmente por causa de uma escolha infeliz da unidade de medida (se estamos falando de dados físicos, por exemplo, quilômetros x metros), mas, na verdade, as diferentes variáveis podem ter dimensões totalmente diferentes (por exemplo, peso x volume), então pode não haver uma maneira óbvia de escolher unidades "comparáveis" para elas.
Pergunta: Gostaria de saber se existem formas comuns / padrão de normalizar os dados para evitar esse problema. Estou mais interessado em técnicas padrão que produzem magnitudes comparáveis para para esse fim, em vez de criar algo novo.
EDIT: Uma possibilidade é normalizar cada variável pelo seu desvio padrão ou algo semelhante. No entanto, o seguinte problema aparece: vamos interpretar os dados como uma nuvem de pontos no espaço dimensional. Essa nuvem de pontos pode ser rotacionada e esse tipo de normalização fornecerá resultados finais diferentes (após o SVD), dependendo da rotação. (Por exemplo, no caso mais extremo, imagine girar os dados precisamente para alinhar os eixos principais com os eixos principais.)
Espero que não exista nenhuma maneira invariável de rotação para fazer isso, mas eu apreciaria se alguém pudesse me indicar alguma discussão sobre esse assunto na literatura, especialmente com relação a advertências na interpretação dos resultados.
Respostas:
As três normalizações comuns são centralização, dimensionamento e padronização.
Seja uma variável aleatória.X
A centralização é
O resultante terá ¯ x * = 0 .x∗ x∗¯= 0
A escala é
O resultante terá Σ i x * i 2 = 1x∗ ∑ix∗i2=1 .
Padronizar é centralizar e redimensionar. O resultante terá ¯ x ∗ = 0 e ∑ i x ∗ i 2 = 1 .x∗ x∗¯=0 ∑Eux∗Eu2= 1
fonte
Você está absolutamente certo de que ter variáveis individuais com variações muito diferentes pode ser problemático para o PCA, especialmente se essa diferença for devida a unidades diferentes ou dimensões físicas diferentes. Por esse motivo, a menos que as variáveis sejam todas comparáveis (mesma quantidade física, mesmas unidades), é recomendável executar o PCA na matriz de correlação em vez da matriz de covariância. Veja aqui:
Fazer PCA na matriz de correlação é equivalente a padronizar todas as variáveis anteriores à análise (e depois fazer PCA na matriz de covariância). Padronizar significa centralizar e depois dividir cada variável pelo seu desvio padrão, para que todas elas se tornem de variação unitária. Isso pode ser visto como uma "mudança de unidades" conveniente, para tornar todas as unidades comparáveis.
Pode-se perguntar se às vezes pode haver uma maneira melhor de "normalizar" variáveis; por exemplo, pode-se optar por dividir por uma estimativa robusta da variação, em vez da variação bruta. Isso foi solicitado no segmento a seguir e veja a discussão que se segue (mesmo que nenhuma resposta definitiva tenha sido dada lá):
Finalmente, você estava preocupado que a normalização por desvio padrão (ou algo semelhante) não seja invariável na rotação. Bem, sim, não é. Mas, como o @whuber observou no comentário acima, não há uma maneira invariável de rotação: alterar unidades de variáveis individuais não é uma operação invariável de rotação ! Não há nada com que se preocupar aqui.
fonte
Uma técnica comum antes de aplicar o PCA é subtrair a média das amostras. Se você não fizer isso, o primeiro vetor próprio será a média. Não tenho certeza se você fez isso, mas deixe-me falar sobre isso. Se falamos no código MATLAB: este é
Como pode ser visto na figura, acho que você deve subtrair a média dos dados se quiser analisar melhor a (co) variância. Os valores não ficarão entre 10-100 e 0,1-1, mas a média será zero. As variações serão encontradas como valores próprios (ou quadrado dos valores singulares). Os vetores próprios encontrados não são afetados pela escala de uma dimensão para o caso quando subtraímos a média tanto quanto o caso quando não o fazemos. Por exemplo, testei e observei o seguinte, que diz que subtrair a média pode ser importante para o seu caso. Portanto, o problema pode resultar não da variação, mas da diferença de conversão.
fonte
Para normalizar os dados do PCA, a fórmula a seguir também usou
fonte