Naiwny klasyfikator bayesowski

This commit is contained in:
Paweł Skórzewski 2022-04-08 09:24:18 +02:00
parent da8b7f3840
commit b2c58746e5

View File

@ -105,7 +105,7 @@
"\n", "\n",
" * Wartość wyrażenia normalizacyjnego nie wpływa na wynik klasyfikacji.\n", " * Wartość wyrażenia normalizacyjnego nie wpływa na wynik klasyfikacji.\n",
"\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", "### Klasyfikatory dyskryminatywne a generatywne\n",
"\n", "\n",
"* Klasyfikatory generatywne tworzą model rozkładu prawdopodobieństwa dla każdej z klas.\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", "* Klasyfikatory dyskryminatywne wyznaczają granicę klas (*decision boundary*) bezpośrednio.\n",
"* Naiwny klasyfikator baywsowski jest klasyfikatorem generatywnym (ponieważ wyznacza $P( x \\,|\\, y )$).\n", "* Naiwny klasyfikator bayesowski jest klasyfikatorem generatywnym (ponieważ wyznacza $P( x \\,|\\, y )$).\n",
"* Wszystkie klasyfikatory generatywne są probabilistyczne, ale nie na odwrót.\n", "* Wszystkie klasyfikatory generatywne są probabilistyczne, ale nie na odwrót.\n",
"* Regresja logistyczna jest przykładem klasyfikatora dyskryminatywnego." "* Regresja logistyczna jest przykładem klasyfikatora dyskryminatywnego."
] ]
@ -135,7 +135,7 @@
"source": [ "source": [
"### Założenie niezależności dla naiwnego klasyfikatora bayesowskiego\n", "### Założenie niezależności dla naiwnego klasyfikatora bayesowskiego\n",
"\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", "$$ 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.)" "* 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", "cell_type": "code",
"execution_count": 9, "execution_count": 9,
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
@ -474,7 +478,11 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [ "source": [
"Aby teraz przewidzieć klasę $y$ dla dowolnego zestawu cech $x$, wystarczy sprawdzić, dla której klasy prawdopodobieństwo *a posteriori* jest większe:" "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", "cell_type": "code",
"execution_count": 13, "execution_count": 13,
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [], "outputs": [],
"source": [ "source": [
"# Funkcja klasyfikująca (funkcja predykcji)\n", "# Funkcja klasyfikująca (funkcja predykcji)\n",
@ -497,7 +509,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 14,
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
@ -520,7 +536,11 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [ "source": [
"Zobaczmy, jak to wygląda na wykresie. Narysujemy w tym celu granicę między klasą 1 a 0:" "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", "cell_type": "code",
"execution_count": 15, "execution_count": 15,
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [], "outputs": [],
"source": [ "source": [
"# Wykres granicy klas dla naiwnego Bayesa\n", "# Wykres granicy klas dla naiwnego Bayesa\n",
@ -903,7 +927,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 27, "execution_count": 27,
"metadata": {}, "metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",