Vai al contenuto principale

Support Vector Regression (SVR): come funziona e quando usarla

La Support Vector Regression è un metodo di regressione basato su margini che ignora intenzionalmente gli errori piccoli, gestisce relazioni non lineari tramite kernel e regge bene su dati rumorosi del mondo reale, dove la regressione standard mostra i suoi limiti.
Aggiornato 4 giu 2026  · 11 min leggi

I metodi di regressione standard minimizzano l’errore totale su tutti i punti dati. Ciò significa che ogni residuo, per quanto piccolo, tira il modello in una direzione. Di conseguenza, ti ritrovi con un modello sensibile al rumore e agli outlier.

Un modello di support vector regression, invece, adatta una funzione all’interno di un margine di tolleranza e ignora gli errori che vi ricadono. Quel margine cambia l’idea di ottimizzazione. Invece di cercare di ottimizzare ogni singolo punto dati, SVR si concentra sulla struttura complessiva dei dati, il che lo rende, come spero di mostrarti, robusto sui dati del mondo reale.

Se ti serve un ripasso prima di iniziare, leggi il nostro articolo Linear Regression in Python per un’introduzione al predictive modeling.

Cos’è la Support Vector Regression?

La Support Vector Regression è un metodo di regressione costruito sulle stesse basi delle Support Vector Machines (SVM), una classe di modelli originariamente pensata per compiti di classificazione come il rilevamento dello spam o il riconoscimento di immagini.

L’idea chiave è semplice da capire: invece di cercare di minimizzare ogni errore di previsione, SVR adatta una funzione consentendo un margine di tolleranza attorno ad essa. Gli errori che rientrano in quel margine non contano. Il modello punta a centrare l’andamento complessivo, non a correggere ogni piccola deviazione.

È questo che distingue SVR dalla maggior parte degli altri modelli di regressione.

I metodi di regressione standard trattano ogni residuo come un segnale. SVR considera la maggior parte come rumore. Il risultato è un modello meno preoccupato di essere esatto su ogni punto e più interessato a cogliere la struttura sottostante dei dati.

L’idea centrale alla base di SVR

Al centro di SVR c’è qualcosa chiamato epsilon tube: un margine di tolleranza che avvolge la funzione adattata su entrambi i lati.

Qualsiasi punto dati che cade all’interno del tubo è considerato sufficientemente vicino. SVR ignora questi punti durante l’adattamento del modello. Contano solo i punti fuori dal tubo, perché sono quelli che effettivamente plasmano il confine decisionale.

Esempio di Epsilon tube

Esempio di Epsilon tube

Ecco come interpretarlo:

  • I punti dentro il tubo contribuiscono con errore zero, indipendentemente dalla distanza dalla funzione
  • I punti fuori dal tubo contribuiscono con un errore proporzionale a quanto superano il margine
  • Il modello è definito da quei punti esterni, non dalla maggioranza dei dati

Questo è ciò che separa SVR dalla regressione standard. Nella regressione lineare, ogni punto dati tira il modello, compresi quelli rumorosi. In SVR, la maggior parte dei punti è irrilevante. Il risultato è un adattamento guidato da una buona struttura complessiva.

Come viene ottimizzato SVR

SVR ha due obiettivi in competizione che cerca di soddisfare contemporaneamente.

Il primo è mantenere il modello il più piatto possibile. Una funzione più piatta è più semplice e i modelli semplici tendono a generalizzare meglio su nuovi dati. Il secondo è minimizzare gli errori sui punti fuori dall’epsilon tube, quelli che SVR non può ignorare.

Questi due obiettivi tirano in direzioni opposte, ed è qui che entra in gioco il parametro di regolarizzazione C. Controlla quanto peso SVR attribuisce agli errori fuori dal tubo rispetto alla semplicità del modello:

  • Un valore di C alto dice al modello di prendere sul serio gli errori esterni, il che può produrre una funzione più complessa e aderente
  • Un valore di C basso lascia il modello semplice e accetta più violazioni oltre il margine

Stai sempre bilanciando la semplicità del modello con la tolleranza all’errore. Il valore giusto di C dipende dai tuoi dati e da quanto rumore ti aspetti. Sbagliare in un senso o nell’altro ridurrà le prestazioni del modello su nuovi dati.

È un problema di ottimizzazione risolvibile in modo iterativo, quindi non c’è nulla di cui preoccuparsi.

Support vectors in SVR

Con SVR, contano solo i punti dati che cadono fuori dall’epsilon tube.

Questi sono i support vector: i punti che stanno oltre il margine e plasmano la funzione adattata. Tutto ciò che è dentro il tubo viene ignorato durante l’addestramento. Il modello non “vede” mai davvero quei punti in modo significativo.

Support vector

Support vector

L’effetto collaterale utile è la sparsezza. In pratica, solo un sottoinsieme ridotto dei dati di training finisce per essere support vector. Il resto non contribuisce al modello finale, il che rende SVR efficiente in memoria e veloce da valutare una volta addestrato, poiché le previsioni dipendono solo da quei pochi punti influenti.

Gestire dati non lineari con SVR

SVR non è limitato ad adattare linee rette. Può gestire relazioni non lineari tramite una tecnica chiamata kernel trick.

Quindi, invece di adattare una funzione nello spazio di input originale, SVR mappa i dati in uno spazio a dimensionalità superiore dove un adattamento lineare diventa possibile. Quell’adattamento lineare nello spazio a dimensionalità superiore si traduce in una curva non lineare nei dati originali.

I due kernel più comuni che userai sono:

  • RBF (Radial Basis Function): la scelta predefinita per la maggior parte dei problemi. Gestisce bene relazioni curve e fluide e funziona su un’ampia gamma di dataset
  • Polinomiale: utile quando hai motivo di credere che la relazione segua un andamento polinomiale di un grado specifico

La scelta del kernel dipende dai tuoi dati. RBF è un buon punto di partenza quando non sei sicuro.

SVR vs Regressione lineare

La differenza si riduce a cosa cerca di fare ciascun modello.

La regressione lineare minimizza l’errore totale su ogni punto dati. Ogni residuo conta, per quanto piccolo. Se un punto rumoroso tira il modello fuori rotta, l’intero adattamento si sposta per compensare.

SVR ignora gli errori all’interno dell’epsilon tube. Reagisce solo ai punti che cadono fuori dal margine e, anche in quel caso, C controlla quanto fortemente. Il modello ottimizza per la struttura, non per l’accuratezza su ogni singolo punto.

Questa differenza rende SVR più robusto agli outlier. Un singolo punto rumoroso non rovinerà l’adattamento come può accadere nella regressione lineare, perché SVR non stava cercando di inseguirlo fin dall’inizio.

Ecco tutte le differenze:

Regressione lineare a confronto con SVR

Regressione lineare a confronto con SVR

Parametri chiave in SVR

SVR ha tre parametri che devi comprendere prima di iniziare a ottimizzare il modello.

Epsilon (ε)

Epsilon definisce la larghezza del margine di tolleranza attorno alla funzione adattata. Un ε più grande significa un tubo più ampio: più punti vengono ignorati e il modello diventa più semplice. Un ε più piccolo restringe il tubo e costringe il modello ad aderire maggiormente ai dati.

Epsilon piccolo contro grande

Epsilon piccolo contro grande

C (regolarizzazione)

C controlla quanto severamente SVR penalizza gli errori sui punti fuori dal tubo. Un C alto significa che il modello prende molto sul serio quegli errori e si adatta più strettamente. Un C basso significa che il modello accetta più violazioni in cambio di una funzione più semplice e piatta. C ed ε lavorano insieme, perché modificare uno influisce sul comportamento dell’altro nella pratica.

C piccolo contro grande

C piccolo contro grande

Kernel

Il kernel determina come SVR gestisce i pattern non lineari. RBF è la scelta più comune e funziona bene come predefinita. I kernel polinomiali sono utili per forme di curva specifiche. I kernel lineari riducono SVR a una regressione lineare basata su margini, utile quando i tuoi dati sono già ben comportati.

Support Vector Regression nella pratica

Far funzionare bene SVR richiede di seguire alcuni passaggi e prerequisiti. Ti mostro quali sono.

Ecco il flusso di lavoro tipico:

  1. Scala i dati: SVR è sensibile alla scala delle feature. Se le feature sono su scale diverse, il modello non si comporterà come previsto. Usa StandardScaler sia su X che su y prima dell’adattamento

  2. Scegli un kernel: RBF è la scelta giusta per la maggior parte dei problemi. Passa a un polinomiale se hai un motivo specifico per credere che la relazione segua quella forma

  3. Ottimizza i parametri: imposta C, epsilon e gamma prima del fitting. Grid search o cross-validation sono gli approcci standard

  4. Adatta il modello: chiama .fit() sui dati di training scalati. Una volta addestrato, applica l’inverse transform alle previsioni per riportarle alla scala originale

Ecco un esempio completo con 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 sul set di test

RMSE sul set di test

Un paio di cose da notare in questo codice. Per prima cosa, StandardScaler è applicato separatamente sia a X che a y. Scalare solo le feature è un errore comune che porta a scarsi risultati con SVR. In secondo luogo, le previsioni vengono riportate alla scala originale alla fine tramite inverse transform prima della valutazione.

I due grafici seguenti mostrano come appare il modello adattato. Il primo mostra la curva SVR con l’epsilon tube sui dati di training e di test:

Epsilon tube sui dati di training e test

Epsilon tube sui dati di training e test

Il secondo confronta valori previsti e reali sul set di test:

Valori previsti contro reali

Valori previsti contro reali

Punti vicini alla diagonale indicano che il modello sta prevedendo bene.

Vantaggi e limiti di SVR

SVR ha un insieme specifico di punti di forza che lo rendono lo strumento giusto nella situazione giusta. Allo stesso modo, ha debolezze che lo rendono quello sbagliato in altre.

Vantaggi

  • Robusto al rumore: l’epsilon tube fa sì che i piccoli errori non influenzino affatto il modello. Dati rumorosi che devierebbero un modello come la regressione lineare vengono ignorati
  • Gestisce relazioni non lineari: con il kernel giusto, SVR adatta curve che la regressione standard non può gestire senza feature engineering manuale
  • Flessibile: controlli la larghezza del margine, la penalità per gli errori e il kernel, quindi puoi adattare il modello a un’ampia gamma di forme dei dati e livelli di rumore

Limiti

  • Lento su dataset grandi: SVR non scala bene. Il tempo di training cresce all’aumentare dei campioni, rendendolo poco pratico per dataset con centinaia di migliaia di righe o più.
  • Sensibile all’ottimizzazione dei parametri: C, epsilon e gamma interagiscono tra loro. Una combinazione sbagliata ridurrà le prestazioni e trovare quella giusta richiede tempo e calcolo, soprattutto perché SVR non scala bene
  • Meno interpretabile: non ci sono coefficienti semplici da ispezionare. Capire perché SVR abbia fatto una certa previsione non è facile, quindi se la spiegabilità è fondamentale nel tuo business, questo non è il modello per te

Quando usare SVR

SVR funziona al meglio in un insieme specifico di condizioni. Dovresti usare SVR quando:

  • Il tuo dataset è di dimensioni moderate: da qualche centinaio a qualche migliaio di campioni è l’intervallo ideale
  • La relazione tra feature e target è non lineare e non vuoi fare feature engineering manuale
  • I tuoi dati hanno rumore o outlier e ti serve un modello che non ne risenta

Dovresti evitare SVR quando:

  • Il tuo dataset è molto grande: l’addestramento sarà lento e potrebbe non finire in tempi ragionevoli
  • La velocità conta: sia il training sia la ricerca degli iperparametri sono costosi rispetto ad alternative come gradient boosting o regressione lineare

Se il tuo dataset è grande e rumoroso, i metodi di gradient boosting meritano di essere valutati prima. SVR è ottimo quando hai dati puliti, di dimensioni moderate, con una struttura che i modelli più semplici non riescono a catturare bene.

Errori comuni con SVR

La maggior parte dei problemi con SVR deriva dallo stesso insieme di errori: consideralo un promemoria di cosa non fare.

  • Non scalare le feature. SVR è un algoritmo basato sulle distanze, quindi le feature non scalate domineranno il modello. Applica sempre StandardScaler sia a X che a y prima del fitting.

  • Fraintendere l’epsilon. Epsilon è di gran lunga il parametro più importante. Troppo grande e il modello underfitta perché ignora troppo. Troppo piccolo e si comporta come la regressione standard, inseguendo ogni punto. Fai sempre una grid search per capire cosa funziona meglio sul tuo set di test.

  • Saltare l’ottimizzazione dei parametri. Eseguire SVR con i parametri di default e aspettarsi buoni risultati funziona raramente, come per la maggior parte dei modelli di machine learning. C, epsilon e gamma vanno ottimizzati insieme. Usa grid search con cross-validation.

  • Usare SVR su dataset molto grandi. Se hai più di qualche migliaio di campioni, SVR sarà lento. Semplicemente non scala come altri algoritmi. Passa a un modello che gestisce meglio grandi dataset, come gradient boosting o una rete neurale.

È anche importante notare che fare bene queste quattro cose non garantisce un ottimo modello, ma sbagliarne anche solo una garantisce quasi certamente un risultato scadente.

Conclusione

In conclusione, ricorda che SVR risolve un problema diverso rispetto alla regressione standard. Invece di minimizzare ogni errore, adatta una funzione entro un margine e ignora il rumore che vi rientra, ed è proprio questo che lo rende utile quando i tuoi dati non sono puliti o perfettamente lineari.

Non è noto per velocità o semplicità. Ma è robusto. Se i tuoi dati hanno relazioni non lineari e outlier che non vuoi modellare, SVR ti permette di concentrarti sulla struttura invece di inseguire ogni punto dati.

Ricorda solo di scalare le feature, ottimizzare i parametri, scegliere il kernel giusto e restare prudente con la quantità di dati. Se fai bene queste cose, SVR ti darà un modello robusto, poco incline a fallire in produzione.

SVR è solo uno degli strumenti che ogni data scientist deve conoscere. Iscriviti al nostro percorso Machine Learning Engineer per imparare gli altri e prepararti al lavoro nel 2026.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist con base in Croazia. Top Tech Writer con oltre 700 articoli pubblicati, per più di 10 milioni di visualizzazioni. Autore del libro Machine Learning Automation with TPOT.

FAQ su SVR

Cos’è la Support Vector Regression e in cosa è diversa dalla regressione standard?

La Support Vector Regression è un metodo di regressione che adatta una funzione all’interno di un margine di tolleranza chiamato epsilon tube e ignora tutti gli errori che vi ricadono. I metodi di regressione standard minimizzano l’errore totale su ogni punto dati, diventando sensibili a rumore e outlier. SVR reagisce solo ai punti fuori dal margine, quindi il modello si concentra sulla struttura complessiva invece di inseguire ogni residuo.

Quando dovrei usare SVR rispetto ad altri metodi di regressione?

SVR funziona al meglio quando il tuo dataset è di dimensioni moderate, la relazione tra feature e target è non lineare e i dati contengono rumore che non puoi eliminare del tutto. È poco adatto a dataset molto grandi, dove il tempo di training diventa un vero problema, o a scenari in cui velocità e interpretabilità contano. Se queste condizioni si applicano, valuta prima gradient boosting o regressione lineare.

Devo ottimizzare i parametri di SVR per ottenere buoni risultati?

Sì: SVR è più sensibile alle scelte dei parametri rispetto alla maggior parte dei metodi di regressione. I tre parametri più importanti sono C, che controlla quanto severamente il modello penalizza gli errori fuori dal tubo, epsilon, che imposta la larghezza del margine, e il kernel insieme ai relativi parametri come gamma. Eseguire SVR con i valori di default raramente dà il risultato migliore, quindi grid search con cross-validation è l’approccio standard.

Perché la scalatura delle feature è così importante in SVR?

SVR si basa sulle distanze tra i punti dati per adattare il modello, il che significa che le feature su scale maggiori domineranno il risultato. Se salti la scalatura, il modello si comporterà come se alcune feature fossero più importanti di altre solo a causa delle unità. Applica sempre StandardScaler sia a X che a y prima del fitting e riporta le previsioni alla scala originale in seguito.

Cosa controlla l’epsilon in SVR e come lo scelgo?

Epsilon definisce la larghezza del margine di tolleranza attorno alla funzione adattata: qualsiasi errore di previsione più piccolo di epsilon è trattato come zero. Un epsilon grande produce un modello più semplice che ignora più dati, mentre un epsilon piccolo forza il modello ad aderire di più e aumenta il numero di support vector. Non esiste un valore universalmente giusto, quindi considera epsilon come un parametro da ottimizzare e cercalo insieme a C e gamma usando la cross-validation.

Argomenti

Impara con DataCamp

Programma

Apprendimento automatico supervisionato in Python

25 h
Impara a conoscere le più diffuse tecniche di apprendimento automatico supervisionato per iniziare a fare previsioni con dati etichettati.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow