朴素貝葉斯法,就是使用貝葉斯公式的學習方法,朴素就是它假設輸入變量(向量)的各個分量之間是相互獨立的。所以對於分量之間不獨立的分布,如果使用它學習和預測效果就不會很好。
簡化策略
它是目標是通過訓練數據集學習聯合概率分布$P(X, Y)$用來預測。書上說,具體是先學習到先驗概率分布以及條件概率分布,分別如下:(但我認為,直接學習$P(X, Y)$就行了,它要多此一舉算出這兩個再乘起來變成$P(X, Y)$,但其實計算量差不多,可能這樣更好理解吧)
$P(Y = c_k), k = 1, 2, 3, ..., K$
$P(X = x|Y = c_k) = P(X^{(1)} = x^{(1)}, ..., X^{(n)} = x^{(n)}|Y = c_k), k = 1, 2, 3, ..., K$
其中輸入空間$\mathcal{X} \subseteq R^n$為$n$維向量的集合,輸出空間為標記集合$\mathcal{Y} = \{c_1, c_2, ..., c_K\}$。
上面提到了先驗概率分布,這里記一下先驗概率分布與后驗概率分布。先驗概率分布與后驗概率分布是相對而言的量,通常是要放在一起討論的。如:$P(Y)$是直接測量的,或是我們經驗中所認為的$Y$的概率分布,而當我們測量$X$后,條件概率分布$P(Y|X)$就是發生$X$后$Y$的后驗概率分布。
書中說,因為條件概率分布$P(X = x|Y = c_k)$有指數級數量的參數,它的估計實際不可行(實際上樣本的數量也不夠支撐那么多參數之間的潛在交叉關系)。事實上,假設$x^{(j)}$可取值有$S_j$個,j = 1, 2,… ,n , Y 可取值有K 個,那么參數個數就是$K\prod\limits_{j=1}^{n}S_j$。所以對輸入的各個分量的分布進行了假設,假設各個分量之間相互獨立(所以它們的聯合分布就是直接乘起來),這是一個較強的假設,朴素貝葉斯因此得名。如下:
$P(X= x|Y = c_k) = P(X^{(1)} = x^{(1)}, ..., X^{(n)} = x^{(n)}|Y = c_k)$
$ = \prod\limits_{j=1}^{n}P(X^{(j)} = x^{(j)}|Y = c_k)$
學習方式
那么如何學習呢?對於有限離散輸入輸出來說的表達,可以直接計算樣本集的概率分布當做總體分布。
而對於連續的輸入輸出來說,通常要先假設$P(X, Y)$服從某個多維分布。然后,基於上面的獨立性假設,$X$的各個分量是相互獨立的,而各個分量和$Y$並不獨立,所以可以分別擬合$P(X^{(j)}|Y), j = 1, 2, ..., n$(可以用極大似然估計擬合$P(X^{(j)}, Y)$,再計算$P(X^{(j)}|Y)$),然后把它們全都乘起來得$P(X|Y) = \prod\limits_{j=1}^{n}P(X^{(j)}|Y)$(這里和上面不一樣,因為是連續的,所以不能等於某個特定的值$x_j$),再擬合邊緣分布$P(Y)$,然后與$P(X|Y)$相乘獲得聯合分布$P(X, Y)$。 當然也可以直接擬合$P(X, Y)$,因為$X$的分量之間相互獨立,所以除了外協方差矩陣中除了對角線以及包含$Y$的協方差外,其它協方差$Cov(X^{(j)}, X^{(i)})$都為0,所以要優化的參數也少了很多,形如:
$\begin{bmatrix} Cov(X^{(0)}, X^{(0)}) & 0 & . & . & . & Cov(X^{(0)}, Y) \\ 0 &Cov(X^{(1)}, X^{(1)}) & . & .& . & Cov(X^{(1)}, Y) \\ . & & . & & & . \\ .& & & . && . \\ .& & && . & . \\Cov(Y, X^{(0)}) & Cov(Y, X^{(1)}) & . & . & . &Cov(Y, Y)&\end{bmatrix}$
分類的時候,通過貝葉斯公式計算后驗概率分布,取后驗概率最大的$Y$作為預測結果:
$y = f(x) = \mathop{\arg\max}\limits_{c_k} P(Y = c_k|X = x) $
$= \mathop{\arg\max}\limits_{c_k} \frac{P(Y = c_k, X = x)}{\sum\limits_{k}P(X = x|Y = c_k)P(Y = c_k)}$
因為分母對每個$Y$都是一樣的,所以可以簡化為:
$= \mathop{\arg\max}\limits_{c_k} P(Y = c_k, X = x)$
因此在這里最大后驗概率的預測等價於最大聯合概率。
后驗最大化的含義
這里的后驗概率最大化等價於機器學習中常用的期望風險最小化。如果用期望風險最小化來推出預測函數,就要定義損失函數,書上選擇0-1損失函數(也可以是別的損失函數形式)。具體證明直接貼書上的圖: