diff --git a/wyk/05_Metody_ewaluacji.ipynb b/wyk/05_Metody_ewaluacji.ipynb index fd75c2f..dfbbd8b 100644 --- a/wyk/05_Metody_ewaluacji.ipynb +++ b/wyk/05_Metody_ewaluacji.ipynb @@ -53,10 +53,10 @@ } }, "source": [ - "* Na zbiorze uczącym (treningowym) uczymy algorytmy, a na zbiorze testowym sprawdzamy ich poprawność.\n", + "* Na zbiorze uczącym uczymy algorytmy, a na zbiorze testowym sprawdzamy ich poprawność.\n", "* Zbiór uczący powinien być kilkukrotnie większy od testowego (np. 4:1, 9:1 itp.).\n", "* Zbiór testowy często jest nieznany.\n", - "* Należy unikać mieszania danych testowych i treningowych – nie wolno „zanieczyszczać” danych treningowych danymi testowymi!" + "* Należy unikać mieszania danych testowych i uczących – nie wolno „zanieczyszczać” danych uczących danymi testowymi!" ] }, { @@ -89,7 +89,7 @@ } }, "source": [ - "Do doboru parametrów najlepiej użyć jeszcze innego zbioru – jest to tzw. **zbiór walidacyjny**" + "Do doboru parametrów najlepiej użyć jeszcze innego zbioru – jest to tzw. **zbiór walidacyjny**." ] }, { @@ -107,7 +107,7 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ @@ -144,8 +144,7 @@ } }, "source": [ - "\n", - "Żródło: https://chrisjmccormick.wordpress.com/2013/07/31/k-fold-cross-validation-with-matlab-code/" + "\"Rys." ] }, { @@ -160,7 +159,7 @@ "\n", "* Podziel dane $D = \\left\\{ (x^{(1)}, y^{(1)}), \\ldots, (x^{(m)}, y^{(m)})\\right\\} $ na $N$ rozłącznych zbiorów $T_1,\\ldots,T_N$\n", "* Dla $i=1,\\ldots,N$, wykonaj:\n", - " * Użyj $T_i$ do walidacji i zbiór $S_i$ do trenowania, gdzie $S_i = D \\smallsetminus T_i$. \n", + " * Użyj $T_i$ do walidacji i zbiór $S_i$ do uczenia, gdzie $S_i = D \\smallsetminus T_i$. \n", " * Zapisz model $\\theta_i$.\n", "* Akumuluj wyniki dla modeli $\\theta_i$ dla zbiorów $T_i$.\n", "* Ustalaj parametry uczenia na akumulowanych wynikach." @@ -179,7 +178,7 @@ "* Zazwyczaj ustala się $N$ w przedziale od $4$ do $10$, tzw. $N$-krotna walidacja krzyżowa (*$N$-fold cross validation*). \n", "* Zbiór $D$ warto zrandomizować przed podziałem.\n", "* W jaki sposób akumulować wyniki dla wszystkich zbiórow $T_i$?\n", - "* Po ustaleniu parametrów dla każdego $T_i$, trenujemy model na całych danych treningowych z ustalonymi parametrami.\n", + "* Po ustaleniu parametrów dla każdego $T_i$, uczymy model na całych danych uczących z ustalonymi parametrami.\n", "* Testujemy na zbiorze testowym (jeśli nim dysponujemy)." ] }, @@ -233,7 +232,7 @@ "### Zbiór walidujący a algorytmy optymalizacji\n", "\n", "* Gdy błąd rośnie na zbiorze uczącym, mamy źle dobrany parametr $\\alpha$. Należy go wtedy zmniejszyć.\n", - "* Gdy błąd zmniejsza się na zbiorze trenującym, ale rośnie na zbiorze walidującym, mamy do czynienia ze zjawiskiem **nadmiernego dopasowania** (*overfitting*).\n", + "* Gdy błąd zmniejsza się na zbiorze uczącym, ale rośnie na zbiorze walidującym, mamy do czynienia ze zjawiskiem **nadmiernego dopasowania** (*overfitting*).\n", "* Należy wtedy przerwać optymalizację. Automatyzacja tego procesu to _early stopping_." ] }, @@ -267,7 +266,7 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ @@ -295,7 +294,7 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ @@ -306,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "metadata": { "slideshow": { "slide_type": "notes" @@ -328,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 2, "metadata": { "slideshow": { "slide_type": "notes" @@ -347,7 +346,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "metadata": { "slideshow": { "slide_type": "notes" @@ -419,7 +418,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "metadata": { "slideshow": { "slide_type": "notes" @@ -443,7 +442,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 5, "metadata": { "slideshow": { "slide_type": "subslide" @@ -467,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 6, "metadata": { "slideshow": { "slide_type": "notes" @@ -514,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 7, "metadata": { "slideshow": { "slide_type": "notes" @@ -542,7 +541,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 8, "metadata": { "slideshow": { "slide_type": "subslide" @@ -572,7 +571,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 9, "metadata": { "slideshow": { "slide_type": "notes" @@ -594,7 +593,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 10, "metadata": { "slideshow": { "slide_type": "subslide" @@ -608,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 11, "metadata": { "slideshow": { "slide_type": "notes" @@ -628,7 +627,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 12, "metadata": { "scrolled": true, "slideshow": { @@ -639,7 +638,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "99f3351da36340ca8c6d117c625f3ed4", + "model_id": "e622904eeae04709aed0ad3587bd5d7a", "version_major": 2, "version_minor": 0 }, @@ -656,7 +655,7 @@ "" ] }, - "execution_count": 21, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -674,6 +673,7 @@ }, "source": [ "Zadanie klasyfikacyjne z powyższego przykładu polega na przypisaniu punktów do jednej z dwóch kategorii:\n", + "\n", " 0. czerwone krzyżyki\n", " 1. zielone kółka\n", "\n", @@ -689,6 +689,7 @@ }, "source": [ "W rezultacie otrzymano model, który dzieli płaszczyznę na dwa obszary:\n", + "\n", " 0. na zewnątrz granatowej krzywej\n", " 1. wewnątrz granatowej krzywej\n", " \n", @@ -725,7 +726,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 13, "metadata": { "slideshow": { "slide_type": "skip" @@ -782,12 +783,12 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ "#### Dokładność (*accuracy*)\n", - "$$ \\mbox{accuracy} = \\frac{\\mbox{przypadki poprawnie sklasyfikowane}}{\\mbox{wszystkie przypadki}} = \\frac{TP + TN}{TP + TN + FP + FN} $$" + "$$ \\mbox{accuracy} = \\frac{\\mbox{przypadki poprawnie sklasyfikowane}}{\\mbox{wszystkie przypadki}} \\\\ = \\frac{TP + TN}{TP + TN + FP + FN} $$" ] }, { @@ -803,7 +804,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 14, "metadata": { "slideshow": { "slide_type": "subslide" @@ -848,7 +849,7 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ @@ -858,7 +859,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 15, "metadata": { "slideshow": { "slide_type": "subslide" @@ -893,7 +894,7 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ @@ -903,7 +904,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 16, "metadata": { "slideshow": { "slide_type": "subslide" @@ -938,7 +939,7 @@ "cell_type": "markdown", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "subslide" } }, "source": [ @@ -948,7 +949,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 17, "metadata": { "slideshow": { "slide_type": "subslide" @@ -1053,7 +1054,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 18, "metadata": { "slideshow": { "slide_type": "notes" @@ -1126,7 +1127,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 19, "metadata": { "slideshow": { "slide_type": "notes" @@ -1153,7 +1154,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 20, "metadata": { "slideshow": { "slide_type": "subslide" @@ -1193,7 +1194,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 21, "metadata": { "slideshow": { "slide_type": "subslide" @@ -1211,7 +1212,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 22, "metadata": { "slideshow": { "slide_type": "notes" @@ -1234,7 +1235,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 23, "metadata": { "slideshow": { "slide_type": "subslide" diff --git a/wyk/cv.png b/wyk/cv.png new file mode 100644 index 0000000..7030ec9 Binary files /dev/null and b/wyk/cv.png differ