You are on page 1of 30

Podstawy uczenia maszynowego

Wykład 2

Regresja liniowa i logistyczna


Przygotowała:
Prof. dr hab. inż. Urszula Markowska-Kaczmar
Kontakt: urszula.markowska-kaczmar@wsb.wroclaw.pl,
u.markowskakaczmar@gmail.com
Regresja liniowa - znajdowanie wartości
przewidywanej
Załóżmy, że dana jest funkcja

Chcemy policzyć wartość ceny dla  

Np. x=.[0.1, 9.3, 5.6]


Mnożenie to iloczyn skalarny

# weight w has shape (p, 1) • Funkcja dana wzorem to nasz model


# bias b is a scalar • w1, w2 , w3 oraz b – parametry modelu
# data x has shape (p, 1)
y_hat = (w*x).sum() + b
Regresja liniowa - zbiór uczący
• Żeby znaleźć parametry modelu (wagi i bias), musimy mieć dane, które
pozyskujemy np. z jakiegoś serwisu np. OTODOM
l. sypialni l.łązienek Metry cena
• Dane mogą w postaci tabeli kwadratow
• Każdy pojedynczy rekord w tabeli to para: e
  3 2 160 1,5 mln
3 1 140 1,7 mln
• Mówimy, że tworzymy n wzorców uczących 5 3 240 4 mln
….
2 1 100 1,2mln
• Z etykietami …
5 3 260 4,1 mln
• Na podstawie tych danych chcemy znaleźć
• model - w tym przypadku funkcję liniową
   
• tzn. parametry w , w , w oraz b.
Regresja liniowa przykład
Predykcja cen domów
Mamy 3 cechy: x1=#l.sypialni, x2=#l.łazienek, x3=#metry kwadratowe
przewidywana cena
Parametrami tego modelu są wagi w i bias (wyraz wolny)
Ogólnie regresja liniowa służy do przewidywania wartości dla danego punktu

• Żeby mieć rozwiązanie potrzeba znaleźć wagi w i bias. Wyznaczamy je na podstawie zbioru
uczącego.
• w = [w1,w2, …,wp] bias: b
• # weight w has shape (p, 1)
• # bias b is a scalar
• # data x has shape (p, 1)
• y_hat = (x*w).sum() + b
Model
• Uogólniając wykorzystując przygotowane dane chcemy znaleźć funcję
liniową opisującą w zależności od wejść

• Nasz model możemy opisać jako


• Wektor to zawsze wektor kolumna


• T- oznacza transpozycję wektoraIloczyn
czyli powstaje
skalarny wektor wiersz
Mnożenie wektorów jak macierzy
Wymiary macierzy są ważne!
Uczenie
Mając dany zbiór P składający się z par <> P , gdzie jest liczbą wzorców

Chcemy na podstawie zbioru uczącego znaleźć f(), która będzie poprawnie działała na zbiorze T
danych testowych

Zbiór P i T powinny pochodzić z


tego samego rozkładu danych D

Miarą jakości (poprawności) działania jest oczekiwana wartość funkcji straty 𝑙(f, 𝑥,𝑦)]

𝐿(𝑓)=𝔼 (𝑥,𝑦)~D[𝑙(f, 𝑥,𝑦)]


D rozkład danych
Jak znaleźć model - funkcję?
Funkcja f() to funkcja realizowana przez nasz model.
Minimalizujemy tzw. empiryczną funkcję straty

Nasze działanie:
1. Zebrać zbiór danych
2. Podzielić zbiór na uczący i testowy
3. Wybrać funkcję straty
4. Znaleźć parametry modelu (w naszym przypadku
współczynniki w i bias b) minimalizując funkcję straty
(OPTYMALIZACJA)
Funkcja celu (straty, błąd)
Żeby wyuczyć parametry musimy mieć jakąś miarę y
jakości
Tutaj wykorzystamy błąd średniokwadratowy
(Mean Square Error MSE )

objaśniana
Zmienna
Jest to odległość danego punktu od wyznaczonej
prostej (odcinek na czerwono)

Naszym celem znalezienia wag w* i biasu b* , aby


błąd był minimalny (min funkcji straty):
x
Zmienna niezależna

 
Nasz przybliżony wynik z równania prostej
Błąd MSE
Błąd średniokwadratowy (ang. Mean
Square Error MSE)

(𝑓𝑤)=
MSE

w2

Jest to funkcja wypukła.


Mamy gwarancję, że przy odpowiednio w1
długim uczeniu osiągniemy minimum błędu
Gradient Descent
Iteracyjny algorytm optymalizacji wykorzystujący
pochodną pierwszego rzędu (gradient) do znajdowania
lokalnego minimum funkcji różniczkowalnej.
Minimalizujemy funkcję straty (𝜃) modelu, którego
parametrami są 𝜃 (ogólne oznaczenie na wagi i bias)
Metoda spadku gradientu (Gradient Descent)
• Inicjujemy 𝜃0
• W kolejnym kroku t algorytmu obliczamy parametry
modelu:
𝜃𝑡+1=𝜃𝑡−𝜂𝑡𝛻(𝜃)
• 𝜂𝑡 jest współczynnikiem uczenia
Stochastic Gradient Descent

W każdym kroku t wzorce uczące są przetwarzane


pojedynczo (jeden krok uczenia)
Strata (𝜃)= , w danej chwili i znamy tylko
Wykorzystujemy jedynie lokalną informację
Parametry 𝜃 (wagi wi na rysunku obok)
modelu są znajdowane iteracyjnie:
MSE
Inicjujemy 𝜃0 (losowo)
W każdym następnym kroku: 𝜃0 w2
𝜃1 �
𝜃i+1=𝜃i−𝜂i𝛻𝑙(, , ) �
𝜃i �

0
0
w1
Różne strategie uaktualniania parametrów
• Stochastic Gradient Descent – aktualizacja
parametrów odbywa się po każdym kroku (wzorcu
uczącym)
• Batch Gradient Descent po każdym wzorcu
obliczany jest gradient, wszystkie gradienty są
sumowane dla całego zbioru uczącego i uśredniane;
aktualizacja parametrów modelu odbywa się na końcu
epoki (po podaniu całego zbioru uczącego).
• Mini-batch Stochastic Gradient Descent funkcja
kosztu obliczana jest dla m wzorców (m- to rozmiar
paczki wzorców (mini batch), sumowana i uśredniana,
następnie aktualizowane są parametry modelu
Uczenie – obliczenie parametrów
Naszym celem jest znalezienie modelu 𝑓𝑤(𝑥)=𝑤𝑇𝑥, Mean Square
Error (MSE)
która minimalizuje stratę
𝑓𝑤)=
Żeby znaleźć tę funkcję, musimy znaleźć
parametry (wagi w i bias)

𝑤𝑖𝑙𝑒𝑘𝑜ść
Przyjmując, że 𝑙(𝑤, , )=( )2
Wagi obliczane są po każdym wzorcu

=−𝜂𝑡𝛻𝑙(, , )=𝑤𝑡−2𝜂𝑡()
- współczynnik uczenia, waga
liczba wzorców,
Znajdujemy współczynniki prostej np:
Model regresji w zadaniu klasyfikacji
binarnej w postaci neuronu
Parametry modelu (𝜃 =wagi i bias) znajdowane są
iteracyjnie w procedurze uczenia.
w w1 Uczenie odbywa się metodą LMS – ang.Least Mean
x1
z =𝑤𝑇 𝑥
^𝑦
Square (minimalizacja błędu między yi a zi )
x2 w2 1.Zastosować wektor xt do wejść Adaline
ADALINE 2.Określić wartość błędu kwadratowego

(𝑤𝑡𝑇𝑥𝑡−𝑦t)2
• Wprowadzamy dodatkowe
wejście w0 nazywane biasem 3.Obliczyć gradient (przyrost wag)
• Sygnał na tym połączeniu jest
= -2 ()𝑥𝑡
zawsze równy 1.
• Na wyjściu jest funkcja skokowa 4.Uaktualnić wagi następująco:
• W odpowiedzi na wyjściu
otrzymujemy albo 0, albo 1
• Czy nie lepiej zastosować inną 5.Powtarzać kroki 1 do 4 dla następnego wektora
funkcję zamiast skokowej? wejściowego, dopóki błąd nie osiągnie wystarczająco małej
wartości.
Użycie liniowej regresji do
klasyfikacji
• Regresja: etykiety rzeczywistoliczbowe
• Klasyfikacja binarna (wartości binarne)
• Klasyfikacja wieloklasowa:
Kodowanie wyjścia w postaci wektora „1 z
n” (ang. one hot),
gdzie i-te wyjście jest pewnością
rozpoznania klasy.
Liniowa regresja w zadaniu
binarnej klasyfikacji
Mając dany zbiór trenujący {<>: 1≤𝑖≤𝑛} z rozkładu 𝐷
Należy znaleźć 𝑓𝑤(𝑥)=𝑥, która minimalizuje:
Redukujemy wyjście do 𝑦i∈{0,1},bo
(𝑓𝑤)= rozpatrujemy dwie klasy

Dążymy do tego, aby suma kwadratów odległości


między predykowanym wyjściem a jego etykietą
była jak najmniejsza

Klasa koszykarzy oznaczona jako 1


Klasa dżokejów oznaczona jako 0
Regresja logistyczna
Klasyfikacja binarna
PRZYKŁADY:
Chcemy określić czy mail jest spamem czy nie
Czy rak jest złośliwy czy nie.

Mamy do czynienia z 2 klasami, z których jedną kodujemy jako zero a drugą jako
jeden.
Wystarczy nam jedno wyjście, które może przyjmować 2 binarne wartości.
Regresja logistyczna – do klasyfikacji
Funkcja ograniczona, wartości
pomiędzy 0 a 1, y∈(0,1).

Może zastąpić funkcję skokową.


Możemy ją interpretować jako
prawdopodobieństwo:
• 𝑃𝑤(𝑦=1|𝑥)=
Funkcja straty
Mając dany zbiór trenujący {<, >: 1≤𝑖≤𝑛} z rozkładu 𝐷
Należy znaleźć parametry 𝑤, które minimalizują funkcję straty, która jest
obliczana przy użyciu ujemnego gradientu wiarygodności (ang. negative log
likelyhood)

𝐿 ( 𝑤 ) =− ∑ log   𝜎 ( 𝑤 𝑥𝑡 ) −
^ ∑
𝑇
log ⁡¿ ¿
𝑦 𝑖 =1 𝑦 𝑖= 0

W ogólności nie istnieje algebraiczne rozwiązanie


Musimy używać gradientowego podejścia iterując po
wszystkich wzorcach
Funkcja straty – poszukiwanie parametrów
Poszukujemy parametrów 𝑤, które minimalizują
𝑤= − −
Możemy to sprowadzić do

gdzie strata dla pojedynczego wzorca jest określona następująco


𝑙(𝑤,𝑥𝑡,𝑦𝑡)=log𝜎(𝑤𝑇𝑥𝑡)
Wyznaczanie parametrów
Przypomnijmy: funkcja sigmoidalna wyraża się wzorem:

Pochodna 𝜎′(z)=𝜎(z)(1−𝜎(z)) gdzie z= Funkcja złożona (log,


Funkcja straty dla pojedynczego wzorca sigmoida, liniowa), obliczając
gradient stosujemy regułę
𝑙(𝑤, , )=log 𝜎()
łańcuchową
wagi obliczamy:
=−𝜂 𝛻𝑙(, , )=𝑤𝑡+

=+𝑦𝑡
gdzie:
𝑎=

Wzór na wyznaczanie
parametrów
Klasyfikacja binarna – regresja
logistyczna
Przygotowujemy zbiór uczący:
Etykieta wyjściowa ma 0 lub 1.
Przykład: model został
wyuczony do określania czy
przyznać kredyt.
Dane wejściowe tak jak poprzednio Przychodzi klient opisywany
Na wyjściu nigdy nie dostaniemy dokładnie cechami :
0 lub dokładnie 1. wiek 50
W trakcie uczenia dążymy, aby odpowiedzi zarobki 10000
były jak najbliżej 0 lub jak najbliżej 1 dla
l. osób na 5
przeciwnej klasy Wyuczony model utrzymaniu
regresji logistycznej
𝑥1 płeć K

𝑥2 ^𝑦
𝑇 Chcemy wiedzieć czy takiej
𝑥3
𝑤 𝑥
osobie przyznać kredyt. Jeśli
odpowiedzieć będzie bliska 0
𝑥4
tzn. NIE jeśli bliska 1 to TAK.
Zbiór danych

Zbiór uczący Zbiór Dev Zbiór testowy

Dane dzielone są na 3 zbiory: zbiór uczący, zbiór dev, zbiór testowy

Uwaga! Zbiór Dev (od development) w starszych podejściach nazywany był


zbiorem walidacyjnym,
Podział procentowy w zależności od wielkości całego zbioru danych
Obecnie przy dużych zbiorach danych rzędu ponad 106:
zbiór uczący -98%, dev -1%, zbiór testowy - 1%
Pamiętajmy, że dane we wszystkich zbiorach muszą mieć ten sam rozkład.
Ucząc sieć pamiętajmy o losowej kolejności wzorców.
Walidacja modelu

Zbiór testowy zwykle do badania błędu uogólniania


• nigdy wcześniej nie podajemy do modelu – jest używany tylko raz na
końcu
• Zbiór walidacyjny (dev):
• podzbiór, który nie jest wykorzystywany w trakcie trenowania,
• jest używany do znajdowania hiperparametrów modelu (np.
współczynnika uczenia).
Podział zbioru danych
• Losowy podział danych może prowadzić do niedoszacowania błędu uogólniania
• Przy danych sekwencyjnych
• Np. kurs dolara
• Zbiór testowy nie może się pokrywać ze zbiorem treningowym
• Przykłady uczące można łatwo pogrupować
• Np. zdjęcia tej samej osoby, klipy tego samego wideo
• Podział grup (klastrów zamiast konkretnych próbek)
• A co z klasami bardzo niezbalansowanymi ?
• Np. dla pacjentów z rzadka chorobą?
• Próbkuj więcej wzorców z klasy mniejszościowej.
Walidacja krzyżowa
Użyteczna gdy mamy mało danych
Algorytm: Dane
Podział zbioru danych na K części (foldów)
For i = 1, …, K Train
Fold 1 Test Train
użyj i-tej części jako zbioru testowego,
pozostałe części połącz tworząc zbiór trenujący
Fold 2 Train Test Train
Określ błąd na zbiorze testowym po uśrednieniu
po K przejściach
Najczęściej: K = 5 lub 10 Fold 3 Train Train Test
Popularne błędy przy testowaniu

Jeśli funkcjonowanie modelu jest zbyt dobre, bardzo prawdopodobny jest błąd
w kodzie.
Zbiór walidujący ma zduplikowane przykłady ze zbioru trenującego => to się
często zdarza przy połączeniu różnych zbiorów danych

Intensywne wykorzystywanie zbioru walidującego do poszukiwania


parametrów jest oszukańcze.
Podsumowanie

Poznaliśmy dwa modele:


• regresję liniową,
• regresję logistyczną
Różne sposoby aktualizacji parametrów wszystkie oparte na optymalizacji
gradientowe GD:
• SGD – stochastic gradient
• Batch GD – aktualizacja parametrów po całym zbiorze uczącym
• Minibatch GD – aktualizacja po paczce wzorców.

You might also like