forked from filipg/aitech-eks-pub
Bernoulli
This commit is contained in:
parent
2687aaa426
commit
724be2f486
@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "damaged-senator",
|
||||
"id": "moderate-array",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Klasyfikacja binarna dla tekstu\n",
|
||||
@ -14,7 +14,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "explicit-gathering",
|
||||
"id": "correct-victory",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Pytanie**: Czy można wyobrazić sobie zadanie klasyfikacji mejli, niebędące zadaniem klasyfikacji binarnej?"
|
||||
@ -22,7 +22,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "material-watch",
|
||||
"id": "spiritual-diploma",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Zakładamy paradygmat uczenia nadzorowanego, tzn. dysponujemy zbiorem uczącym.\n",
|
||||
@ -32,7 +32,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "referenced-hello",
|
||||
"id": "secure-performance",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Klasyfikacja regułowa\n",
|
||||
@ -49,14 +49,14 @@
|
||||
"body __FRAUD_XJR\t/(?:who was a|as a|an? honest|you being a|to any) foreigner/i\n",
|
||||
"```\n",
|
||||
"\n",
|
||||
"Jakie są wady i zalety regułowych filtrów antyspamowych?\n",
|
||||
"**Pytanie:** Jakie są wady i zalety regułowych filtrów antyspamowych?\n",
|
||||
"\n",
|
||||
"Współcześnie zdecydowanie dominuje użycie metod statystycznych (opartych na nadzorowanym uczeniu maszynowym). Do popularności tych metod przyczynił się artykuł [Plan for spam](http://www.paulgraham.com/spam.html) autorstwa Paula Grahama."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "cathedral-uganda",
|
||||
"id": "indoor-ending",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Podejście generatywne i dyskryminatywne\n",
|
||||
@ -72,7 +72,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "powerful-engineer",
|
||||
"id": "pleased-clinic",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Nasz \"dyżurny\" przykład\n",
|
||||
@ -94,11 +94,31 @@
|
||||
"Zakładamy, że dokumenty podlegają lematyzacji i sprowadzeniu do mały liter, więc ostatecznie będziemy mieli następujące ciąg termów:\n",
|
||||
"\n",
|
||||
"* $x_1=(\\mathit{kupić}, \\mathit{pan}, \\mathit{viagra})$\n",
|
||||
"* $x_2=(\\mathit{tani}, \\mathit{miejsce}, \\mathit{dla}, \\mathit{pana})$\n",
|
||||
"* $x_2=(\\mathit{tani}, \\mathit{miejsce}, \\mathit{dla}, \\mathit{pan})$\n",
|
||||
"* $x_3=(\\mathit{viagra}, \\mathit{viagra}, \\mathit{viagra})$\n",
|
||||
"* $x_4=(\\mathit{kupić}, \\mathit{tani}, \\mathit{cartridge})$\n",
|
||||
"\n",
|
||||
"Uczymy na tym zbiorze klasyfikator, który będziemy testować na dokumencie $d=\\mathit{tania tania viagra dla pana}$, tj. po normalizacji\n",
|
||||
"$P(tani|c) = (1+1)/(9+7) = 2/16 = 0.125$\n",
|
||||
"$P(viagra|c) = \\frac{4+1}{9 + 7} = 5/16 = 0.3125 $\n",
|
||||
"$P(dla|c) = \\frac{0+1}{9+7} = 1/16 = 0.0625$\n",
|
||||
"$P(pan|c) = (1+1)/(9+7) = 2/16 = 0.125 $\n",
|
||||
"$P(c) = 0.75$\n",
|
||||
"\n",
|
||||
"w wersji wielomianowej: $P(c)P(tani|c)P(tani|c)P(viagra|c)P(dla|c)P(pan|c) = 0.75 * 0.125 * 0.125 * 0.3125 * 0.0625 * 0.125= 0.0002861$\n",
|
||||
"\n",
|
||||
"w werjis Bernoulliego: $P(c)P(U_{dla}=1|c)P(U_{cartridge}=0|c)P(U_{viagra}=1|c)P(U_{pan}=1|c)P(U_{tani}=1|c)P(U_{miejsce}=0|c)P(U_{kup}=0|c)$\n",
|
||||
"\n",
|
||||
"$P(tani|\\bar{c}) = (1+1)/(4+7) = 2/11 =0.182 $\n",
|
||||
"$P(viagra|\\bar{c}) = 1/11 = 0.091 $\n",
|
||||
"$P(dla|\\bar{c}) = 2/11 = 0.182 $\n",
|
||||
"$P(pan|\\bar{c}) = 2/11 = 0.182 $\n",
|
||||
"$P(\\bar{c}) = 0.25$\n",
|
||||
"\n",
|
||||
"$P(\\bar{c})P(tani|\\bar{c})P(tani|\\bar{c})P(dla|\\bar{c})P(pan|\\bar{c}) = 0.25 * 0.182 * 0.182 * 0.091 * 0.182 * 0.182 = 0.00002496$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"Uczymy na tym zbiorze klasyfikator, który będziemy testować na dokumencie $d=\\mathit{tania\\ tania\\ viagra\\ dla\\ pana}$, tj. po normalizacji\n",
|
||||
"$d=(\\mathit{tani}, \\mathit{tani}, \\mathit{viagra}, \\mathit{dla}, \\mathit{pan})$.\n",
|
||||
"\n",
|
||||
"**Uwaga:** Przykład jest oczywiście nierealistyczny i trudno będzie nam ocenić sensowność odpowiedzi. Za to będziemy w stanie policzyć ręcznie wynik.\n"
|
||||
@ -106,7 +126,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "controversial-rotation",
|
||||
"id": "partial-military",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Naiwny klasyfikator bayesowski\n",
|
||||
@ -127,7 +147,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "spatial-citizenship",
|
||||
"id": "colonial-creature",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Mamy dokument $d$ i dwie klasy $c$ i $\\bar{c}$. Policzymy prawdopodobieństwa $P(c|d)$ (mamy dokument $d$, jakie jest prawdopodobieństwo, że to klasa $c$) i $P(\\bar{c}|d)$. A właściwie będziemy te prawdopodobieństwa porównywać.\n",
|
||||
@ -139,25 +159,25 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "united-recognition",
|
||||
"id": "governing-fiction",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Zastosujmy najpierw wzór Bayesa.\n",
|
||||
"\n",
|
||||
"$P(c|d) = \\frac{P(d|c) P(c)}{P(d)} \\propto P(d|c) P(c)$"
|
||||
"$P(c|d) = \\frac{P(d|c) P(c)}{P(d)}$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "present-draft",
|
||||
"id": "northern-spine",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$P(\\bar{c}|d) = \\frac{P(d|\\bar{c}) P(\\bar{c})}{P(d)} \\propto P(d|\\bar{c}) P(\\bar{c}) $"
|
||||
"$P(\\bar{c}|d) = \\frac{P(d|\\bar{c}) P(\\bar{c})}{P(d)}$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "accepting-tamil",
|
||||
"id": "utility-induction",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"(Oczywiście skądinąd $P(\\bar{c}|d) = 1 - P(c|d)$, ale nie będziemy teraz tego wykorzystywali.)"
|
||||
@ -165,7 +185,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "equipped-outreach",
|
||||
"id": "timely-force",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Co możemy pominąć, jeśli tylko porównujemy $P(c|d)$ i $P(\\bar{c}|d)$?\n",
|
||||
@ -181,7 +201,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "active-motor",
|
||||
"id": "embedded-involvement",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Prawdopodobieństwo _a priori_\n",
|
||||
@ -193,12 +213,16 @@
|
||||
"gdzie\n",
|
||||
"\n",
|
||||
"* N - liczba wszystkich dokumentów w zbiorze uczącym\n",
|
||||
"* N_c - liczba dokumentow w zbiorze uczącym z klasą $c$\n"
|
||||
"* N_c - liczba dokumentow w zbiorze uczącym z klasą $c$\n",
|
||||
"\n",
|
||||
"$\\hat{P}(c) = 0,75$\n",
|
||||
"\n",
|
||||
"$\\hat{P}(\\bar{c}) = 0,25$\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "trying-indonesian",
|
||||
"id": "virgin-premiere",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Prawdopodobieństwo _a posteriori_\n",
|
||||
@ -212,7 +236,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "median-nomination",
|
||||
"id": "acting-zimbabwe",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$P(d|c) = P(t_1\\dots t_n|c)$\n",
|
||||
@ -228,7 +252,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "romantic-verse",
|
||||
"id": "adjustable-disney",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Jak oszacować $\\hat{P}(t|c)$?\n",
|
||||
@ -238,7 +262,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "interracial-today",
|
||||
"id": "associate-variance",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Wygładzanie\n",
|
||||
@ -260,12 +284,17 @@
|
||||
"4. $f(m, 0, 0) = \\frac{1}{m}$\n",
|
||||
"5. $\\lim_{T \\to \\inf} f(m, k, T) = \\frac{k}{T}$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"m=2, k1=2, k2=4, T=6, 2/6 => f(2, 2, 6) > 0.333, f(2, 4, 6) < 0.666 \n",
|
||||
"\n",
|
||||
"Jaka funkcja spełnia te aksjomaty?\n",
|
||||
"\n",
|
||||
"$$f(m, k, T) = \\frac{k+1}{T+m}$$\n",
|
||||
"\n",
|
||||
"Jest to wygładzanie +1, albo wygładzanie Laplace'a.\n",
|
||||
"\n",
|
||||
"**Pytanie:** Wymyślić jakiś inny przykład funkcji, która będzie spełniała aksjomaty.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
@ -275,7 +304,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "accepting-stockholm",
|
||||
"id": "complimentary-airplane",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Po zastosowaniu do naszego naiwnego klasyfikatora otrzymamy:\n",
|
||||
@ -283,10 +312,35 @@
|
||||
"$$\\hat{P}(t|c) = \\frac{\\#(t,c) + 1}{\\sum_i^{|V|} \\#(t_i,c) + |V|}$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "comprehensive-junior",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Metoda Bernoulliego"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "vocational-spanish",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$$P(𝑑|𝑐) \\approx P(U=u_1|c)\\dots P(U=u_{|v|})$$, gdzie $u_i = 1$, $t_i$ pojawił się w dokumencie $d$, 0 - w przeciwnym razie\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "enabling-manitoba",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$\\hat{P}(U_{viagra}=1|c) = \\frac{\\#(viagra,N_c) + 1}{N_c + 2}$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "moral-ceremony",
|
||||
"id": "bearing-execution",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
|
Loading…
Reference in New Issue
Block a user