Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:ml:lab5 [2013/03/21 13:37]
esimon [Regularized Cost Function]
pl:dydaktyka:ml:lab5 [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Laboratorium 5 - Regresja Logistyczna ====== 
-Ćwiczenia bazujące na materiałach Andrew Ng.\\ 
-Przed zajęciami przejrzyj wykłady VI-VII: [[https://​class.coursera.org/​ml/​lecture/​preview|Logistic regression]] ​ 
- 
-{{:​pl:​dydaktyka:​ml:​ex2.pdf|Instructions}} in English. 
- 
-Ćwiczenia do pobrania (files to download): {{:​pl:​dydaktyka:​ml:​logistic-regression.zip|}} 
- 
-===== Lista i opis plików ===== 
-Pliki oznaczone znakiem wykrzyknika (:!:) należy wypełnić własnym kodem 
- 
-  * //ex2.m// - Skrypt Octave, który pomaga w przejściu pierwszej części laboratorium 
-  * //​ex2_reg.m//​ - Skrypt Octave, który pomaga w przejściu pierwszej części laboratorium 
-  * //​ex2data1.txt//​ - Training set for the rst half of the exercise 
-  * //​ex2data2.txt//​ - Training set for the second half of the exercise 
-  * //​mapFeature.m//​ - Function to generate polynomial features 
-  * //​plotDecisionBounday.m//​ - Function to plot classi er'​s decision boundary 
-  * //​plotData.m//​ - Function to plot 2D classi cation data 
-  * :!: //​sigmoid.m//​ - funkcja sigmoidalna 
-  * :!: //​costFunction.m//​ -funkcja kosztu dla regresji logistycznej 
-  * :!: //​predict.m//​ - funkcja klasyfikująca 
-  * :!: costFunctionReg.m - zregularyzowana funkcja kosztu dla regresji logistycznej 
- 
-===== Wstęp ===== 
-W tej części laboratorium będziemy budować model regresji logistycznej,​ który pozwoli przewidywać czy kandydat na studia zostanie przyjęty, czy odrzucony. 
- 
-Zakładając że chcesz ustalić szanse dostania się na studia bazując na wynikach dwóch egzaminów. Masz dostępne dane historyczne w postaci wyników z poprzednich lat i związanej z nimi decyzji: przyjęty/​nieprzyjęty. 
- 
-Twoim zadaniem jest zbudowanie klasyfikatora,​ który oszacuje prawdopodobieństwo przyjęcia danego kandydata na studia w zależności od wyników dwóch egzaminów. 
- 
-Wykres obrazujący dane historyczne przedstawiony jest poniżej. ​ 
-Żółte kropki oznaczają odrzucone kandydatury,​ a czarne krzyżyki przyjętych studentów. Na osiach przedstawione są punkty z danego egzaminu. 
- 
-{{:​pl:​dydaktyka:​ml:​plot-data-lr1.png|Dane historyczne o przyjęciach na studiach}} 
- 
-===== Sigmoid Function ===== 
-Funkcja hipotezy dla regresji logistycznej wygląda w sposób następujący:​ 
-$$h_0(x) = g(\theta^Tx)$$ 
-Funkcja g jest funkcją sigmoidalną,​ określoną wzorem: 
-$$g(z) = \frac{1}{1+e^{-z}}$$ 
- 
-Funkcja sigmoidalna została przedstawiona na rysunku poniżej. 
-Uzupełnij kod pliku //​sigmoid.m//​ tak aby można wyznaczała ona wartość funkcji sigmoidalnej. Możesz spróbować wyrysować funkcję sigmoidalną przy pomocy zaimplementowanej funkcji. Powinna ona wyglądać tak jak poniżej. 
- 
-{{:​pl:​dydaktyka:​ml:​sigmoid-lr2.png|Funkcja sigmoidalna}} 
- 
-**Uwaga** Funkcja powinna działać także dla wektorów i macierzy! 
- 
-**Uwaga** W przypadku macierzy/​wektora funkcja powinna wyznaczyć wartość funkcji sigmoidalnej dla każdego elementu z osobna. 
- 
-Przetestuj działanie funkcji za pomocą skryptu //check.m// 
-===== Cost Function ===== 
-Funkcja kosztu dla regresji logistycznej wygląda następująco:​ 
-$$J(\theta) = \frac{1}{m}\sum\limits_{i=1}^m(-y^{(i)}log(h_\theta(x^{(i)})) - (1 - y^{(i)})log(1-h_\theta(x^{(i))})))$$ 
- 
-Natomiast gradient funkcji kosztu to wektor o tych samych wymiarach co wektor $\theta$, gdzie $j$-ty element (dla $j=0,​1,​...,​n$) jest zdefiniowany jako: 
-$$\frac{\partial J(\theta)}{\partial\theta_j}= \frac{1}{m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j$$ 
- 
-Zaimplementuj funkcję znajdującą się w pliku //​costFunction.m//​ i przetestuj jej działanie za pomocą skryptów //check.m// i //​ex2.m//​. ​ 
- 
-=====Gradient Descent ===== 
-Na poprzednich laboratoriach implementowaliśmy funkcję gradient descent, która krok po kroku aktualizowała współczynniki $\theta$. ​ 
- 
-W tym laboratorium skorzystamy z wbudowanej w Octave funkcji //​fminunc//​. 
-Otwórz plik //ex2.m// i obejrzyj kod w okolicach linii 77-87 aby zobaczyć w jaki sposób korzysta się z tej funkcji. 
-===== Predict ===== 
-Dzięki wyznaczonym parametrom jesteśmy w stanie obliczyć prawdopodobieństwo dostania się na studia. Dla przykładu prawdopodobieństwo że student, który uzyskał 45 punktów z pierwszego egzaminu i 85 punktów z drugiego zostanie przyjęty na uczelnię wynosi 0.776. 
- 
-Nam zależy jednak na tym aby otrzymać jednoznaczną odpowiedź //tak// lub //nie//. W tym celu uzupełnij funkcję //​predict.m//​. Powinna ona zwracać 1, gdy wartość funkcji hipotezy jest większe bądź równe 0.5 i 0 w przeciwnym wypadku. 
- 
-Przetestuj działanie funkcji za pomocą skryptu //check.m// 
-===== Regularized Cost Function ===== 
-Regularyzacja pomaga zwalczyć problem tzw. //​overfittingu//​ danych, który pojawia się gdy do uczenia wykorzystujemy zbyt wiele parametrów przy jednoczesnej niewielkiej ilości przykładów uczących. //​Overfitting//​ skutkuje nadmiernym dopasowaniem do danych uczących i utrata pewnej generalizacji. Efektem //​Overfittingu//​ jest to, że algorytm idealnie działa na zbiorze uczącym, natomiast bardzo niedokładnie klasyfikuje dane ze zbioru testowego. (zobacz rysunek poniżej) 
- 
-Funkcja kosztu uwzględniająca regularyzację określona jest następującym wzorem: 
-$$J(\theta) = (\frac{1}{m}\sum\limits_{i=1}^m(-y^{(i)}log(h_\theta(x^{(i)})) - (1 - y^{(i)})log(1-h_\theta(x^{(i))}))))+\frac{\lambda}{2m}\sum\limits_{j=2}^n\theta_j^2$$ 
- 
-**Uwaga** Nie normalizujemy parametru $\theta_0$ :!: W Octave indeksy zaczynają się od 1, dlatego parametr, który powinien zostać pominięty to //​theta(1)//​. Gradient w takim wypadku przedstawia się następująco:​ 
- 
-**Dla** $j=0$ 
-$$\frac{\partial J(\theta)}{\partial\theta_0}= \frac{1}{m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j$$ 
- 
-**Dla** $j\geq1$ 
-$$\frac{\partial J(\theta)}{\partial\theta_j}= (\frac{1}{m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j)+\frac{\lambda}{m}\theta_j$$ 
  
pl/dydaktyka/ml/lab5.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0