Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:ml:lab4 [2013/02/15 13:37]
esimon [Gradient Descent Multi]
pl:dydaktyka:ml:lab4 [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== Laboratorium ​- Regresja Liniowa ====== +====== Laboratorium ​- Regresja Liniowa ====== 
-{{:pl:dydaktyka:​ml:​prv:​ex1.pdf|Instrukcja}} w języku angielskim.+Ćwiczenia bazujące na materiałach Andrew Ng.\\ 
 +Przed zajęciami przejrzyj wykłady II-IV[[https://class.coursera.org/​ml/​lecture/​preview|Linear regression]] ​
  
-Ćwiczenia do pobrania: {{:​pl:​dydaktyka:​ml:prv:​ex1.zip|Regresja Liniowa}}+{{:​pl:​dydaktyka:​ml:​ex1.pdf|Instrukcja}} w języku angielskim. 
 + 
 +Ćwiczenia do pobrania: {{:​pl:​dydaktyka:​ml:​ex1.zip|Regresja Liniowa}}
 ===== Lista i opis plików ===== ===== Lista i opis plików =====
 Pliki oznaczone znakiem wykrzyknika (:!:) należy wypełnić własnym kodem Pliki oznaczone znakiem wykrzyknika (:!:) należy wypełnić własnym kodem
Linia 32: Linia 35:
 Jeśli coś nie działa, uruchom skrypt //check//. Przeprowadza on test działania poszczególnych funkcji i pokazuje poprawne wyniki. Jeśli coś nie działa, uruchom skrypt //check//. Przeprowadza on test działania poszczególnych funkcji i pokazuje poprawne wyniki.
 ===== Regresja Liniowa dla jednej zmiennej ===== ===== Regresja Liniowa dla jednej zmiennej =====
-W tej części zajmiemy się przypadkiem regresji liniowej dla przypadku dwuwymiarowego.+W tej części zajmiemy się przypadkiem regresji liniowej dla jednej zmiennej.
 Załóżmy, że jesteśmy CEO sieci restauracji i planujemy otwarcie kilku kolejnych lokali. ​ Załóżmy, że jesteśmy CEO sieci restauracji i planujemy otwarcie kilku kolejnych lokali. ​
  
Linia 43: Linia 46:
 Aby dowiedzieć się więcej o funkcji plot, wpisz w konsoli Octave <​code>​ help plot</​code>​ Aby dowiedzieć się więcej o funkcji plot, wpisz w konsoli Octave <​code>​ help plot</​code>​
  
-{{:​pl:​dydaktyka:​ml:prv:​plot1.png|Wykres danych uczących}}+{{:​pl:​dydaktyka:​ml:​plot1.png|Wykres danych uczących}}
  
 Sprawdź działanie funkcji za pomocą skryptu //ex1//. Sprawdź działanie funkcji za pomocą skryptu //ex1//.
Linia 50: Linia 53:
  
 Funkcja kosztu dana jest wzorem: Funkcja kosztu dana jest wzorem:
-$$J(\theta= \frac{1}{2m}\sum\limits_{i=1}^m(H_{\theta}(x^{(i)}})-y^{(i)}})^2$$+$$J(\theta= \frac{1}{2m}\sum\limits_{i=1}^m(h_{\theta}(x^{(i)}})-y^{(i)}})^2$$
  
 Gdzie Gdzie
Linia 72: Linia 75:
 Powinieneś zobaczyć następujący wynik: Powinieneś zobaczyć następujący wynik:
  
-{{:​pl:​dydaktyka:​ml:prv:​plot2.png|Wynik działania algorytmu regresji liniowej}}+{{:​pl:​dydaktyka:​ml:​plot2.png|Wynik działania algorytmu regresji liniowej}}
 ===== Regresja Liniowa dla wielu zmiennych ===== ===== Regresja Liniowa dla wielu zmiennych =====
 Zakładamy, ze chcemy sprzedać dom, ale nie jesteśmy pewni jaką cenę ustalić. Mamy dostęp do danych o innych domach i cenach za jakie zostały sprzedane. Na tej podstawie chcemy ustalić cenę naszego domu.  Zakładamy, ze chcemy sprzedać dom, ale nie jesteśmy pewni jaką cenę ustalić. Mamy dostęp do danych o innych domach i cenach za jakie zostały sprzedane. Na tej podstawie chcemy ustalić cenę naszego domu. 
Linia 93: Linia 96:
  
  
-**Uwaga** Pamiętaj aby nie normalizować pierwszej kolumny danych! Spróbuj wykorzystać maksymalnie jedną pętle. Funkcja powinna działać nie tylko dla przypadku //​n-wymiarowego//​. 
  
 Sprawdź działanie funkcji skryptem //check.m// Sprawdź działanie funkcji skryptem //check.m//
Linia 121: Linia 123:
 Otwórz plik //​ex1_multi.m//​ i w okolicach linii 85 dokonaj następujących modyfikacji:​ Otwórz plik //​ex1_multi.m//​ i w okolicach linii 85 dokonaj następujących modyfikacji:​
   * zmień ilość iteracji na 50   * zmień ilość iteracji na 50
-  * zmieniaj współczynnik $\alpha$, przypisując mu wartości: 0.3, 0.1, 0.03, etc. ($x_{i+1} = x_{i}/3$) +  * zmieniaj współczynnik $\alpha$, przypisując mu wartości: 0.3, 0.1, 0.03, etc. ($x_{i+1} = x_{i}*3$) 
  
 Zobacz jak zmienia się wykres funkcji kosztu. Dobierz dane tak, aby wykres wyglądał tak jak poniżej: Zobacz jak zmienia się wykres funkcji kosztu. Dobierz dane tak, aby wykres wyglądał tak jak poniżej:
-{{:​pl:​dydaktyka:​ml:prv:​plot3.png|Wykres funkcji kosztów względem liczby iteracji}}+{{:​pl:​dydaktyka:​ml:​plot3.png|Wykres funkcji kosztów względem liczby iteracji}}
  
 === Wyznaczenie aproksymacji ceny domu === === Wyznaczenie aproksymacji ceny domu ===
  
-Teraz, kiedy współczynnik uczący został poprawnie dobrany, należy zmodyfikować plik //​ex1_multi.m//​ w okolicach linii 104, tak aby do zmiennej //price// przypisana została aproksymowana wartość domu.+Teraz, kiedy współczynnik uczący został poprawnie dobrany, należy zmodyfikować plik //​ex1_multi.m//​ w okolicach linii 104, tak aby do zmiennej //price// przypisana została aproksymowana wartość domu o powierzchni 1650 stóp kwadratowych i 3 sypialniach.
  
-Powinieneś otrzymać wartość, około ​272725+Powinieneś otrzymać wartość, około ​290000.
  
 **Uwaga** Pamiętaj o normalizacji danych...:) **Uwaga** Pamiętaj o normalizacji danych...:)
Linia 137: Linia 139:
  
 ==== Normal Equation ==== ==== Normal Equation ====
 + ​Wartości współczynników $\theta$ mogą zostać wyznaczone bez konieczności uruchamiania algorytmu gradient descent. Wystarczy zastosować poniższe równanie:
 +$$\theta = (X^TX)^{-1}X^Ty$$
  
 +Zwróć uwagę, że w tym przypadku nie jest konieczna normalizacja.
  
 +Zmodyfikuj plik //​ex1_multi.m//​ w okolicach linii 152, tak aby do zmiennej //price// przypisana została aproksymowana wartość domu o powierzchni 1650 stóp kwadratowych i 3 sypialniach.
  
- +Powinieneś otrzymać wartość podobną do tej wyznaczonej w przypadku algorytmu Gradient Descent. 
 +==== Uwagi ==== 
 +Dużo materiału. Nie wszyscy zdążyli ze zrobieniem wszystkich zadań. Być może następnym razem opłacałoby się rozbicie tych lab na dwie części.
  
  
  
  
pl/dydaktyka/ml/lab4.1360931876.txt.gz · ostatnio zmienione: 2019/06/27 15:54 (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