Projekt zrealizowany w ramach przedmiotu Uczenie Maszynowe. Skupia się na autorskiej implementacji algorytmów optymalizacji oraz badaniu wpływu różnych hiperparametrów na proces uczenia modeli regresji liniowej (1D, nD) oraz wielomianowej.
Autorzy: Jakub Antas, Łukasz Szydlik
Głównym celem projektu było zrozumienie matematycznych podstaw działania regresji. Zamiast polegać wyłącznie na gotowych rozwiązaniach, zaimplementowaliśmy własną klasę regresji obsługującą różne warianty optymalizacji i funkcje kosztu.
- Metody optymalizacji: Batch Gradient Descent, Mini-batch Gradient Descent, Stochastic Gradient Descent (SGD).
- Funkcje kosztu: MSE (Mean Squared Error), MAE (Mean Absolute Error), Huber Loss.
- Transformacje: Standaryzacja cech (Z-score normalization) oraz transformacja wielomianowa cech.
W projektach wykorzystano trzy zróżnicowane zestawy danych:
- Salary Dataset (1D): Prosta zależność między latami doświadczenia a wynagrodzeniem.
- Red Wine Quality (nD): Zbiór 11 cech fizykochemicznych określających jakość wina.
- Ice Cream Sales (Wielomianowa): Nieliniowa zależność sprzedaży od temperatury.
Projekt został podzielony na 8 szczegółowych eksperymentów:
-
Walidacja 1D: Porównanie autorskiej implementacji z
scikit-learn. -
Learning Rate (
$\alpha$ ): Analiza stabilności zbieżności przy różnych krokach gradientu. - Odporność na Outliery: Zachowanie funkcji kosztu w obecności anomalii.
- Warianty Gradient Descent: Porównanie stabilności Batch vs Mini-batch vs SGD.
- Regresja Wielowymiarowa (nD): Skalowanie modelu do wielu cech na zbiorze wina.
- Dynamika nD: Wpływ parametrów na złożone powierzchnie kosztu.
- Regresja Wielomianowa: Modelowanie krzywych stopnia 2 przy użyciu transformacji cech.
- Analiza Gęstości Błędów: Porównanie rozkładów residuów (KDE) dla różnych funkcji kosztu.
- Standaryzacja: Jest absolutnie kluczowa dla regresji wielowymiarowej i wielomianowej – bez niej algorytmy gradientowe szybko stają się niestabilne.
- Funkcja Hubera: Okazała się najbardziej wszechstronna – łączy szybkość zbieżności MSE (dla małych błędów) z odpornością na outliery charakterystyczną dla MAE.
- Mini-batch GD: Stanowi najlepszy kompromis między stabilnością a kosztem obliczeniowym, szczególnie przy większych zbiorach danych.
- Struktura Błędów: Analiza KDE wykazała, że modele optymalizowane pod MAE i Huber Loss mają tendencję do generowania błędów bardzo bliskich zeru częściej niż MSE.
- Język: Python 3.x
- Biblioteki:
NumPy– obliczenia macierzowe i implementacja algorytmów.Pandas– manipulacja zbiorami danych.Matplotlib&Seaborn– wizualizacja wyników i rozkładów błędów.Scikit-learn– wykorzystana wyłącznie do walidacji wyników (model referencyjny).
.
├── Project.ipynb # Pełny kod z eksperymentami i wykresami
├── images/ # Wygenerowane wykresy
└── docs/
└── docs.pdf # Dokumentacja końcowa
└── docs.tex # Źródło LaTeX dokumentacji