Quais são as vantagens do PCA do kernel sobre o PCA padrão?


18

Eu quero implementar um algoritmo em um documento que usa o SVD do kernel para decompor uma matriz de dados. Então, eu tenho lido materiais sobre métodos do kernel e PCA do kernel etc. Mas ainda é muito obscuro para mim, especialmente quando se trata de detalhes matemáticos, e eu tenho algumas perguntas.

  1. Por que métodos de kernel? Ou, quais são os benefícios dos métodos do kernel? Qual é o objetivo intuitivo?

    Ele está assumindo que um espaço dimensional muito mais alto é mais realista nos problemas do mundo real e capaz de revelar as relações não lineares nos dados, em comparação com os métodos que não são do kernel? De acordo com os materiais, os métodos do kernel projetam os dados em um espaço de recurso de alta dimensão, mas eles não precisam calcular explicitamente o novo espaço de recurso. Em vez disso, basta calcular apenas os produtos internos entre as imagens de todos os pares de pontos de dados no espaço de recursos. Então, por que projetar em um espaço dimensional mais alto?

  2. Pelo contrário, o SVD reduz o espaço do recurso. Por que eles fazem isso em direções diferentes? Os métodos do kernel buscam dimensão mais alta, enquanto o SVD busca a dimensão mais baixa. Para mim, parece estranho combiná-los. De acordo com o artigo que estou lendo ( Symeonidis et al. 2010 ), a introdução do SVD do Kernel em vez do SVD pode resolver o problema de escassez nos dados, melhorando os resultados.

insira a descrição da imagem aqui

A partir da comparação na figura, podemos ver que o KPCA obtém um vetor próprio com maior variação (valor próprio) que o PCA, suponho? Como para a maior diferença de projeções dos pontos no vetor próprio (novas coordenadas), o KPCA é um círculo e o PCA é uma linha reta; portanto, o KPCA obtém uma variação maior do que o PCA. Então isso significa que o KPCA obtém componentes principais mais altos que o PCA?


3
Mais um comentário do que uma resposta: o KPCA é muito semelhante ao Spectral Clustering - em algumas configurações é o mesmo. (veja, por exemplo, cirano.qc.ca/pdf/publication/2003s-19.pdf ).

Desculpe pela resposta tardia. Sim, sua resposta é muito esclarecedora.
Tyler傲来国主

Respostas:


24

O PCA (como uma técnica de redução de dimensionalidade) tenta encontrar um subespaço linear de baixa dimensão ao qual os dados estão confinados. Mas pode ser que os dados estejam confinados ao subespaço não linear de baixa dimensão . O que acontecerá então?

Dê uma olhada nesta figura, tirada do livro didático "Reconhecimento de padrões e aprendizado de máquina" de Bishop (Figura 12.16):

PCA do kernel do livro de ML do Bishop

Os pontos de dados aqui (à esquerda) estão localizados principalmente ao longo de uma curva em 2D. O PCA não pode reduzir a dimensionalidade de dois para um, porque os pontos não estão localizados ao longo de uma linha reta. Mas ainda assim, os dados estão "obviamente" localizados em torno de uma curva não linear unidimensional. Portanto, embora o PCA falhe, deve haver outra maneira! E, de fato, o PCA do kernel pode encontrar essa variedade não linear e descobrir que os dados são de fato quase unidimensionais.

Isso é feito mapeando os dados em um espaço de maior dimensão. Isso pode realmente parecer uma contradição (sua pergunta # 2), mas não é. Os dados são mapeados em um espaço de maior dimensão, mas acabam se situando em um subespaço de menor dimensão. Então você aumenta a dimensionalidade para poder diminuí-la.

A essência do "truque do kernel" é que não é preciso considerar explicitamente o espaço dimensional mais alto; portanto, esse salto potencialmente confuso na dimensionalidade é realizado inteiramente à paisana. A ideia, no entanto, permanece a mesma.


Boa resposta. Apenas uma pergunta de acompanhamento. Você disse que se os pontos de dados não são lineares, como mostrado na figura acima, o PCA não funcionará e o PCA do kernel é necessário. Mas como sabemos em primeiro lugar se os pontos de dados não são lineares para o conjunto de dados que possui mais de 4 recursos (o caso do mundo real). Para visualizar esses dados, precisamos reduzir a dimensionalidade, o que significa que acabamos usando o PCA para reduzir a dimensionalidade, o que seria errado, pois os dados podem ser não lineares e usamos o PCA normal para visualizar. Então, como saber se os dados são não lineares para usar o PCA do kernel em vez do PCA
Baktaawar

Obrigado, @user. Eu acho que isso depende da aplicação do PCA / kPCA. Por exemplo, se for aplicado como uma etapa de pré-processamento para algum algoritmo de classificação, regressão ou clustering, poderá-se avaliar o desempenho do PCA vs. kPCA e do desempenho desse algoritmo subsequente.
amoeba diz Reinstate Monica

1
Obrigado @amoeba. Mas acho que o que eu queria perguntar era que, como você mencionou acima, precisamos usar o kPCA quando os dados não são lineares, como saber se os dados têm uma linearidade não linear se não. de recursos é superior a 3 ?. Não podemos visualizar que sem atingir dimensões e, em seguida, é como um problema da galinha e do ovo
Baktaawar

2
@Baktaawar Se você estiver fazendo aprendizado de máquina, não visualize, deixe seu modelo aprender sozinho. Basicamente, inclua uma etapa KPCA em seu loop interno de reamostragem e teste os kernels como parâmetros, incluindo o kernel linear e quaisquer outros que você queira / possa testar.
Firebug
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.