Both sides previous revision
Poprzednia wersja
|
|
pl:dydaktyka:ml:lab5 [2013/03/21 13:37] esimon [Regularized Cost Function] |
pl:dydaktyka:ml:lab5 [2013/03/21 13:48] esimon [Regularized Cost Function] |
Przetestuj działanie funkcji za pomocą skryptu //check.m// | Przetestuj działanie funkcji za pomocą skryptu //check.m// |
===== Regularized Cost Function ===== | ===== 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) | 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. |
| |
| {{:pl:dydaktyka:ml:overfit-lr3.png|Overfitting}} |
| |
| Parametrem, który pozwala na regularyzację jest parametr $\lambda$. W zależności od jego wartości możemy skutecznie zlikwidować problem overfittingu. Jednak zwiększając nieodpowiedzialnie wartość tego parametru możemy doprowadzić do sytuacji, w której algorytm uczący nie będzie dobrze klasyfikował nawet danych treningowych - zobacz rysunek poniżej. |
| |
| {{:pl:dydaktyka:ml:underfit-lr4.png|}} |
| |
Funkcja kosztu uwzględniająca regularyzację określona jest następującym wzorem: | Funkcja kosztu uwzględniająca regularyzację określona jest następującym wzorem: |
**Dla** $j\geq1$ | **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$$ | $$\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$$ |
| |
| Sprawdź swoją implementację za pomocą skryptu //ex2_reg.m// oraz //check.m//. |
| |
| **Uwaga** Otwórz plik //ex2_reg.m// i przetestuj działanie algorytmu zmieniając wartość współczynnika $\lambda$ w okolicach linii 90. |
| |
| |