Omówienie czym jest naiwny klasyfikator bayesowski
This commit is contained in:
parent
63e3c99579
commit
6b5a68e900
116
projekt.ipynb
Normal file
116
projekt.ipynb
Normal file
@ -0,0 +1,116 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<b>Naiwna klasyfikacja bayesowska</b>\n",
|
||||
"\n",
|
||||
"Naiwna klasyfikacja bayesowska jest to klasyfikacja polegająca na przydzielaniu obiektom prawdopodobieństwa przynależności do danej klasy. Naiwny klasyfikator jest to bardzo prosta metoda klasyfikacji jednak mimo swej prostoty sprawdza się w wielu przypadkach gdy bardziej złożone metody zawodzą.Jednym z powodów dla których naiwny klasyfikator wypadak dobrze jest jego założenie o niezależności predykatów, własnie dlatego nazywany jest klasyfikatorem naiwnym, naiwnie zakłada niezależność atrybutów opisujących dany przykład, co często nie ma odzwierciedlenia w rzeczywistości. Klasyfikator nazywany jets bayesowskim dlatego że wykorzystuje twierdzenie bayesa do obliczania prawdopodobieństw.\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<b>Twierdzenie Bayesa</b>\n",
|
||||
"\n",
|
||||
"Twierdzneie bayesa jets to twierdzenie tworii prawdopodobieństwa wiążące prawdopodobieństwa warunkowe dwóch zdarzeń warunkujących się nawzajem. Prawdopodobieństwo wystąpienia zdarzenia A gdy wystąpiło zdarzenie B oblicza się wzorem:\n",
|
||||
"\n",
|
||||
"$P(A|B) = \\frac{P(B|A) P(A)}{P(B)}$\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<b>Wykorzystanie twierdzenia Bayesa w naiwnej klasyfikacji bayesowskiej</b>\n",
|
||||
"\n",
|
||||
"<b>1\\) Nawiązując do twierdzenia bayesa prawdopodobieństwo problem klasyfikacji danego obiektu możemy zapisać w następujący sposb:</b>\n",
|
||||
"<br><br><br>\n",
|
||||
"$P(K|X)$ Zapis ten oznacza że mając obiekt X chcemy obliczyć prawdopodobieństo przynaleźności do klasy K\n",
|
||||
"\n",
|
||||
"$P(K|X) = \\frac{P(X|K) P(K)}{P(X)}$ \n",
|
||||
"\n",
|
||||
"$P(K)$ - jest to prawdopodobieństwo a-priori klasy K\n",
|
||||
"\n",
|
||||
"$P(X|K)$ - ten zapis możemy interpretować w taki sposób: jeżeli klasa K to szansa że X do niej należy \n",
|
||||
"\n",
|
||||
"$P(X)$ - ale jak interpretować prawdopodobieństwo od odibkeu X? okazuje się że nie trzeba tego obliczać gdyż obliczając prawpodobieństwa przynależności X do klasy K w mianowniku zawsze bęzie $P(X)$ więc możemy to pomijać\n",
|
||||
"\n",
|
||||
"Najlepiej będzie pokazać to na przykładzie:\n",
|
||||
"<br><br><br><br>\n",
|
||||
"<b>2\\) Prawdopobobieństwa a-priori</b>\n",
|
||||
"<br><br><br>\n",
|
||||
"Prawdopodobieństwo a priori jest to prawdopodobieństwo obliczane przed realizacją odpowiednich eksperymentów lub obserwacji.\n",
|
||||
"\n",
|
||||
"![klasy](https://www.statsoft.pl/textbook/graphics/xNaiveBayesIntro1.gif.pagespeed.ic.tNwdOtpcQH.webp)\n",
|
||||
"\n",
|
||||
"Powyższa ilustracja przedstawia 2 klasy czerwona(20 obiektów) i zielona(40 obiektów), prawdopodobieństwa a priori tym przykładzie to nic innego jak \n",
|
||||
"\n",
|
||||
"$\\frac{liczebność\\ klasy}{liczebność\\ wszystkich\\ elementów}$, więc prawdopodobieńswta a priori dla powyższego przykładu są równe\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"a priori klasy zielonej = $\\frac{2}{3}\\\\$\n",
|
||||
"a priori klasy czerwonej = $\\frac{1}{3}\\\\$\n",
|
||||
"\n",
|
||||
"To jest nasze $P(K)$\n",
|
||||
"<br><br><br><br>\n",
|
||||
"<b>3\\) Klasyfikacja nowego obiektu</b>\n",
|
||||
"<br><br><br>\n",
|
||||
"![nowy obiekt](https://www.statsoft.pl/textbook/graphics/xNaiveBayesIntro4.gif.pagespeed.ic.kzJ0xzlOjU.webp)\n",
|
||||
"\n",
|
||||
"Klasyfikując nowy obiekt korzystamy z prawdopodobieństw a-priori, jednak same prawdopodobieństwa a-priori są niweystarczające, w tym przykładzie rozsądnym założeniem jest klasyfikowanie obiektu również na podstawie jego najbliższych sąsiadów. Zaznaczając okręgiem obszar możemy obliczyć prawdopodobieństwo że nowy obiekt będzie czerwony albo zielony, prawdopodobieństwa te obliczane są ze wzoru, prawdopodobieństwa te zostaną użyte do obliczenia prawdopodobieństwa a posteriori.\n",
|
||||
"\n",
|
||||
"$\\frac{liczba\\ obiektów\\ danej\\ klasy\\ w\\ sąsiedztwie\\ nowego\\ obiektu}{liczba\\ obiektów\\ danej\\ klasy}$ i wynoszą odpowiednio:\n",
|
||||
"\n",
|
||||
"prawdopodobieństow że obiekt będzie w klasie zielonej = $\\frac{1}{40}\\\\$\n",
|
||||
"prawdopodobieństow że obiekt będzie w klasie czerwonej = $\\frac{3}{20}\\\\$\n",
|
||||
"\n",
|
||||
"To jets nasze $P(X|K)$\n",
|
||||
"<br><br><br><br>\n",
|
||||
"<b>4\\) Prawdopodobieństwo a posteriori</b>\n",
|
||||
"<br><br><br>\n",
|
||||
"Mając już obliczone wszystkie potrzebne prawdopodobieństwa możemy obliczyć prawdopodobieństwa a posteriori\n",
|
||||
"\n",
|
||||
"Prawdopodobieństwo a posteriori jest to prawdopodobieństwo pewnego zdarzenia gdy wiedza o tym zdarzeniu wzbogacona jest przez pewne obserwacje lub eksperymenty.\n",
|
||||
"\n",
|
||||
"W naszym przykładzie prawdopodobieństwo a posteriori obliczymy ze wzoru \n",
|
||||
"\n",
|
||||
"$(prawdopodobieństwo\\ a\\ priori\\ przynależności\\ do\\ danej\\ klasy) * (prawdopodobieństwo\\ że\\ nowy\\ obiekt\\ będzie\\ w\\ danej\\ klasie\\ na\\ podstawie\\ jego\\ sąsiadów)$ czyli $P(X|K) P(K)$\n",
|
||||
"\n",
|
||||
"A więc prawdopodobieństwa a posteriori są równe:\n",
|
||||
"\n",
|
||||
"Prawdopodobieństwo a posteriori ze nowy obiekt będzie w klasie zielonej = $\\frac{2}{3} * \\frac{1}{40} = \\frac{1}{60}\\\\$\n",
|
||||
"Prawdopodobieństwo a posteriori ze nowy obiekt będzie w klasie czerwonej = $\\frac{1}{3} * \\frac{3}{40} = \\frac{1}{40}\\\\$\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"<b>Implementacja</b>\n",
|
||||
"\n",
|
||||
"<b>Naiwny klasyfikator bayesowski można stosować w klasyfikacji tekstu np filtry antyspamowy lub jak w naszym przykładzie klasyfikacja tekstu na...</b>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
Loading…
Reference in New Issue
Block a user