From b2c58746e59b23ad8f123dcf1384142790eef964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Sk=C3=B3rzewski?= Date: Fri, 8 Apr 2022 09:24:18 +0200 Subject: [PATCH] Naiwny klasyfikator bayesowski --- wyk/06_Naiwny_klasyfikator_bayesowski.ipynb | 50 ++++++++++++++++----- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/wyk/06_Naiwny_klasyfikator_bayesowski.ipynb b/wyk/06_Naiwny_klasyfikator_bayesowski.ipynb index e23bbe9..7c99049 100644 --- a/wyk/06_Naiwny_klasyfikator_bayesowski.ipynb +++ b/wyk/06_Naiwny_klasyfikator_bayesowski.ipynb @@ -105,7 +105,7 @@ "\n", " * Wartość wyrażenia normalizacyjnego nie wpływa na wynik klasyfikacji.\n", "\n", - "_Przykład_: obserwacja nietypowa ma małe prawdopodobieństwo względem dowolnej klasy, wyrażenie normalizacyjne sprawia, że to prawdopodobieństwo staje się porównywalne z prawdopodobieństwami typowych obserwacji, ale nie wpływa na klasyfikację!" + "*Przykład*: obserwacja nietypowa ma małe prawdopodobieństwo względem dowolnej klasy, wyrażenie normalizacyjne sprawia, że to prawdopodobieństwo staje się porównywalne z prawdopodobieństwami typowych obserwacji, ale nie wpływa na klasyfikację!" ] }, { @@ -119,8 +119,8 @@ "### Klasyfikatory dyskryminatywne a generatywne\n", "\n", "* Klasyfikatory generatywne tworzą model rozkładu prawdopodobieństwa dla każdej z klas.\n", - "* Klasyfikatory dyskryminatywne wyznaczają granicę klas (_decision boundary_) bezpośrednio.\n", - "* Naiwny klasyfikator baywsowski jest klasyfikatorem generatywnym (ponieważ wyznacza $P( x \\,|\\, y )$).\n", + "* Klasyfikatory dyskryminatywne wyznaczają granicę klas (*decision boundary*) bezpośrednio.\n", + "* Naiwny klasyfikator bayesowski jest klasyfikatorem generatywnym (ponieważ wyznacza $P( x \\,|\\, y )$).\n", "* Wszystkie klasyfikatory generatywne są probabilistyczne, ale nie na odwrót.\n", "* Regresja logistyczna jest przykładem klasyfikatora dyskryminatywnego." ] @@ -135,7 +135,7 @@ "source": [ "### Założenie niezależności dla naiwnego klasyfikatora bayesowskiego\n", "\n", - "* Naiwny klasyfikator bayesowski jest _naiwny_, ponieważ zakłada, że poszczególne cechy są niezależne od siebie:\n", + "* Naiwny klasyfikator bayesowski jest *naiwny*, ponieważ zakłada, że poszczególne cechy są niezależne od siebie:\n", "$$ P( x_1, \\ldots, x_n \\,|\\, y ) \\,=\\, \\prod_{i=1}^n P( x_i \\,|\\, x_1, \\ldots, x_{i-1}, y ) \\,=\\, \\prod_{i=1}^n P( x_i \\,|\\, y ) $$\n", "* To założenie jest bardzo przydatne ze względów obliczeniowych, ponieważ bardzo często mamy do czynienia z ogromną liczbą cech (bitmapy, słowniki itp.)" ] @@ -370,7 +370,11 @@ { "cell_type": "code", "execution_count": 9, - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, "outputs": [ { "name": "stdout", @@ -474,7 +478,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, "source": [ "Aby teraz przewidzieć klasę $y$ dla dowolnego zestawu cech $x$, wystarczy sprawdzić, dla której klasy prawdopodobieństwo *a posteriori* jest większe:" ] @@ -482,7 +490,11 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, "outputs": [], "source": [ "# Funkcja klasyfikująca (funkcja predykcji)\n", @@ -497,7 +509,11 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, "outputs": [ { "name": "stdout", @@ -520,7 +536,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, "source": [ "Zobaczmy, jak to wygląda na wykresie. Narysujemy w tym celu granicę między klasą 1 a 0:" ] @@ -528,7 +548,11 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, "outputs": [], "source": [ "# Wykres granicy klas dla naiwnego Bayesa\n", @@ -903,7 +927,11 @@ { "cell_type": "code", "execution_count": 27, - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, "outputs": [ { "name": "stdout",