Qual é a intuição por trás do fato de que um SVM com um Kernel Gaussiano possui um espaço infinito de recursos dimensionais?
Qual é a intuição por trás do fato de que um SVM com um Kernel Gaussiano possui um espaço infinito de recursos dimensionais?
Respostas:
Esta resposta explica o seguinte:
A separação perfeita é sempre possível com um kernel gaussiano (desde que dois pontos de classes diferentes nunca sejam exatamente os mesmos) devido às propriedades de localidade do kernel, que levam a um limite de decisão arbitrariamente flexível. Para uma largura de banda suficientemente pequena do kernel, o limite de decisão parecerá que você desenhou pequenos círculos em torno dos pontos sempre que necessário para separar os exemplos positivos e negativos:
(Crédito: curso de aprendizado de máquina on-line de Andrew Ng ).
Então, por que isso ocorre de uma perspectiva matemática?
Considere a configuração padrão: você possui um kernel gaussiano e dados de treinamento ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … , ( x ( n ) , onde os valores de y ( i ) são ± 1 . Queremos aprender uma função classificadora
Agora, como vamos atribuir os pesos ? Precisamos de espaços dimensionais infinitos e um algoritmo de programação quadrática? Não, porque eu só quero mostrar que posso separar os pontos perfeitamente. Então eu faço σ um bilhão de vezes menor que a menor separação | | x ( i ) - x ( j ) | | entre dois exemplos de treinamento, e acabei de definir w i = 1 . Isto significa que todos os pontos de treinamento são um bilhão de sigmas além, tanto quanto o kernel está em causa, e cada ponto controla completamente o sinal de yno seu bairro. Formalmente, temos
onde é algum valor arbitrariamente pequeno. Sabemos ε é pequena porque x ( k ) é um bilhão de sigmas longe de qualquer outro ponto, assim, para todos i ≠ k temos
Desde é tão pequena, y ( x ( k ) ) definitivamente tem o mesmo sinal y ( k ) , e o classificador obtém uma precisão perfeita sobre os dados de treinamento.
O fato de que isso pode ser interpretado como "separação linear perfeita em um espaço de característica dimensional infinito" vem do truque do kernel, que permite interpretar o kernel como um produto interno em um espaço de característica (potencialmente infinito):
onde é o mapeamento do espaço de dados para o espaço de feição. Segue-se imediatamente que a y ( x ), a função como uma função linear no espaço de características:
onde a função linear é definida nos vetores de espaço de característica v como
Esta função é linear em porque é apenas uma combinação linear de produtos internos com vetores fixos. No espaço de características, a fronteira de decisão y ( x ) = 0 é apenas L ( v ) = 0 , o conjunto de nível de uma função linear. Essa é a própria definição de um hiperplano no espaço de recursos.
Nota: Nesta seção, a notação refere-se a um conjunto arbitrário de n pontos e não aos dados de treinamento. Isso é pura matemática; os dados de treinamento não constam nesta seção!
Os métodos do kernel nunca "localizam" ou "calculam" o espaço de recursos ou o mapeamento explicitamente. Métodos de aprendizado de kernel como o SVM não precisam deles para funcionar; eles só precisam a função do kernel K .
Dito isto, é possível escrever uma fórmula para . O espaço recurso que Φ mapeia para é uma espécie de resumo (e potencialmente infinito-dimensional), mas, essencialmente, o mapeamento está apenas usando o kernel para fazer alguma engenharia recurso simples. Em termos de resultado final, o modelo que você acaba aprendendo, usando kernels, não é diferente da engenharia tradicional de recursos popularmente aplicada em regressão linear e modelagem GLM, como tomar o log de uma variável preditora positiva antes de alimentá-lo em uma fórmula de regressão. A matemática está basicamente lá para ajudar a garantir que o kernel funcione bem com o algoritmo SVM, que tem suas vantagens de escarsidade e dimensionamento bem para grandes conjuntos de dados.
Se você ainda estiver interessado, veja como funciona. Essencialmente tomamos a identidade queremos espera, , e construir um espaço e produto interno tal que detém por definição. Para fazer isso, nós definimos um espaço vetorial abstrato V onde cada vector é uma função do espaço as vidas de dados em, X , para os números reais R . Um vetor f em V é uma função formada a partir de uma combinação linear finita de fatias de kernel: f ( x É conveniente escrever f de forma mais compacta como x ( y ) = K ( x , y ) é uma função que fornece uma "fatia" do kernel em x .
O produto interno no espaço não é o produto de ponto comum, mas um produto interno abstrato baseado no kernel:
Com o espaço de recurso definido dessa maneira, é um mapeamento X → V , levando cada ponto x para a "fatia do kernel" naquele ponto:
Você pode provar que é um espaço interno do produto quando K é um kernel definido positivo. Veja este documento para detalhes. (Parabéns para f coppens por apontar isso!)
Essa resposta fornece uma boa explicação de álgebra linear, mas aqui está uma perspectiva geométrica, com intuição e prova.
Para qualquer ponto fixo , temos uma função de fatia do kernel K z ( x ) = K ( z , x ) . O gráfico de K z é apenas uma saliência gaussiana centrada em z. Agora, se o espaço de feição fosse apenas de dimensão finita, isso significaria que poderíamos pegar um conjunto finito de solavancos em um conjunto fixo de pontos e formar qualquer solavanco Gaussiano em qualquer outro lugar. Mas claramente não há como fazer isso; você não pode criar um novo solavanco a partir dos solavancos antigos, porque o novo solavanco pode estar muito longe dos antigos. Portanto, não importa quantos vetores de recursos (bumps) tenhamos, sempre podemos adicionar novos bumps, e no espaço de recursos esses são novos vetores independentes. Portanto, o espaço do recurso não pode ser dimensional finito; tem que ser infinito.
Usamos indução. Suponha que você tenha um conjunto arbitrário de pontos modo que os vetores Φ ( x ( i ) ) sejam linearmente independentes no espaço de feição. Agora encontre um ponto x ( n + 1 ) distinto desses n pontos, de fato a um bilhão de sigmas de todos eles. Afirmamos que Φ ( x ( n + 1 ) )é linearmente independente dos primeiros vetores de características Φ ( x ( i ) ) .
Prova por contradição. Suponha o contrário que
Agora pegue o produto interno dos dois lados com um arbitrário . Pela identidade ⟨ Φ ( z ) , Φ ( x ) ⟩ = , obtemos
Aqui é uma variável livre, portanto, esta equação é uma identidade declarando que duas funções são iguais. Em particular, diz que um gaussiano centrado em x ( n + 1 ) pode ser representado como uma combinação linear de gaussianos em outros pontos x ( i ) . É geometricamente óbvio que não se pode criar uma protuberância gaussiana centrada em um ponto a partir de uma combinação finita de protuberâncias gaussianas centradas em outros pontos, especialmente quando todas as outras protuberâncias gaussianas estão a um bilhão de sigmas de distância. Portanto, nossa suposição de dependência linear levou a uma contradição, como pretendemos mostrar.
A matriz do kernel do kernel Gaussian tem sempre cheio classificação para distinta . Isso significa que cada vez que você adiciona um novo exemplo, a classificação aumenta em 1 . A maneira mais fácil de ver isso se você definir σ muito pequeno. Então a matriz do kernel é quase diagonal.
O fato de a classificação sempre aumentar em um significa que todas as projeções no espaço de feição são linearmente independentes (não ortogonais, mas independentes). Portanto, cada exemplo adiciona uma nova dimensão à extensão do projecções Φ ( x 1 ) , . . . , Φ ( x m ) . Como você pode adicionar inúmeros exemplos infinitos, o espaço de recurso deve ter uma dimensão infinita. Curiosamente, todas as projeções do espaço de entrada no espaço de recurso estão em uma esfera, pois | | Φ ( x ) | . No entanto, a geometria da esfera é plana. Você pode ler mais sobre isso em
Burges, CJC (1999). Geometria e invariância em métodos baseados em kernel. Em B. Schölkopf, CJC Burges e AJ Smola (Eds.), Os avanços nos métodos do núcleo apóiam a aprendizagem de vetores (pp. 89-116). MIT Pressione.
Para o plano de fundo e as anotações, refiro-me à resposta Como calcular o limite de decisão a partir de vetores de suporte? .
Portanto, os recursos no espaço 'original' são os vetores , o resultado binário y i ∈ { - 1 , + 1 } e os multiplicadores de Lagrange são α i .
Sabe-se que o núcleo pode ser escrito como ( ' ⋅ ' representa o produto interno.) Onde Φ é uma transformação (implícito e desconhecido) para uma nova característica espaço.
Vou tentar dar alguma explicação 'intuitiva' do que este parece, assim que esta resposta é nenhuma prova formal, que só quer dar alguma sensação de como eu acho que isso funciona.Não hesite em me corrigir se eu estiver errado. A base para minha explicação é a seção 2.2.1 deste pdf
Eu tenho que 'transformar' meu espaço de recurso (então meu ) em algum 'novo' espaço de recurso no qual a separação linear será resolvida.
Para cada observação , eu definir funções & Phi i ( x ) = K ( x i , x ) , de modo que têm uma função φ i para cada elemento da minha amostra formação. Estas funções & Phi i abrangem um espaço vetorial. O espaço vetorial medido pelo ϕ i , observe V = s p a n ( ϕ i , i = 1 , 2 , … N ) . ( N é o tamanho da amostra de treinamento).
Tentarei argumentar que esse espaço vetorial é o espaço vetorial no qual a separação linear será possível. Por definição do vão, cada vector no espaço vectorial pode ser escrito como como uma combinação linear do φ i , ou seja: Σ N i = 1 γ i φ i , onde γ i são números reais. Então, de fato, V = { v = ∑ N i = 1 γ i ϕ i | ( γ 1 ,
Note-se que são as coordenadas do vector v no espaço vectorial V .
é o tamanho da amostra de treino e, por conseguinte, a dimensão do espaço vectorial V pode ir até N , dependendo se o φ i são independentes linear. Como ϕ i ( x ) = K ( x i , x ) (ver supra, definimos ϕ dessa maneira), isso significa quea dimensão de V depende do kernel usado e pode ir até o tamanho da amostra de treinamento.
Se o núcleo é 'bastante complexo', então o serão todos independente e, em seguida, a dimensão de V será N , o tamanho da amostra de treino.
A transformação, que mapeia meu espaço de recurso original para é definida como
.
Este mapa mapeia meu espaço de recurso original em um espaço vetorial que pode ter uma dimensão que vai até o tamanho da minha amostra de treinamento. Então mapeia cada observação na minha amostra de treinamento em um espaço vetorial onde os vetores são funções. O vector x i da minha amostra formação é 'mapeado' a um vector em V , ou seja, o vector φ i com coordenadas todos iguais a zero, excepto o i -simo de coordenadas é 1.
e é um hiperplano de separação linear no -space : é uma escolha particular do nomeadamente !
o são conhecidos de nossas observações, o são os multiplicadores de Lagrange que o SVM encontrou. Em outras palavras, o SVM encontra, através do uso de um kernel e resolvendo um problema de programação quadrática, uma separação linear no-spave.
Este é meu entendimento intuitivo de como o 'truque do kernel' permite transformar 'implicitamente' o espaço de recurso original em um novo espaço de recurso , com uma dimensão diferente. Essa dimensão depende do kernel que você usa e, para o kernel RBF, essa dimensão pode subir até o tamanho da amostra de treinamento. Como as amostras de treinamento podem ter qualquer tamanho, isso pode chegar a 'infinito' . Obviamente, em espaços dimensionais muito altos, o risco de sobreajuste aumentará.
Portanto, os kernels são uma técnica que permite ao SVM transformar seu espaço de recursos. Consulte também O que torna o kernel gaussiano tão mágico para o PCA e também em geral?
Infelizmente, a explicação do fcop é bastante incorreta. Antes de tudo, ele diz "Sabe-se que o Kernel pode ser escrito como ... onde ... é uma transformação (implícita e desconhecida) em um novo espaço de recursos". NÃO é desconhecido. Na verdade, esse é o espaço para o qual os recursos são mapeados e esse é o espaço que pode ter dimensões infinitas, como no caso do RBF. Tudo o que o kernel faz é pegar o produto interno desse vetor de recurso transformado com um vetor de recurso transformado de um exemplo de treinamento e aplicar alguma função ao resultado. Assim, representa implicitamente esse vetor de característica dimensional mais alto. Pense em escrever (x + y) ^ 2 em vez de x ^ 2 + 2xy + y ^ 2, por exemplo. Agora pense que série infinita é representada implicitamente pela função exponencial ... aí você tem seu espaço infinito de feições.
A maneira correta de pensar sobre SVMs é mapear seus recursos para um espaço de recurso dimensional infinitamente possivelmente representável implicitamente em outro espaço de recurso "Kernel" de dimensão finita cuja dimensão possa ser tão grande quanto o tamanho do conjunto de treinamento.