朴素貝葉斯算法(Naive Bayes)(續學習筆記四)
兩個朴素貝葉斯的變化版本
x_i可以取多個值,即p(x_i|y)是符合多項式分布的,不是符合伯努利分布的。其他的與符合伯努利的情況一樣。(同時也提供一種思路將連續型變量變成離散型的,比如說房間的面積可以進行離散分類,然后運用這個朴素貝葉斯算法的變形)。
第二個朴素貝葉斯的變化形式專門用來處理文本文檔,即對序列進行分類,被稱為朴素貝葉斯的事件模型(event model)。這將使用一種不同的方式將郵件轉化為特征向量。
之前的特征向量是:向量維度是字典的大小,此向量將會把郵件中出現的單詞在字典中標記為1,未出現的單詞標記為0。
現在將特征向量進行變化:向量維度是郵件的長度,向量中的每一個元素對應用郵件中的對應位置的單詞。加入郵件是‘a nips’。假如a在字典中的位置是第一位,nips在字典中的位置是3500位。那么x_0=1,x_1=3500。對應的生成模型就變成了,n代表郵件單詞的數量,xi服從多項式分布。對應的參數為φy = p(y),φi|y=1 = p(x_ j = i|y = 1) (for any j),φi|y=0 = p(x_ j = i|y = 0)。給出訓練集合,可以求得參數的最大似然估計:
根據laplace平滑,可以得到,
神經網絡(neural network)
可以生成非線性分類器。(生成學習算法中的高斯判別和朴素貝葉斯都是和logistics函數相關的線性分類器)
將特征先傳遞到中間層的sigmoid單元,在將中間層的sigmoid單元傳遞到輸出層的sigmoid單元中。
對應的函數以及成本可以寫成:
在神經網絡中使用梯度下降算法,稱為反向傳播。
支持向量機(support vector machine)
另外一種可以生成非線性分類器的算法。
先進行線性分類器的說明。
考慮logistics回歸,使用的是sigmoid函數,h>0.5時,我們就認為y為1,或者說,theta^T(x)>0時,我們就認為y為1。所以,如果theta^T(x)遠大於0,我們就可以堅信y=1,如果theta^T(x)遠小於0,我們就可以堅信y=0。這可以從sigmo圖像中很容易得到。可以根據theta^T(x)=0,來找出一條邊界線,距離這條邊界線越遠,我們就對它的預測值更有信心,離這條線越近,我們對它的預測值的信心就會減少。
在SVM中,改變了一些約束:y的取值變成了-1和1,不再是0與1了;預測值的參數也變成了w和b了g也不再是sigmoid函數了,而是g(z) = 1 if z ≥ 0, and g(z) = −1 otherwise。
w^Tx+b與之前的θ^Tx本質上是一樣的,只不過之前假設的是x_0等於1。w=[θ1 . . . θn] ^T,b=θ0。
函數間隔
給定訓練樣本,我們定義函數間隔為
如果y^(i)=1,為了讓預測更加正確,應該要求w^Tx+b為一個很大的正數,如果y^(i)=-1,我們應該要求w^Tx+b為一個很小的負數。我們認為y^ (i) (w T x + b) > 0,那么我們的預測就是正確的。
如果有多個訓練樣本,就定義
即離分界線最近的一種情況,即最壞的情況。現在就轉化為在最壞的情況下,使得函數間隔最大。但是,如果使得w和b同時加倍,此時的邊界線不變,但是函數間隔會隨着w和b的加倍而加倍,但是這種大的函數間隔是沒什么用的。所以可以進行正規化處理解決這個問題。
幾何間隔
A(x^(i),y^(i)),w是分界線的法向量,gamma是A與B之間的距離。那么B點就有同時B點存在
所以可以得到
更一般的,我們可以寫成
所以,幾何間距是一個化歸處理的函數間距。當有多個樣本時,我們也定義
最大間隔分類器
SVM的前身
即選擇gamma,w,b使得幾何間隔最大(在滿足 y (i) (w T x (i) + b) ≥ γ, i = 1, . . . , m ||w|| = 1.的條件下)。