Regresja liniowa

Regresja liniowa to jeden z najprostszych i najczęściej stosowanych modeli regresji. Polega ona na znalezieniu liniowej zależności między zmienną objaśnianą (znaną jako zmienna Y) a jedną lub więcej zmiennymi objaśniającymi (zwanymi zmiennymi X). Model regresji liniowej można przedstawić w postaci równania:

Y = b0 + b1 * X1 + b2 * X2 + ... + bn * Xn

gdzie:

  • Y to zmienna objaśniana
  • X1, X2, ..., Xn to zmienne objaśniające
  • b0, b1, ..., bn to współczynniki regresji, które są ustalane podczas trenowania modelu

Celem trenowania modelu regresji liniowej jest znalezienie takich wartości współczynników b0, b1, ..., bn, by równanie to jak najlepiej opisywało dane treningowe. Można to osiągnąć na przykład za pomocą algorytmu najmniejszych kwadratów.

from sklearn.linear_model import LinearRegression

# Przygotowanie danych - załóżmy, że mamy zbiór treningowy zawierający cechy oraz etykiety
X = [[1], [2], [3], [4]]  # cechy
y = [2, 4, 6, 8]  # etykiety

# Utworzenie modelu regresji liniowej
reg = LinearRegression().fit(X, y)

# Współczynniki regresji:
print(reg.intercept_)  # b0 - wyraz wolny
print(reg.coef_)  # b1 - współczynnik przy X

# Wynik:
# b0 = 0
# b1 = 2
# Równanie regresji to Y = 0 + 2 * X

W powyższym przykładzie model regresji liniowej został trenowany za pomocą algorytmu najmniejszych kwadratów, który szuka takich wartości współczynników b0 i b1, by suma kwadratów błędów (różnicy między przewidywaną a rzeczywistą wartości Y dla każdej próbki) była jak najmniejsza. W tym przypadku model znalazł następujące wartości współczynników:

  • b0 = 0
  • b1 = 2

Dzięki temu równanie regresji, które najlepiej opisuje dane treningowe, brzmi Y = 0 + 2 * X. Teraz model jest gotowy do przewidywania wartości Y dla nowych danych. Oto przykład przewidywania wartości za pomocą trenowanego modelu:

# Przewidywanie wartości dla nowych danych
predictions = reg.predict([[5], [6]])

# Wynik: predictions zawiera [10, 12] - czyli model przewiduje, że dla nowych próbek cecha X równa 5 i 6 będzie odpowiadać wartościom Y równym odpowiednio 10 i 12

Można też sprawdzić dokładność modelu, porównując jego przewidywania z rzeczywistymi wartościami Y dla danych treningowych. Oto przykład obliczenia błędu średniokwadratowego (MSE) dla modelu regresji liniowej:

from sklearn.metrics import mean_squared_error

# Przygotowanie danych - załóżmy, że mamy zbiór treningowy zawierający cechy oraz etykiety
X = [[1], [2], [3], [4]]  # cechy
y = [2, 4, 6, 8]  # etykiety

# Utworzenie modelu regresji liniowej
reg = LinearRegression().fit(X, y)

# Przewidywanie wartości dla danych treningowych
predictions = reg.predict(X)

# Obliczenie błędu średniokwadratowego (MSE)
mse = mean_squared_error(y, predictions)
print(mse)  # wynik: 0.0 - błąd jest równy 0, co oznacza, że model dobrze opisuje dane treningowe

Oczywiście, im niższy błąd średniokwadratowy, tym lepsza jest dokładność modelu.