2.1.3
Ρωμπάστ παλινδρόμηση
- Η μέθοδος ελαχίστων τετραγώνων (OLS) αντιδρά έντονα στις ακραίες τιμές, επειδή τα τετραγωνισμένα υπόλοιπα εκρήγνυνται, οπότε μια μόνο εσφαλμένη μέτρηση μπορεί να παραμορφώσει ολόκληρη την προσαρμογή.
- Η συνάρτηση απώλειας Huber διατηρεί τετραγωνική απώλεια για μικρά υπόλοιπα, αλλά μεταβαίνει σε γραμμική ποινή για μεγάλα, μειώνοντας την επιρροή ακραίων σημείων.
- Η ρύθμιση του κατωφλίου \(\delta\) (epsilon στο scikit-learn) και της προαιρετικής ποινής L2 \(\alpha\) εξισορροπεί την ανθεκτικότητα έναντι της διακύμανσης.
- Ο συνδυασμός κλιμάκωσης με διασταυρωτική επικύρωση αποδίδει σταθερά μοντέλα σε πραγματικά σύνολα δεδομένων που συχνά αναμειγνύουν κανονικά σημεία και ανωμαλίες.
Εισαγωγή #
Αυτή η μέθοδος πρέπει να ερμηνεύεται μέσω των υποθέσεών της, των συνθηκών δεδομένων και του τρόπου με τον οποίο οι επιλογές παραμέτρων επηρεάζουν τη γενίκευση.
Αναλυτική Επεξήγηση #
Μαθηματική Διατύπωση #
Έστω το υπόλοιπο \(r = y - \hat{y}\). Για ένα επιλεγμένο κατώφλι \(\delta > 0\), η συνάρτηση απώλειας Huber είναι
$$ \ell_\delta(r) = \begin{cases} \dfrac{1}{2} r^2, & |r| \le \delta, \\ \delta \bigl(|r| - \dfrac{1}{2}\delta\bigr), & |r| > \delta. \end{cases} $$Τα μικρά υπόλοιπα τετραγωνίζονται ακριβώς όπως στην OLS, αλλά τα μεγάλα υπόλοιπα αυξάνονται μόνο γραμμικά. Η συνάρτηση επιρροής (η παράγωγος) επομένως κορεσμένεται:
$$ \psi_\delta(r) = \begin{cases} r, & |r| \le \delta, \\ \delta\,\mathrm{sign}(r), & |r| > \delta. \end{cases} $$Στο scikit-learn, το κατώφλι αντιστοιχεί στην παράμετρο epsilon. Η προσθήκη ποινής L2 \(\alpha \lVert \boldsymbol\beta \rVert_2^2\) σταθεροποιεί περαιτέρω τους συντελεστές όταν τα χαρακτηριστικά συσχετίζονται.
Πειράματα σε Python #
Οπτικοποιούμε τα σχήματα απώλειας και συγκρίνουμε τις μεθόδους OLS, Ridge και Huber σε ένα μικρό συνθετικό σύνολο δεδομένων που περιέχει μία ακραία τιμή.
import japanize_matplotlib
import matplotlib.pyplot as plt
import numpy as np
Απώλεια Huber έναντι τετραγωνικής και απόλυτης απώλειας #
def huber_loss(r: np.ndarray, delta: float = 1.5):
half_sq = 0.5 * np.square(r)
lin = delta * (np.abs(r) - 0.5 * delta)
return np.where(np.abs(r) <= delta, half_sq, lin)
delta = 1.5
r_vals = np.arange(-2, 2, 0.01)
h_vals = huber_loss(r_vals, delta=delta)
plt.figure(figsize=(8, 6))
plt.plot(r_vals, np.square(r_vals), "red", label=r"squared $r^2$")
plt.plot(r_vals, np.abs(r_vals), "orange",label=r"absolute $|r|$")
plt.plot(r_vals, h_vals, "green", label=fr"Huber ($\delta={delta}$)")
plt.axhline(0, color="k", linewidth=0.8)
plt.grid(True, alpha=0.3)
plt.legend()
plt.xlabel("residual $r$")
plt.ylabel("loss")
plt.title("Squared, absolute, and Huber losses")
plt.show()
Σύνολο δεδομένων-παιχνίδι με ακραία τιμή #
np.random.seed(42)
N = 30
x1 = np.arange(N)
x2 = np.arange(N)
X = np.c_[x1, x2]
epsilon = np.random.rand(N)
y = 5 * x1 + 10 * x2 + epsilon * 10
y[5] = 500 # introduce one extreme outlier
plt.figure(figsize=(8, 6))
plt.plot(x1, y, "ko", label="data")
plt.xlabel("$x_1$")
plt.ylabel("$y$")
plt.legend()
plt.title("Data containing an outlier")
plt.show()
Σύγκριση OLS, Ridge και Huber #
from sklearn.linear_model import HuberRegressor, Ridge, LinearRegression
plt.figure(figsize=(8, 6))
huber = HuberRegressor(alpha=0.0, epsilon=3.0)
huber.fit(X, y)
plt.plot(x1, huber.predict(X), "green", label="Huber")
ridge = Ridge(alpha=1.0, random_state=0)
ridge.fit(X, y)
plt.plot(x1, ridge.predict(X), "orange", label="Ridge (α=1.0)")
ols = LinearRegression()
ols.fit(X, y)
plt.plot(x1, ols.predict(X), "r-", label="OLS")
plt.plot(x1, y, "kx", alpha=0.7)
plt.xlabel("$x_1$")
plt.ylabel("$y$")
plt.legend()
plt.title("Influence of an outlier on different regressors")
plt.grid(alpha=0.3)
plt.show()
Ερμηνεία αποτελεσμάτων #
- Η OLS (κόκκινη) επηρεάζεται σημαντικά από την ακραία τιμή.
- Η Ridge (πορτοκαλί) είναι ελαφρώς πιο σταθερή χάρη στην ποινή L2, αλλά εξακολουθεί να αποκλίνει.
- Η Huber (πράσινη) περιορίζει την επίδραση της ακραίας τιμής και ακολουθεί καλύτερα την κύρια τάση.
Αναφορές #
- Huber, P. J. (1964). Robust Estimation of a Location Parameter. The Annals of Mathematical Statistics, 35(1), 73–101.
- Hampel, F. R. et al. (1986). Robust Statistics: The Approach Based on Influence Functions. Wiley.
- Huber, P. J., & Ronchetti, E. M. (2009). Robust Statistics (2nd ed.). Wiley.