Pular para o conteúdo principal

Support Vector Regression (SVR): como funciona e quando usar

Support Vector Regression é um método de regressão baseado em margem que ignora pequenos erros de propósito, lida com relações não lineares via kernels e se mantém firme em dados reais com ruído, onde a regressão padrão fica devendo.
Atualizado 4 de jun. de 2026  · 11 min lido

Métodos tradicionais de regressão minimizam o erro total em todos os pontos de dados. Isso significa que todo resíduo, por menor que seja, puxa o modelo em alguma direção. Como resultado, você acaba com um modelo sensível a ruídos e outliers.

Já a Support Vector Regression, por outro lado, ajusta uma função dentro de uma margem de tolerância e ignora os erros que ficam dentro dela. Essa margem muda a lógica de otimização. Em vez de tentar otimizar cada ponto, a SVR foca na estrutura geral dos dados, o que a torna, como espero mostrar, robusta em dados do mundo real.

Se você precisa de um aquecimento antes de começar, leia nosso artigo Linear Regression in Python para uma introdução à modelagem preditiva.

O que é Support Vector Regression?

Support Vector Regression é um método de regressão construído sobre a mesma base das Support Vector Machines (SVM), uma classe de modelos originalmente criada para tarefas de classificação, como detecção de spam ou reconhecimento de imagens.

A ideia central é simples: em vez de tentar minimizar todo erro de previsão, a SVR ajusta uma função permitindo uma margem de tolerância ao redor dela. Os erros que ficam dentro dessa margem não contam. O modelo foca em acertar o ajuste global, sem perseguir cada pequena variação.

É isso que diferencia a SVR da maioria dos outros modelos de regressão.

Métodos tradicionais tratam todo resíduo como sinal. A SVR trata a maioria deles como ruído. Assim, você acaba com um modelo menos preocupado em acertar exatamente cada ponto e mais em capturar a estrutura subjacente dos dados.

A ideia central por trás da SVR

No centro da SVR está o chamado tubo epsilon — uma margem de tolerância que envolve a função ajustada nos dois lados.

Qualquer ponto que caia dentro do tubo é considerado próximo o suficiente. A SVR ignora esses pontos ao ajustar o modelo. Só os pontos fora do tubo importam, pois são eles que de fato moldam a fronteira de decisão.

The Epsilon tube example

Exemplo de tubo epsilon

Veja como interpretar:

  • Pontos dentro do tubo contribuem com erro zero, não importa a distância até a função
  • Pontos fora do tubo contribuem com um erro proporcional à distância além da margem
  • O modelo é definido por esses pontos externos, não pela maioria dos dados

É isso que separa a SVR da regressão linear. Na regressão linear, todo ponto puxa o modelo — inclusive os ruidosos. Na SVR, a maioria dos pontos é irrelevante. O resultado é um ajuste guiado por boa estrutura geral.

Como a SVR é otimizada

A SVR tenta equilibrar duas metas ao mesmo tempo.

A primeira é manter o modelo o mais "plano" possível. Funções mais planas são mais simples, e modelos simples tendem a generalizar melhor. A segunda é minimizar os erros nos pontos fora do tubo epsilon — aqueles que a SVR não pode ignorar.

Essas metas puxam em direções opostas, e é aí que entra o parâmetro de regularização C. Ele controla o peso dado aos erros fora do tubo em relação à simplicidade do modelo:

  • C alto faz o modelo levar a sério os erros externos, o que pode gerar uma função mais complexa e ajustada de forma mais justa
  • C baixo permite manter o modelo simples e aceitar mais violações fora da margem

Você sempre estará trocando simplicidade do modelo por tolerância a erro. O valor certo de C depende dos dados e do nível de ruído esperado. Errar para qualquer lado reduz o desempenho em novos dados.

É um problema de otimização resolvido de forma iterativa, então não é motivo de preocupação.

Vetores de suporte na SVR

Na SVR, apenas os pontos que ficam fora do tubo epsilon realmente importam.

Eles são os vetores de suporte — os pontos que ultrapassam a margem e moldam a função ajustada. Tudo que está dentro do tubo é ignorado no treino. O modelo nunca "vê" esses pontos de forma relevante.

Support vectors

Vetores de suporte

O efeito colateral positivo disso é a esparsidade. Na prática, apenas um subconjunto pequeno do seu treino vira vetor de suporte. O restante não contribui para o modelo final, o que torna a SVR eficiente em memória e rápida para avaliar depois de treinada, já que as previsões dependem só desses poucos pontos influentes.

Como lidar com dados não lineares na SVR

A SVR não se limita a ajustar retas. Ela lida com relações não lineares por meio da técnica chamada kernel trick.

Em vez de ajustar a função no espaço original, a SVR projeta os dados em um espaço de maior dimensão onde um ajuste linear se torna possível. Esse ajuste linear no espaço de maior dimensão se traduz em uma curva não linear no espaço original.

Os kernels mais comuns são:

  • RBF (Radial Basis Function): a escolha padrão para a maioria dos problemas. Lida bem com relações suaves e curvas e funciona em diversos conjuntos de dados
  • Polinomial: útil quando há razão para acreditar que a relação segue um padrão polinomial de grau específico

A escolha do kernel depende dos seus dados. Quando estiver em dúvida, comece com RBF.

SVR vs. regressão linear

A diferença está no objetivo de cada modelo.

Regressão linear minimiza o erro total em cada ponto de dados. Todo resíduo conta, por menor que seja. Se um ponto ruidoso desvia o modelo, o ajuste inteiro se desloca para compensar.

A SVR ignora erros dentro do tubo epsilon. Ela só reage aos pontos que caem fora da margem — e mesmo assim, o C controla o quanto. O modelo otimiza a estrutura, não a precisão em cada ponto individual.

Essa diferença torna a SVR mais robusta a outliers. Um único ponto ruidoso não distorce o ajuste como na regressão linear, porque a SVR nunca tentou persegui-lo.

Confira todas as diferenças:

Linear regression compared to SVR

Regressão linear comparada à SVR

Parâmetros principais na SVR

A SVR tem três parâmetros que você precisa entender antes de otimizar o modelo.

Epsilon (ε)

Epsilon define a largura da margem de tolerância ao redor da função ajustada. Um ε maior significa um tubo mais largo — mais pontos são ignorados e o modelo fica mais simples. Um ε menor estreita o tubo e força o modelo a se ajustar mais de perto aos dados.

Small versus large Epsilon

Epsilon pequeno vs. grande

C (regularização)

C controla o quanto a SVR penaliza os erros nos pontos fora do tubo. C alto faz o modelo levar esses erros mais a sério e ajustar com mais rigidez. C baixo permite aceitar mais violações em troca de uma função mais simples e plana. C e ε trabalham juntos, já que alterar um afeta o comportamento do outro na prática.

Small versus large C

C pequeno vs. grande

Kernel

O kernel determina como a SVR lida com padrões não lineares. RBF é a escolha mais comum e funciona bem como padrão. Kernels polinomiais são úteis para formatos de curva específicos. O kernel linear reduz a SVR a uma regressão linear baseada em margem, útil quando os dados já são bem comportados.

Support Vector Regression na prática

Fazer a SVR funcionar bem envolve cumprir alguns passos e pré-requisitos. Veja os principais.

O fluxo típico é:

  1. Faça o scaling dos dados: a SVR é sensível à escala das features. Se suas variáveis estiverem em escalas diferentes, o modelo não se comportará como esperado. Use StandardScaler em X e y antes de ajustar

  2. Escolha um kernel: RBF é o padrão certo para a maioria dos problemas. Troque para polinomial se houver razão específica para acreditar naquele formato

  3. Faça a calibragem dos parâmetros: defina C, epsilon e gamma antes de treinar. Grid search ou cross-validation são as abordagens padrão

  4. Ajuste o modelo: chame .fit() nos dados de treino escalados. Depois de treinado, faça a transformação inversa das previsões para voltar à escala original

Aqui vai um exemplo completo usando scikit-learn:

import numpy as np
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Generate sample data
np.random.seed(42)
X = np.sort(np.random.uniform(0, 10, 30))
y = 2.5 * np.sin(X * 0.8) + np.random.normal(0, 0.4, 30)

# Split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# Scale features and target
scaler_X = StandardScaler()
scaler_y = StandardScaler()

X_train_scaled = scaler_X.fit_transform(X_train.reshape(-1, 1))
X_test_scaled = scaler_X.transform(X_test.reshape(-1, 1))
y_train_scaled = scaler_y.fit_transform(y_train.reshape(-1, 1)).ravel()

# Fit SVR
svr = SVR(kernel="rbf", C=2.0, epsilon=0.5, gamma=0.3)
svr.fit(X_train_scaled, y_train_scaled)

# Predict and inverse-transform
y_pred_scaled = svr.predict(X_test_scaled)
y_pred = scaler_y.inverse_transform(y_pred_scaled.reshape(-1, 1)).ravel()

rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"Test RMSE: {rmse:.3f}")

RMSE on the test set

RMSE no conjunto de teste

Alguns pontos de atenção no código. Primeiro, o StandardScaler é aplicado separadamente em X e y. Escalar apenas as features é um erro comum que leva a resultados ruins com SVR. Segundo, as previsões passam por transformação inversa no final para voltar à escala original antes da avaliação.

Os dois gráficos abaixo mostram como fica o modelo ajustado. O primeiro mostra a curva da SVR com o tubo epsilon sobre os dados de treino e teste:

Epsilon tube over the training and test data

Tubo epsilon sobre os dados de treino e teste

O segundo compara valores previstos versus reais no conjunto de teste:

Predicted versus actual values

Previstos versus reais

Pontos próximos da diagonal indicam boas previsões.

Vantagens e limitações da SVR

A SVR tem um conjunto específico de pontos fortes que a tornam a ferramenta certa na situação certa. Do mesmo modo, há limitações que a tornam inadequada em outros cenários.

Vantagens

  • Robustez a ruído: o tubo epsilon faz com que pequenos erros não influenciem o modelo. Dados ruidosos que desviariam a regressão linear são ignorados
  • Lida com relações não lineares: com o kernel certo, a SVR ajusta curvas que a regressão padrão não consegue sem engenharia de features
  • Flexível: você controla a largura da margem, a penalidade por erro e o kernel, adaptando o modelo a diferentes formatos de dados e níveis de ruído

Limitações

  • Lenta em datasets muito grandes: a SVR não escala bem. O tempo de treino cresce com o número de amostras, tornando-a impraticável para centenas de milhares de linhas ou mais
  • Sensível à calibração de parâmetros: C, epsilon e gamma interagem entre si. Uma combinação ruim derruba a performance, e encontrar uma boa exige tempo e computação, especialmente porque a SVR não escala bem
  • Menos interpretável: não há coeficientes simples para inspecionar. Entender por que a SVR fez uma determinada previsão não é trivial; se explicabilidade é obrigatória no seu negócio, este não é o modelo ideal

Quando usar SVR

A SVR funciona melhor em um conjunto específico de condições. Use SVR quando:

  • Seu dataset tem tamanho moderado — de algumas centenas a alguns milhares de amostras é o ideal
  • A relação entre features e alvo é não linear e você não quer fazer engenharia de features manualmente
  • Seus dados têm ruído ou outliers e você precisa de um modelo que não seja afetado por eles

Evite SVR quando:

  • Seu dataset é muito grande — o treino será lento e pode não terminar em tempo razoável
  • Velocidade é crítica — tanto o treino quanto a busca de hiperparâmetros são custosos em comparação a alternativas como gradient boosting ou regressão linear

Se seu dataset é grande e ruidoso, métodos de gradient boosting valem a pena ser avaliados primeiro. A SVR brilha quando você tem dados limpos, de tamanho moderado, com estrutura que modelos mais simples não capturam bem.

Erros comuns com SVR

A maioria dos problemas com SVR se resume ao mesmo conjunto de deslizes — então trate esta lista como um guia do que evitar.

  • Não escalar suas features. A SVR é baseada em distâncias, então features não escaladas dominam o modelo. Sempre aplique StandardScaler tanto em X quanto em y antes de treinar.

  • Entender mal o epsilon. Epsilon é, de longe, o parâmetro mais importante. Muito grande e seu modelo underfita por ignorar demais. Muito pequeno e ele passa a se comportar como a regressão tradicional, perseguindo cada ponto. Sempre faça grid search para ver o que performa melhor no seu conjunto de teste.

  • Pular a calibração de parâmetros. Rodar a SVR com valores padrão e esperar bons resultados raramente funciona — como na maioria dos modelos de machine learning. C, epsilon e gamma precisam ser ajustados em conjunto. Use grid search com cross-validation.

  • Usar SVR em datasets muito grandes. Se você tem mais que alguns milhares de amostras, a SVR ficará lenta. Ela simplesmente não escala como outros algoritmos. Migre para um modelo mais adequado a grandes volumes, como gradient boosting ou uma rede neural.

Importante: acertar esses quatro pontos não garante um modelo excelente, mas errar qualquer um deles quase certamente garante um modelo ruim.

Conclusão

Para concluir, lembre-se de que a SVR resolve um problema diferente da regressão tradicional. Em vez de minimizar cada erro, ela ajusta uma função dentro de uma margem e ignora o ruído que fica ali — exatamente o que a torna útil quando seus dados não são limpos ou perfeitamente lineares.

Ela não é conhecida por sua velocidade ou simplicidade. Mas é robusta. Se seus dados têm relações não lineares e outliers que você não quer modelar, a SVR permite focar na estrutura em vez de perseguir cada ponto.

Lembre-se de escalar as features, calibrar os parâmetros, escolher o kernel certo e ser conservador com a quantidade de dados. Fazendo isso, a SVR tende a gerar um modelo robusto e pouco propenso a falhas em produção.

SVR é apenas uma das ferramentas que todo cientista de dados precisa conhecer. Inscreva-se na nossa trilha Machine Learning Engineer para aprender as demais e ficar pronto para o mercado em 2026.

Desenvolver habilidades de aprendizado de máquina

Eleve suas habilidades de aprendizado de máquina ao nível de produção.
Comece a aprender de graça

Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Cientista de dados sênior baseado na Croácia. Principal redator técnico com mais de 700 artigos publicados, gerando mais de 10 milhões de visualizações. Autor do livro Automação do aprendizado de máquina com TPOT.

Perguntas frequentes sobre SVR

O que é Support Vector Regression e como ela difere da regressão padrão?

Support Vector Regression é um método de regressão que ajusta uma função dentro de uma margem de tolerância chamada tubo epsilon e ignora todos os erros que ficam dentro dela. Métodos tradicionais minimizam o erro total em cada ponto de dados, o que os torna sensíveis a ruídos e outliers. A SVR só reage a pontos fora da margem, ou seja, o modelo foca na estrutura geral em vez de perseguir cada resíduo.

Quando devo usar SVR em vez de outros métodos de regressão?

A SVR vai melhor quando seu dataset tem tamanho moderado, a relação entre features e alvo é não linear e há ruído que você não consegue eliminar totalmente. É uma escolha ruim para conjuntos muito grandes, em que o tempo de treino vira problema, ou quando velocidade e interpretabilidade são cruciais. Se essas restrições se aplicam, vale considerar primeiro gradient boosting ou regressão linear.

Preciso ajustar os parâmetros da SVR para obter bons resultados?

Sim — a SVR é mais sensível às escolhas de parâmetros do que a maioria dos métodos de regressão. Os três que mais importam são C, que controla quão estritamente o modelo penaliza erros fora do tubo, o epsilon, que define a largura da margem, e o kernel com seus parâmetros associados, como o gamma. Rodar a SVR com valores padrão raramente dá o melhor resultado; por isso, grid search com cross-validation é o caminho.

Por que o scaling das features é tão importante na SVR?

A SVR depende de distâncias entre pontos para ajustar o modelo, o que significa que features em escalas maiores dominarão o resultado. Se você pular o scaling, o modelo vai se comportar como se algumas variáveis fossem mais importantes — apenas por causa das unidades. Sempre aplique StandardScaler em X e y antes de treinar e faça a transformação inversa das previsões depois.

O que o epsilon controla na SVR e como escolher seu valor?

Epsilon define a largura da margem de tolerância ao redor da função ajustada — qualquer erro de previsão menor que epsilon é tratado como zero. Um epsilon grande produz um modelo mais simples que ignora mais dados, enquanto um epsilon pequeno força um ajuste mais próximo e aumenta o número de vetores de suporte. Não há valor universalmente ideal; trate o epsilon como parâmetro de ajuste e busque-o junto com C e gamma usando cross-validation.

Tópicos

Aprenda com a DataCamp

Programa

Aprendizado de máquina supervisionado em Python

25 h
Domine as técnicas mais populares de aprendizado de máquina supervisionado para começar a fazer previsões com dados rotulados.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow