Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:ml:lab4 [2013/02/15 13:46] esimon [Normal Equation] |
pl:dydaktyka:ml:lab4 [2019/06/27 15:50] (aktualna) |
====== Laboratorium 2 - Regresja Liniowa ====== | ====== Laboratorium 4 - 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 |
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. |
| |
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//. |
| |
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 |
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. |
| |
| |
**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// |
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 o powierzchni 1650 stóp kwadratowych i 3 sypialniach. | 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...:) |
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. | 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. |
| |
| |
| |
| |