Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Interpolazione vs Estrapolazione | Regressione Polinomiale
Regressione Lineare con Python
course content

Contenuti del Corso

Regressione Lineare con Python

Regressione Lineare con Python

1. Regressione Lineare Semplice
2. Regressione Lineare Multipla
3. Regressione Polinomiale
4. Scelta del Modello Migliore

book
Interpolazione vs Estrapolazione

Nel capitolo precedente, abbiamo osservato che le nostre previsioni utilizzando modelli diversi diventano più varie ai margini.

Per essere più precisi, le previsioni diventano strane nel momento in cui superiamo l'intervallo di valori del set di addestramento. Prevedere valori al di fuori dell'intervallo del set di addestramento si chiama extrapolazione, mentre prevedere valori all'interno dell'intervallo si chiama interpolazione.

La regressione non gestisce bene l'extrapolazione. È utilizzata per l'interpolazione e può produrre previsioni assurde quando i nuovi dati sono fuori dall'intervallo del set di addestramento.

Intervalli di Confidenza

Utilizzando la classe OLS, è possibile ottenere anche gli intervalli di confidenza per la retta di regressione in qualsiasi punto. Tuttavia, la sintassi è un po' complessa:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Dove alpha rappresenta il livello di confidenza, solitamente impostato a 0.05.
Con il codice sopra, si ottengono i limiti inferiore e superiore dell'intervallo di confidenza della retta di regressione nel punto X_new_tilde (o un array di limiti se X_new_tilde è un array).

A questo punto, è possibile tracciare la retta di regressione insieme al suo intervallo di confidenza:

12345678910111213141516171819202122
import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
copy

Senza conoscere la distribuzione del target, non è possibile trovare la retta di regressione esatta. Si cerca semplicemente di approssimarla sulla base dei dati disponibili. L'intervallo di confidenza della retta di regressione è l'intervallo in cui la retta di regressione esatta si trova con un livello di confidenza pari ad alpha.
Si può osservare che l'intervallo si amplia man mano che ci si allontana dall'intervallo del set di addestramento.

Note
Nota

Gli intervalli di confidenza sono costruiti assumendo che il modello sia stato scelto correttamente (ad esempio, Regressione Lineare Semplice o Regressione Polinomiale di grado 4).

Se il modello è scelto in modo inadeguato, l'intervallo di confidenza non è affidabile, così come la retta stessa. Imparerai come selezionare il modello migliore nella sezione successiva.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

Regressione Lineare con Python

Regressione Lineare con Python

1. Regressione Lineare Semplice
2. Regressione Lineare Multipla
3. Regressione Polinomiale
4. Scelta del Modello Migliore

book
Interpolazione vs Estrapolazione

Nel capitolo precedente, abbiamo osservato che le nostre previsioni utilizzando modelli diversi diventano più varie ai margini.

Per essere più precisi, le previsioni diventano strane nel momento in cui superiamo l'intervallo di valori del set di addestramento. Prevedere valori al di fuori dell'intervallo del set di addestramento si chiama extrapolazione, mentre prevedere valori all'interno dell'intervallo si chiama interpolazione.

La regressione non gestisce bene l'extrapolazione. È utilizzata per l'interpolazione e può produrre previsioni assurde quando i nuovi dati sono fuori dall'intervallo del set di addestramento.

Intervalli di Confidenza

Utilizzando la classe OLS, è possibile ottenere anche gli intervalli di confidenza per la retta di regressione in qualsiasi punto. Tuttavia, la sintassi è un po' complessa:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Dove alpha rappresenta il livello di confidenza, solitamente impostato a 0.05.
Con il codice sopra, si ottengono i limiti inferiore e superiore dell'intervallo di confidenza della retta di regressione nel punto X_new_tilde (o un array di limiti se X_new_tilde è un array).

A questo punto, è possibile tracciare la retta di regressione insieme al suo intervallo di confidenza:

12345678910111213141516171819202122
import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
copy

Senza conoscere la distribuzione del target, non è possibile trovare la retta di regressione esatta. Si cerca semplicemente di approssimarla sulla base dei dati disponibili. L'intervallo di confidenza della retta di regressione è l'intervallo in cui la retta di regressione esatta si trova con un livello di confidenza pari ad alpha.
Si può osservare che l'intervallo si amplia man mano che ci si allontana dall'intervallo del set di addestramento.

Note
Nota

Gli intervalli di confidenza sono costruiti assumendo che il modello sia stato scelto correttamente (ad esempio, Regressione Lineare Semplice o Regressione Polinomiale di grado 4).

Se il modello è scelto in modo inadeguato, l'intervallo di confidenza non è affidabile, così come la retta stessa. Imparerai come selezionare il modello migliore nella sezione successiva.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
some-alt