W dzisiejszej lekcji nauczysz się budować i trenować prosty model regresji liniowej przy użyciu biblioteki Scikit-learn w języku Python. Zdobędziesz praktyczne umiejętności w zakresie przygotowania danych, budowy modelu, jego treningu oraz ewaluacji.
Regresja liniowa to podstawowa technika uczenia maszynowego, która służy do przewidywania wartości zmiennej zależnej (wyjście, np. cena domu) na podstawie jednej lub więcej zmiennych niezależnych (wejście, np. powierzchnia domu). Zakłada ona liniową zależność między zmiennymi. Prosty model regresji liniowej ma postać: y = mx + b
, gdzie y
to przewidywana wartość, x
to zmienna wejściowa, m
to nachylenie linii (współczynnik), a b
to punkt przecięcia z osią y (wyraz wolny). Przykładowo, jeśli chcemy przewidzieć cenę domu na podstawie jego powierzchni, x
będzie powierzchnią, y
ceną, a m
i b
zostaną oszacowane przez model podczas procesu uczenia.
Przed zbudowaniem modelu regresji liniowej, musimy przygotować nasze dane. Obejmuje to zebranie danych, ich czyszczenie (np. obsługa brakujących wartości), a następnie podział na zbiór treningowy (do uczenia modelu) i testowy (do ewaluacji). Scikit-learn oferuje wiele narzędzi do tych celów.
Przykład:
Załóżmy, że mamy dane o powierzchniach mieszkań i ich cenach.
import numpy as np
from sklearn.model_selection import train_test_split
# Przykładowe dane (powierzchnia w metrach kwadratowych, cena w tysiącach złotych)
powierzchnia = np.array([50, 70, 60, 80, 90, 100, 110, 120, 130, 140]).reshape(-1, 1) # reshape, bo potrzebujemy macierzy
cena = np.array([250, 350, 300, 400, 450, 500, 550, 600, 650, 700])
# Podział danych na zbiór treningowy i testowy (80% trening, 20% test)
X_train, X_test, y_train, y_test = train_test_split(powierzchnia, cena, test_size=0.2, random_state=42)
print("X_train:", X_train)
print("y_train:", y_train)
Ważne jest, by dane wejściowe (X) były w formacie macierzy (dwuwymiarowej tablicy).
Scikit-learn ułatwia budowę i trening modeli uczenia maszynowego. Po przygotowaniu danych, możemy zbudować model regresji liniowej, wytrenować go na danych treningowych, a następnie ocenić jego skuteczność na danych testowych.
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Budowa modelu
model = LinearRegression()
# Trening modelu na danych treningowych
model.fit(X_train, y_train)
# Przewidywanie na danych testowych
y_pred = model.predict(X_test)
# Ewaluacja modelu (obliczanie błędu średniokwadratowego)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print("RMSE:", rmse)
# Wyświetlanie współczynników modelu (nachylenie i wyraz wolny)
print("Współczynnik (m):", model.coef_)
print("Wyraz wolny (b):", model.intercept_)
model.fit()
trenuje model. model.predict()
dokonuje przewidywań. mean_squared_error
mierzy błąd między przewidywanymi a rzeczywistymi wartościami.
Po wytrenowaniu model musi zostać oceniony, aby sprawdzić, jak dobrze radzi sobie z przewidywaniem na nowych danych. Popularne metryki to: błąd średniokwadratowy (RMSE – Root Mean Squared Error), który mierzy średnią różnicę między przewidywanymi a rzeczywistymi wartościami. Im niższe RMSE, tym lepszy model.
RMSE = sqrt(1/n * Σ(y_i - y_pred_i)^2)
Inne metryki: R-kwadrat (coeficient of determination) – określa, jaka część zmienności danych jest wyjaśniana przez model. Im bliżej 1, tym lepiej.
Explore advanced insights, examples, and bonus exercises to deepen understanding.
Świetnie! Już znasz podstawy regresji liniowej, przygotowania danych i ewaluacji modelu. Dziś idziemy o krok dalej, koncentrując się na wdrażaniu modelu i jego monitorowaniu, co jest kluczowe w prawdziwym środowisku produkcyjnym.
Wdrożenie modelu to dopiero początek. Kluczowe jest jego skuteczne monitorowanie w środowisku produkcyjnym. Dlaczego? Bo dane w świecie realnym ciągle się zmieniają (tzw. "data drift"). Model, który działał świetnie wczoraj, dzisiaj może już dawać słabe wyniki.
Data Drift: Zmiany w rozkładzie danych wejściowych. Na przykład, jeśli Twój model przewiduje ceny nieruchomości, a nagle wchodzą nowe przepisy dotyczące energetyczności budynków, Twój model może przestać działać prawidłowo.
Monitorowanie: Polega na śledzeniu wydajności modelu (np. RMSE, R-kwadrat) w czasie rzeczywistym lub w regularnych odstępach. Używamy narzędzi do zbierania metryk, generowania alertów i analizy przyczyn problemów.
Techniki Wdrażania:
Narzędzia do Monitoringu: Wiele firm oferuje rozwiązania do monitorowania modeli (np. MLflow, Prometheus z Grafaną).
Wyobraź sobie, że wdrożyłeś swój model regresji liniowej do przewidywania cen mieszkań. Użyj biblioteki matplotlib
do stworzenia prostego wykresu, który w czasie (np. po dniach) pokazuje RMSE twojego modelu. Symuluj dane dla RMSE (np. generuj losowe wartości). Jak zareagowałbyś, gdyby RMSE nagle wzrosło?
Zaprojektuj prostą symulację data drift. Weź swój model regresji liniowej z poprzedniej lekcji. Zmodyfikuj zbiór danych treningowych, dodając do zmiennej niezależnej (np. powierzchnia mieszkania) stałą wartość w kolejnych iteracjach. Sprawdź, jak wpływa to na RMSE Twojego modelu.
Wdrażanie i monitoring modeli to codzienność w wielu branżach:
Pamiętaj, że wdrożenie i monitoring są tak samo ważne jak sama budowa modelu. Bez nich model w realnym świecie jest bezużyteczny!
Spróbuj zintegrować swój model regresji liniowej z prostym API (np. Flask). Utwórz endpoint, który przyjmuje dane wejściowe i zwraca przewidywaną cenę. Dodatkowo, zaimplementuj proste logowanie metryk wydajności modelu po każdym wywołaniu API (np. RMSE dla podanych danych wejściowych).
Stwórz przykładowe dane dla regresji liniowej: liczba godzin nauki i ocena z egzaminu. Podziel dane na zbiory treningowy i testowy. Użyj `train_test_split` z `sklearn.model_selection`.
Na podstawie danych z poprzedniego ćwiczenia, zbuduj model regresji liniowej za pomocą `LinearRegression` z `sklearn.linear_model`. Wytrenuj model na zbiorze treningowym.
Wykorzystaj wytrenowany model do przewidywania ocen na zbiorze testowym. Oblicz RMSE, aby ocenić skuteczność modelu. Użyj `mean_squared_error` z `sklearn.metrics`.
Zastanów się: Jaki wpływ na RMSE miał podział danych na treningowe i testowe? Jak interpretujesz współczynniki modelu (nachylenie i wyraz wolny)? Odpowiedz w kilku zdaniach.
Wyobraź sobie, że pracujesz w firmie zajmującej się sprzedażą mieszkań. Twoim zadaniem jest stworzenie modelu, który przewiduje cenę mieszkania na podstawie jego powierzchni i lokalizacji. Użyj regresji liniowej, a następnie zinterpretuj wyniki i oceń przydatność modelu w realnych warunkach.
Zapoznaj się z pojęciem krzywej uczenia (learning curve) i różnymi metodami ewaluacji modeli. Przygotuj się na naukę o modelach regresji wielorakiej (wielowymiarowej).
We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.