Regresja wielomianowa

Regresja wielomianowa to rodzaj regresji, w którym za pomocą wielomianu znajdujemy najlepsze dopasowanie do danych.

Aby zrozumieć ideę regresji wielomianowej, wyobraźmy sobie, że mamy zbiór danych składający się z pewnych punktów na wykresie. Naszym zadaniem jest znalezienie funkcji, która najlepiej pasuje do tych punktów. W przypadku regresji liniowej funkcją tą jest prosta linia. W przypadku regresji wielomianowej jest to wielomian o odpowiednim stopniu.

Aby znaleźć optymalny wielomian, należy rozwiązać problem optymalizacji tak, aby minimalizować błąd pomiędzy przewidywaniami wielomianu a rzeczywistymi wartościami danych. Można to zrobić za pomocą różnych metod, takich jak metoda najmniejszych kwadratów lub metoda gradientu prostego.

Regresja wielomianowa jest szczególnie przydatna, gdy dane nie są dobrze opisane przez prostą linię, ale lepiej opisane przez wyższy stopień wielomianu. Na przykład, jeśli dane są w kształcie paraboli, lepsze dopasowanie otrzymamy używając wielomianu drugiego stopnia niż prostą linią.

Należy jednak pamiętać, że im wyższy stopień wielomianu użyjemy, tym bardziej złożony będzie nasz model i tym większe ryzyko przeuczenia. Dlatego ważne jest, aby dobrze dobrać stopień wielomianu oraz upewnić się, że nasz model dobrze generalizuje na nowe dane.

Przykład:

import numpy as np
import matplotlib.pyplot as plt

# Generujemy przykładowe dane
np.random.seed(0)
x = 2 - 3 * np.random.normal(0, 1, 20)
y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)

# Dopasowujemy wielomian trzeciego stopnia do danych
coef = np.polyfit(x, y, 3)
poly_fit = np.poly1d(coef)

# Wizualizujemy wynik
xp = np.linspace(x.min(), x.max(), 100)
_ = plt.plot(x, y, '.', xp, poly_fit(xp), '-', xp, np.polyval(coef, xp), '--')
plt.show()

W powyższym kodzie generujemy przykładowe dane za pomocą funkcji np.random.normal, a następnie używamy funkcji np.polyfit do dopasowania wielomianu trzeciego stopnia do tych danych. Wizualizujemy wynik za pomocą funkcji matplotlib.pyplot.plot.

Otrzymamy wykres z trzema liniami:

  • pierwsza linia pokazuje oryginalne dane jako kropki,
  • druga linia pokazuje dopasowanie wielomianu do danych jako ciągła linia,
  • trzecia linia pokazuje osobno każdy wielomian o stopniu odpowiadającym współczynnikom, jako przerywana linia.