原帖地址:http://blog.csdn.net/maverick1990/article/details/16115077
樸素貝葉斯
本次課程大綱:
1、 樸素貝葉斯
- 樸素貝葉斯事件模型
2、 神經網絡(簡要)
3、 支撐向量機(SVM)鋪墊 – 最大間隔分類器
複習:
1、 樸素貝葉斯
一種生成學習算法,對p(x|y)建模。
例:垃圾郵件分類
以郵件輸入流作爲輸入,輸出y爲{0,1},1爲垃圾郵件,0爲非垃圾郵件。
將郵件文本表示爲一個輸入向量x
1) xi∈{0,1},表示字典中的第i個詞是否出現在郵件中
2) x長度爲n,n爲字典的詞數
3) 該模型稱爲多元伯努利事件模型
假設xi在給定y的時候是條件獨立的,則x在給定y下的概率可簡化爲:
根據樸素貝葉斯公式,求p(y|x)最大時的y:
算法變化版本:
1) 讓xi取多個值,xi∈{1,2,…,k},類似上式有:p(x|y) = ∏ p(xi|y),但是p(xi|y)變成多項式分佈,而不是伯努利分佈。
例:估計房屋面積預測房屋能否被賣掉,將房屋面積分成幾個離散區間,如0-,1000爲xi=1,1000-1500爲xi=2,1500-2000爲xi=3,2000以上爲xi=4
2) 如上例處理郵件(文本)中,x向量記錄每個詞出現的次數(而不是是否出現)
多項式事件模型
接上例,給出一封郵件,將它表示成特徵向量:
,ni表示郵件中詞的數量,xj是個到詞典的索引,表示該詞在詞典的位置。
如郵件中有300個詞,那麼特徵向量x(i)長度爲300,若詞典有50000個詞,每個元素xj的取值範圍爲{1,2,…,50000}
則生成模型的聯合概率p(xy)爲:
n爲郵件長度
上式理解:郵件內容滿足一些概率分佈,有一些隨機分佈在生成這些郵件。過程爲:首先確定y,即是否爲垃圾郵件,決定一個人是否向你發送垃圾郵件後,遍歷郵件的300個詞,按照某種概率分佈生成一些詞,基於他們是否向你發送垃圾郵件
模型參數:
表示某人決定向你發送垃圾郵件(y=1)時,選擇詞k的概率,類似有:
給出訓練集後,求極大似然估計:
得到:
上面第一個式子,分子的意思是,對所有標籤爲1的郵件求和,之後對垃圾郵件中的詞k求和,所以分子實際上就是訓練集中所有垃圾郵件中詞k出現的次數。分母是訓練集中所有垃圾郵件的長度。比值的含義就是所有垃圾郵件中,詞k佔的比例。表示生成垃圾郵件時選擇詞k的概率。
應用Laplace平滑,分子加1,分母加總詞數(字典大小,xi可能取值的數目):
事實上,多項式事件模型比之前的模型要好,可能是因爲考慮了詞出現的次數這個因素。但此問題仍存在爭論。
非線性分類算法
例:logistic迴歸中,假設值小於0.5預測0,大於0.5預測1。即給定一個訓練集,logistic迴歸會找到一條直線(牛頓方法或梯度下降),將正負樣本合理分開。但有時數據不能被一條直線分開,需要一種算法,學習非線性的分界線。
上一講的推論:
x|y=1 ~ ExpFamily(η1),x|y=0 ~ ExpFamily (η0) => p(y=1|x)是logistic函數
即x|y的分佈屬於指數分佈族,可推出後驗分佈是logistic函數。
樸素貝葉斯模型也屬於指數分佈族,所以也是用logistic線性分類器。下面介紹一種非線性分類器。
2、 神經網絡
假設特徵是x0,x1,x2,x3,x0設置爲1,用連線表示logistic迴歸單元,圓圈表示計算節點,下圖中間的節點以x0等特徵作爲輸入,hθ(x)作爲輸出,這是一個sigmoid函數。爲了找到非線性的界限,需要找到一種方式,表示出能夠輸出非線性分界限的假設。
將之前畫的小單元拼在一起,得到神經網絡。特徵輸入到若干個sigmoid單元,在輸入到另外一個sigmoid單元,得到輸出。中間節點的輸出值設爲a1,a2,a3。這些中間節點稱爲隱藏層,神經網絡可以由多個隱層。
每個中間節點有一系列參數:
a2,a3同理。g爲sigmoid函數。最終的輸出值爲:
其中,a向量由a1,a2,a3組成。
一種學習模型參數的方法是,利用成本函數J(θ),使用梯度下降使J(θ)最小。即用梯度下降使得神經網絡的預測結果和你觀察到的訓練集中的樣本標籤儘可能接近。在神經網絡中,這種方法稱爲反向傳播。
3、 支撐向量機鋪墊 – 最大間隔分類器
另外一種能生成非線性分類器的學習算法。本節課先介紹另外一類線性分類器,在下一講或者下下講中,利用支撐向量機的想法,進行一些巧妙的改動和擴展,讓它可以生成非線性分界線。
兩種對於分類的直觀理解:
1) 考慮logistic迴歸,計算θTx:
輸出1 <=> θTx>=0;輸出0 <=> θTx<0
如果θTx>>0,相當確定的預測y=1;如果θTx<<0,相當確定的預測y=0
對於所有的i,如果y=1,θTx(i)>>0,如果y=0,θTx(i)<<0,那麼我們認爲分類器是良好的。即如果我們根據訓練集找到了參數,我們的學習算法不僅需要保證分類結果正確,更要進一步保證分類結果的確定性。
2) 假設訓練集是線性可分割的,即一定有一條直線可以將訓練集分開。那麼直觀來看,我們一定會選擇和正負樣本都有一定距離的直線。後面講到分類器的幾何間隔時,再正式討論。
支撐向量機中改動的符號:
輸出y∈{-1,+1}
h輸出的假設值也改爲{-1,+1}
g(z) = { 1 , 如果z>=0; -1, 如果z<0}
之前在使用式:hθ(x)=g(θTx)時,假設x0=1且x爲n+1維向量,現在忽略這兩個假設,表示爲:hw.b(x)=g(wTx+b),這裏的b相當於原來的θ0,w相當於原來θ除去θ0剩餘部分,長度爲n維。將截距b單提出來,方便引出支撐向量機。
函數間隔:
一個超平面(w,b)和某個特定訓練樣本(x(i),y(i))對應的函數間隔定義爲:
參數(w,b)定義了一個分類器,例如定義了一個線性分界線。
如果y(i)=1,爲了獲得較大的函數間隔,需要令wTx(i)+b >> 0;
如果y(i)=-1,爲了獲得較大的函數間隔,需要令wTx(i)+b << 0
如果y(i)(wTx(i)+b) > 0,意味着分類結果正確
一個超平面(w,b)和整個訓練集的函數間隔定義爲:
即相對於整個訓練集的函數間隔定義爲所有相對於樣本的函數間隔的最壞情形(上述講到,分界線距離樣本越遠效果越好)。
幾何間隔:
幾何距離定義爲:一個訓練樣本對應的點到由超平面確定的分隔線的距離。如下圖A到分隔線的距離AB就是幾何距離。
和分隔線垂直的單位向量表示爲:w/||w||,AB這段距離表示爲γ(i),γ上有小三角表示函數間隔,沒有表示幾何間隔。若A點表示x(i),那麼點B表示爲:
由於點B在分隔線上,它應該還滿足:
可以解出:
上式說明,對於一個訓練樣本x(i),到由參數w和b確定的分隔平面之間的距離,可以由上式得到。
由於上述一直假設對樣本進行了正確的分類,所以更一般的,將幾何間隔定義爲:
這個定義和函數間隔很相似,不同點是對向量w進行了標準化。同樣,希望幾何間隔也是越大越好。
結論:如果||w||=1,函數間隔等於幾何間隔。更一般的,幾何間隔等於函數間隔除以||w||。
一個超平面(w,b)和整個訓練集的幾何間隔定義爲:
和函數間隔類似,取樣本中最小的幾何間隔。
最大間隔分類器可以看做是支撐向量機的前身,是一種學習算法,選擇特定的w和b,使幾何間隔最大化。最大分類間隔是下述這樣的優化問題:
即選擇γ,w,b是γ最大,同時滿足條件:所選取的最大幾何間隔必須保證每個樣本的結合間隔至少爲γ。
最大間隔分類器的效果和logistic迴歸結果差不多好,深入研究這個分分類器,可以用一種更巧妙的方法讓其支持無限維的特徵空間,得到有效的非線性分類器。