Vai al contenuto principale

Regressione polinomiale: dalle linee rette alle curve

Scopri come la regressione polinomiale aiuta a modellare relazioni non lineari e a migliorare l'accuratezza predittiva nei dataset reali.
Aggiornato 4 mag 2026  · 12 min leggi

Quando i tuoi dati si curvano, non ha senso usare una linea retta per stimare nuovi punti. Facendolo, otterrai un modello che non coglie il pattern, ha residui elevati e previsioni scarse. I dati del mondo reale raramente si comportano in modo lineare, che tu stia modellando come il dosaggio di un farmaco influenzi la risposta, come la temperatura impatti lo stress di un materiale o come i prezzi degli asset si muovano nel tempo.

La regressione polinomiale risolve il problema estendendo la regressione lineare per adattare curve invece di linee rette. Basta aggiungere alcuni termini di grado superiore - , - e il tuo modello potrà seguire la forma reale dei dati.

In questo articolo vedremo cos’è la regressione polinomiale, la matematica che c’è dietro, come implementarla in Python e come evitare la trappola in cui la maggior parte delle persone cade: l’overfitting.

Se sei alle prime armi con il machine learning, leggi prima il nostro tutorial Fondamenti della regressione lineare in Python.

Che cos’è la regressione polinomiale?

La regressione polinomiale è l’algoritmo a cui ricorri quando una linea retta non può descrivere i tuoi dati.

La regressione lineare modella la relazione tra variabili come una linea retta. Funziona quando la relazione è davvero lineare - ma la maggior parte dei dati reali non lo è. Pensa a come varia lo spazio di frenata di un’auto con la velocità, o a come il tasso di crescita di una pianta risponde al fertilizzante. Queste relazioni sono curve. Una linea retta non le adatterà bene, qualunque cosa tu faccia.

La regressione polinomiale estende la regressione lineare aggiungendo termini di grado superiore all’equazione. Invece di adattare y = b0 + b1x, adatti qualcosa come y = b0 + b1x + b2x² + b3x³. Il grado del polinomio - quella n in "n-esimo grado" - controlla quante curvature può avere la curva.

In breve e senza giri di parole, ecco la differenza chiave tra le due:

  • Regressione lineare: adatta una linea retta. Un coefficiente per caratteristica, un grado di libertà nella curva.

  • Regressione polinomiale: adatta una curva. Ogni termine aggiuntivo (, , ...) dà al modello più flessibilità per seguire la forma dei dati.

Regressione lineare vs regressione polinomiale

Regressione lineare vs regressione polinomiale

Sotto la superficie, la regressione polinomiale è ancora un modello lineare. "Lineare" qui si riferisce a come il modello tratta i suoi coefficienti, non alla forma della curva che produce. Stai aggiungendo nuove feature (, ) e adattando un’equazione lineare su di esse.

Quindi, quando usarla davvero?

Scegli la regressione polinomiale quando il grafico dei residui di un modello lineare mostra un pattern: è il segnale che la relazione non è lineare. È anche un’ottima scelta quando le conoscenze di dominio suggeriscono una relazione curva, come in fisica, biologia o economia.

Il rovescio della medaglia è che i polinomi di grado elevato possono diventare instabili. Un polinomio di grado 2 o 3 gestisce la maggior parte delle curve reali, ma andando oltre rischi di adattare il rumore più che il segnale.

Perché usare la regressione polinomiale?

La maggior parte delle relazioni tra variabili nel mondo reale non è lineare.

Una linea retta può avvicinarsi, ma "quasi" non basta quando stai prevedendo qualcosa di sensibile. Se la relazione nei dati si piega, un modello lineare mancherà costantemente quella piega.

La regressione polinomiale fa meglio permettendo al modello di curvare. Invece di forzare una linea retta attraverso i dati, adatti una curva che può seguire la forma della relazione.

Ecco alcune aree in diversi settori in cui fa davvero la differenza:

  • Biologia e medicina: Le relazioni dose-risposta raramente sono lineari. Una dose bassa può avere poco effetto, una dose media funziona bene e una dose alta causa effetti collaterali. Quella curva a S richiede un modello polinomiale per essere catturata
  • Ingegneria: Le relazioni sforzo-deformazione nei materiali, la resistenza aerodinamica e la dilatazione termica seguono pattern non lineari che la regressione polinomiale modella bene
  • Finanza: I rendimenti degli asset, il pricing delle opzioni e le curve di domanda spesso mostrano effetti decrescenti o acceleranti che una linea retta non può rappresentare
  • Pipeline di machine learning: Le feature polinomiali sono un modo rapido per aggiungere non linearità a un modello lineare senza passare a un algoritmo più complesso

Il filo conduttore in tutti questi casi è lo stesso: la relazione tra input e output cambia a valori diversi di x. La regressione lineare assume che il cambiamento sia costante. La regressione polinomiale no.

Detto questo, la regressione polinomiale non è una bacchetta magica.

Funziona meglio quando hai conoscenze di dominio che suggeriscono una relazione curva, o quando il grafico dei residui mostra chiaramente un pattern che una linea retta non può risolvere. Usala con un problema specifico in mente - non solo perché l’ del tuo modello lineare non è abbastanza alto.

Capire la matematica dietro la regressione polinomiale

Conoscere la matematica di base dietro la regressione polinomiale ti aiuterà a capirla meglio.

Termini polinomiali

Nella regressione lineare, il tuo modello ha questo aspetto:

Formula della regressione lineare

Formula della regressione lineare

Una variabile in input, un coefficiente, una linea retta. La regressione polinomiale estende questo aggiungendo termini di grado superiore:

Formula della regressione polinomiale

Formula della regressione polinomiale

Ogni nuovo termine - , e così via - dà al modello una "curvatura" in più con cui lavorare. Un polinomio di grado 2 può adattare una singola curva. Un polinomio di grado 3 può adattare una curva che cambia direzione una volta. Il grado n controlla quanto è flessibile il modello.

L’algoritmo sottostante resta lo stesso. Stai solo aggiungendo nuove feature. è trattata come una variabile di input a sé, proprio come x. Il modello sta ancora adattando un’equazione lineare - solo che lo fa su feature trasformate.

Stima ai minimi quadrati

Adattare un modello di regressione polinomiale funziona come per la regressione lineare - cioè con la stima ai minimi quadrati.

L’idea è trovare i coefficienti che minimizzano la somma dei residui al quadrato:

Formula SSR

Formula SSR

Ogni differenza al quadrato è un residuo - il divario tra ciò che il modello prevede e ciò che è stato osservato. Metterli al quadrato fa sì che gli errori negativi e positivi non si annullino e penalizza gli errori grandi più di quelli piccoli.

In pratica, ci pensa la libreria. Ma sapere che l’obiettivo sono i minimi quadrati aiuta a capire perché gli outlier danneggiano così tanto i modelli polinomiali: un singolo residuo grande viene elevato al quadrato e trascina i coefficienti nella sua direzione.

Interpretare i coefficienti

Nella regressione lineare, b1 ha un’interpretazione semplice: per ogni aumento di un’unità in x, y cambia di b1.

La regressione polinomiale è un po’ più complessa. Quando il modello include b_1x + b_2x^2, l’effetto di x su y dipende dal valore attuale di x: non puoi leggere b2 in isolamento e trarre una conclusione. La pendenza della curva cambia costantemente, cosa che puoi vedere derivando rispetto a x:

Derivata rispetto a x

Derivata rispetto a x

La pendenza stessa è una funzione di x. Significa che l’impatto di una variazione di un’unità in x è diverso in ogni punto della curva.

Ecco perché non dovresti provare a interpretare i singoli coefficienti in un modello polinomiale. Guarda invece la curva nel suo insieme. Metti a confronto i tuoi valori previsti con i dati.

Applicazioni della regressione polinomiale nella data science

La regressione polinomiale compare in molti campi perché le relazioni curve sono ovunque nei dati reali.

Finanza

I dati finanziari raramente si muovono in linea retta.

I prezzi degli asset, la crescita dei ricavi e le curve di domanda tendono ad accelerare, decelerare o invertire direzione a seconda delle condizioni di mercato. Un modello lineare assume un tasso di cambiamento costante, cosa quasi mai vera. La regressione polinomiale ti consente di modellare questi cambiamenti - ad esempio, come la domanda dei consumatori cala lentamente all’inizio, poi bruscamente quando i prezzi superano una certa soglia.

È anche utile per l’analisi dei trend nel tempo. Quando adatti una curva ai dati storici dei prezzi o modelli come una metrica cresca nelle diverse fasi del ciclo economico, un polinomio di grado 2 o 3 spesso stima la forma molto meglio di una linea retta.

Ingegneria

I processi fisici sono alcuni dei migliori esempi di relazioni non lineari.

Sforzo e deformazione nei materiali, fluidodinamica, dilatazione termica e resistenza aerodinamica seguono curve, non linee. Molte delle equazioni fondamentali in fisica sono di natura polinomiale. La regressione polinomiale ti offre un modo guidato dai dati per adattare queste curve quando hai misure ma non un’elegante equazione in forma chiusa.

Un buon esempio è la forza di resistenza, che aumenta con il quadrato della velocità. Un modello lineare sottostimerà la resistenza ad alte velocità, mentre un polinomio di grado 2 adatterà correttamente la relazione.

Machine learning

Nel machine learning, la regressione polinomiale è spesso usata come tecnica di feature engineering più che come modello a sé stante.

Aggiungendo termini polinomiali - , , termini di interazione - al tuo set di feature, dai a un modello lineare la capacità di adattare pattern non lineari senza passare a un algoritmo più complesso. È un primo passo comune quando il tuo modello lineare underfit e vuoi aggiungere flessibilità prima di ricorrere a qualcosa come un albero decisionale o una rete neurale.

È utile anche come modello di base.

Prima di addestrare un modello più complesso, adattare una regressione polinomiale ti dice quanta varianza può spiegare una semplice curva. Se un polinomio di grado 3 ti porta già gran parte del risultato, potresti non aver bisogno di nulla di più complesso.

Come scegliere il grado giusto per la regressione polinomiale

Scegliere il grado del polinomio è una delle decisioni più importanti. Se sbagli in un senso o nell’altro, otterrai un modello meno accurato.

Per fortuna, bastano poche righe di Python per fare il lavoro.

Overfitting vs underfitting

L’underfitting si verifica quando il grado è troppo basso. Un polinomio di grado 1 su dati curvi non coglierà il pattern: alto bias, previsioni scarse e un modello che va male sia sui dati di training sia su quelli nuovi.

L’overfitting è il problema opposto, ed è più insidioso perché all’inizio sembra andare bene. Un polinomio di grado alto può passare per ogni punto del set di training con errore quasi nullo. Ma il modello sta solo memorizzando il rumore. Crollerà su nuovi dati.

Puoi vederlo confrontando l’errore di training con quello di test al variare del grado:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

np.random.seed(42)

# Generate sample data
x = np.linspace(-3, 3, 80).reshape(-1, 1)
y = 0.6 * x.ravel()**2 - x.ravel() + np.random.normal(0, 0.6, 80)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

for deg in [1, 2, 12]:
    poly = PolynomialFeatures(deg)
    model = LinearRegression()
    model.fit(poly.fit_transform(x_train), y_train)

    train_err = mean_squared_error(y_train, model.predict(poly.transform(x_train)))
    test_err  = mean_squared_error(y_test,  model.predict(poly.transform(x_test)))

    print(f"Degree {deg:>2} | Train MSE: {train_err:.4f} | Test MSE: {test_err:.4f}")

MSE su gradi diversi

MSE su gradi diversi

Oppure, in forma visiva:

Adattamento dei dati con diversi gradi polinomiali

Adattamento dei dati con diversi gradi polinomiali

Il grado 1 mostra errore elevato su entrambi i set: è underfitting. Il grado 2 è ben bilanciato. Il grado 12 ha errore di training più basso ma un errore di test molto più alto: è overfitting.

Cross-validation

Il modo giusto per trovare il grado migliore è la cross-validation - in particolare, la k-fold cross-validation.

L’idea è dividere i dati in k sottoinsiemi, quindi addestrare su k-1 e testare su quello lasciato fuori, ripetendo finché ogni sottoinsieme è stato il set di test una volta. Infine, medi l’errore su tutte le fold, ripeti per ciascun grado candidato e scegli quello con l’errore medio di test più basso.

L’implementazione è molto più semplice della spiegazione:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
import matplotlib.pyplot as plt

np.random.seed(42)

# Generate sample data
x = np.linspace(-3, 3, 80).reshape(-1, 1)
y = 0.6 * x.ravel()**2 - x.ravel() + np.random.normal(0, 0.6, 80)

# Test degrees 1 through 10
degrees = range(1, 11)
mean_errors = []

for deg in degrees:
    model = make_pipeline(PolynomialFeatures(deg), LinearRegression())
    scores = cross_val_score(model, x, y, cv=5, scoring="neg_mean_squared_error")
    mean_errors.append(-scores.mean())
    print(f"Degree {deg:>2} | Mean error: {-scores.mean():.4f}")

best_degree = np.argmin(mean_errors) + 1

Confronto dell'errore per grado

Confronto dell’errore per grado

Oppure, in forma visiva:

Confronto degli errori in cross-validation

Confronto degli errori in cross-validation

L’errore in CV cala man mano che aggiungi termini polinomiali utili, poi risale quando il modello inizia a fare overfitting.

Quando due gradi danno errori in CV simili, scegli quello più basso. Un modello più semplice che rende altrettanto bene è sempre la scelta migliore.

Considerazioni chiave e limitazioni

Ci sono un paio di modi in cui la regressione polinomiale può portarti a conclusioni sbagliate. Vediamoli.

Sensibilità agli outlier

Gli outlier influenzano la regressione polinomiale più della regressione lineare.

I minimi quadrati elevano al quadrato ogni residuo prima di sommarli. Un singolo punto dati lontano dalla tendenza contribuisce con un errore sproporzionatamente grande e il modello piegherà la curva per ridurre quell’errore - anche se significa distorcere l’adattamento altrove.

Questo effetto peggiora all’aumentare del grado. Un polinomio di grado elevato ha la flessibilità per inseguire un outlier, trascinando la curva lontano dalla massa dei dati per adattare un punto anomalo.

Un modo per aggirare il problema è pulire i dati prima dell’adattamento. Visualizza i dati, identifica gli outlier e decidi se rappresentano segnale reale o rumore. Se sono rumore - errori di misurazione, errori di inserimento, record corrotti - rimuovili. Se sono reali, valuta un metodo di fitting più resistente agli outlier come RANSAC o la regressione di Huber.

Overfitting

Ogni volta che aggiungi un termine polinomiale, dai al modello più flessibilità. A un certo punto, questa flessibilità smette di aiutare e il modello inizia ad adattare il rumore casuale nei dati di training invece del pattern reale. Il risultato è una curva che va bene sul training ma crolla su nuovi dati.

La parte insidiosa è che l’overfitting è invisibile se guardi solo l’errore di training. Un polinomio di grado 10 avrà quasi sempre un MSE di training più basso di un polinomio di grado 2. Ma non significa che sia un modello migliore.

Ecco come dovresti procedere:

  • Parti basso: prova grado 2 o 3 prima di salire. La maggior parte delle curve reali non richiede di più
  • Valuta sempre su dati tenuti da parte: il solo errore di training non dice nulla sulla generalizzazione.
  • Cross-validation: usala per trovare il grado oltre il quale l’errore di test smette di migliorare.
  • Osserva la curva: se il tuo polinomio fa cose strane fuori dall’intervallo dei dati di training, è un segnale di overfitting.

La regressione polinomiale funziona meglio quando hai un buon motivo per aspettarti una relazione curva e puoi mantenere basso il grado.

Alternative alla regressione polinomiale

La regressione polinomiale non è sempre lo strumento giusto: alcune di queste alternative potrebbero fare più al caso tuo, senza giochi di parole.

Spline

Le spline risolvono il problema dell’instabilità globale.

Quando adatti un polinomio di grado 10, ogni coefficiente è influenzato da ogni punto dati. Un cambiamento in una regione dei dati influenza la curva ovunque. Le spline evitano questo suddividendo i dati in segmenti e adattando un polinomio a basso grado per ciascuno. I segmenti sono uniti in punti chiamati nodi, con vincoli che mantengono la curva complessiva liscia nelle giunzioni.

Il risultato è una curva flessibile dove serve e stabile altrove.

In Python, scipy e scikit-learn offrono implementazioni robuste delle spline:

from scipy.interpolate import UnivariateSpline

spline = UnivariateSpline(x, y, k=3)
y_pred = spline(x_new)

Spline vs polinomio di grado elevato

Spline vs polinomio di grado elevato

Ribadendo: scegli le spline quando i tuoi dati mostrano comportamenti diversi in regioni diverse, o quando una singola curva polinomiale non riesce a catturare la forma senza ricorrere a gradi elevati.

Support Vector Regression

La Support Vector Regression (SVR) adotta un approccio diverso.

Non adatta una curva che minimizza l’errore quadratico su tutti i punti, ma cerca una funzione che rimanga entro un margine di errore definito per il maggior numero possibile di punti, ignorando quelli che ricadono all’interno del margine. Questo la rende meno sensibile agli outlier rispetto alla regressione polinomiale.

Il collegamento con la regressione polinomiale arriva tramite il trucco del kernel. Una SVR con kernel polinomiale può adattare relazioni non lineari simili alla regressione polinomiale - ma con una migliore generalizzazione e più controllo sull’adattamento tramite parametri di regolarizzazione.

from sklearn.svm import SVR

model = SVR(kernel="poly", degree=3, C=1.0, epsilon=0.1)
model.fit(x_train, y_train)

SVR vs polinomio di grado elevato

SVR vs polinomio di grado elevato

La SVR è una buona scelta quando i tuoi dati contengono outlier che non puoi rimuovere, quando ti serve più controllo sul trade-off bias-varianza o quando la regressione polinomiale continua a fare overfitting nonostante la cross-validation.

Conclusione

In questo articolo, ti ho mostrato come estende la regressione lineare per adattare curve, come la stima ai minimi quadrati trovi i coefficienti migliori e perché interpretare singolarmente quei coefficienti non dica molto.

Il grado che scegli conta più di ogni altra cosa. Troppo basso porta a underfitting, troppo alto a overfitting. La cross-validation ti dà un modo oggettivo per trovare il punto di equilibrio. E se la regressione polinomiale non è la scelta giusta, spline e SVR sono valide alternative da conoscere.

Il modo migliore per sviluppare intuizione su tutto questo è usarla sui tuoi dati. Scegli un dataset in cui sospetti una relazione non lineare, adatta prima un modello lineare, traccia i residui e guarda cosa fa di diverso la regressione polinomiale. Leggi la nostra guida a Modelli non lineari e insight con R per vedere questa pipeline in pratica.


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.

Domande frequenti sulla regressione polinomiale

Che cos'è la regressione polinomiale e quando dovrei usarla?

La regressione polinomiale è un’estensione della regressione lineare che adatta una linea curva ai tuoi dati invece di una retta. La usi quando la relazione tra variabili di input e output non è lineare - ad esempio, quando un grafico dei residui da un modello lineare mostra un pattern. È un buon primo passo prima di passare a modelli più complessi come alberi decisionali o reti neurali.

In cosa la regressione polinomiale è diversa dalla regressione lineare?

La regressione lineare adatta una linea retta modellando la relazione come y = b0 + b1x. La regressione polinomiale aggiunge termini di grado superiore come e , dando al modello sufficiente flessibilità per seguire le curve nei dati. Entrambe usano la stessa stima ai minimi quadrati: la regressione polinomiale tratta semplicemente quei termini extra come feature aggiuntive.

Quali sono i rischi maggiori dell'uso della regressione polinomiale?

I due rischi principali sono l’overfitting e la sensibilità agli outlier. Un polinomio di grado elevato può memorizzare il rumore nei dati di training e performare male su nuovi dati. Gli outlier sono pericolosi perché i minimi quadrati elevano al quadrato ogni residuo: un singolo punto errato può trascinare la curva lontano dal resto dei dati.

Come scelgo il grado giusto per il mio modello di regressione polinomiale?

Inizia con un grado 2 o 3: la maggior parte delle relazioni curve reali non richiede di più. Da lì, usa la k-fold cross-validation per confrontare l’errore medio di test sui gradi candidati e scegli quello in cui l’errore di test smette di migliorare. Quando due gradi danno risultati simili, scegli sempre quello più basso.

Quando dovrei usare spline o SVR invece della regressione polinomiale?

Scegli le spline quando i tuoi dati si comportano in modo diverso in regioni diverse, o quando un singolo polinomio continua a produrre curve instabili ai bordi dell’intervallo dei dati. E scegli la SVR con kernel polinomiale quando gli outlier sono inevitabili e ti serve un modello che non si pieghi fuori forma per accontentarli. Entrambe le alternative ti danno più controllo sull’adattamento al costo di un po’ di interpretabilità.

Argomenti

Impara con DataCamp

Corso

Modellazione di regressione bayesiana con rstanarm

4 h
7K
Scopri come usare i metodi di stima bayesiani per fare previsioni più accurate sui modelli di regressione lineare.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro