Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como funcionam os modelos de Support Vector Regression?

+1 voto
91 visitas
perguntada Jan 20, 2016 em Aprendizagem de Máquinas por regisaely (46 pontos)  

Uma simples implementação dos modelos SVR em R pode ser encontrada aqui, mas a pergunta é como esses modelos funcionam em nível teórico?

Compartilhe

2 Respostas

+2 votos
respondida Jan 21, 2016 por Pedro Albuquerque (41 pontos)  
selecionada Jan 23, 2016 por regisaely
 
Melhor resposta

Os modelos de Support Vector Regression assumem que há um processo gerador de dados na forma y=f(x) em que f(x) é, em geral, não-linear. Como a estrutura real de f(x) é frequentemente desconhecida, utiliza-se f(x) como sendo representado por polinômios de ordem infinita. Algo como f(x)=a1+a2x+a3x^2+a4x^3+..., por exemplo. Entretanto, essa representação pode ser computacionalmente extensiva, para resolver esse problema utiliza-se a teoria de Reproducing kernel Hilbert space no qual a função f(x) é reproduzida por meio de uma função Kernel através do Kernel Trick sem a necessidade de representar toda a dimensão do espaço, pois essa pode ser infinita, por exemplo.

Assim, busca-se a função f(x) do espaço vetorial de funções (em geral polinômios) que apresentam máxima margem linear no espaço de dimensão infinita, mas que no espaço de entrada é não linear:

A imagem será apresentada aqui.

Na imagem anterior tem-se na primeira figura o espaço de entrada, isto é, o conjunto de dados observado. Deseja-se encontrar f(x) que "melhor" represente esses dados. Essa melhor representação é baseada na teoria Structural risk minimization, para isso, esses dados são mapeados para um espaço de dimensão maior, no qual as informações podem ser representadas por um hiperplano. Busca-se nesse espaço o hiperplano de máxima margem e então, f(x) é construído utilizando-se o kernel que o reproduz no espaço de entrada original.

+1 voto
respondida Jan 21, 2016 por danielcajueiro (5,186 pontos)  

O Professor Pedro Albuquerque é especialista no assunto. Apenas para complementar a resposta dele, vou considerar a versão mais simples do modelo Support Vector Regression. Seja \(\hat y=X\hat\beta\) o modelo que desejamos estimar.

No caso do modelo de regressão linear estimamos \(\beta\) minimizando a soma dos quadrados dos erros dada por

\[\min_\beta \sum_{i=1}^{n}(y_i-\hat y_i)^2\]

Uma outra forma de escolher o \(\beta\) é fazer a minimização dada por

\[\min_\beta \sum_{i=1}^{n}|y_i-\hat y_i|,\]

onde \(n\) é o número de amostras.

Sabemos que as duas formas não são exatamente equivalentes. A primeira é um problema de otimização em um espaço euclidiano, onde estamos minimizando a norma 2 do erro que gera explicitamente um \(\hat \beta\) estimado que garante que \(\epsilon=[\epsilon_i] \)(onde \(\epsilon_i=y_i-\hat y_i\) ) é ortogonal ao subespaço gerado pelas colunas de da matriz de dados \(X\). O segundo caso é um caso de regressão quantílica (regressão da mediana), onde essas propriedades geométricas não são válidas. De fato, enquanto no primeiro caso, \(\hat y\) é o valor esperado \(E[y/x]\), no segundo caso ele é a mediana dado \(X\).

Podemos modificar essa estimativa para garantir que os valores de \(\beta\) não cresçam muito fazendo

\[\min_\beta \sum_{i=1}^{n}|y_i-\hat y_i| +\lambda\sum_{i=1}^{n}\beta_{i}^{2},\]

onde \(\lambda\) é uma constante.

Modelos de support vector regression modificam esse modelo, usando uma função de perda que insensível a um valor constante \(w\), isto é,

\[\min_\beta \sum_{i=1}^{n}L_i +\lambda\sum_{i=1}^{n}\beta_{i}^{2},\]

onde \(L_i=0\) se \(| y_i- \hat y_i |\lt w \) e \( L_i=(|y_i-\hat y_i|-w)\) em caso contrário.

Apenas para dar a intuição do que o modelo faz, eu considerei o modelo estimado linear. No caso geral, isso não ocorre e o modelo pode ser escrito de forma não linear, como especificado na resposta do Pedro citada acima.

Por que isso pode ser interessante?

Note que erros muito pequenos não afetam a função perda \(L\). Então:

1) O problema de overfitting que ocorre em modelos não lineares é minimizado (pois erros muito pequenos são simplesmente desconsiderados). Por exemplo, em modelos não lineares em que deseja-se minimizar erros quadráticos (como em modelos usuais de redes neurais), pode-se estimar parâmetros identificando ruídos como informação relevante. Esse problema é reduzido, pois erros muito pequenos não afetam a escolha do parâmetro. De fato, o parâmetro \(w\) afeta a complexidade do modelo. Quanto menor for esse parâmetro, maior a complexidade do modelo.

2) Modelos com valores grandes de \(w\) serão modelos não lineares que são razoavelmente "suaves", que possuirão representações mais esparsas que podem ser úteis para representar muita quantidade de dados com poucos parâmetros.

...