【十大经典数据挖掘算法】Naïve Bayes
【十大經(jīng)典數(shù)據(jù)挖掘算法】系列
樸素貝葉斯(Na?ve Bayes)屬于監(jiān)督學(xué)習(xí)的生成模型,實(shí)現(xiàn)簡(jiǎn)單,沒有迭代,學(xué)習(xí)效率高,在大樣本量下會(huì)有較好的表現(xiàn)。但因?yàn)榧僭O(shè)太強(qiáng)——假設(shè)特征條件獨(dú)立,在輸入向量的特征條件有關(guān)聯(lián)的場(chǎng)景下并不適用。
1. 樸素貝葉斯算法
樸素貝葉斯分類器的主要思路:通過聯(lián)合概率\(P(x,y) = P(x|y) P(y)\)建模,運(yùn)用貝葉斯定理求解后驗(yàn)概率\(P(y|x)\);將后驗(yàn)概率最大者對(duì)應(yīng)的的類別作為預(yù)測(cè)類別。
分類方法
首先,我們定義訓(xùn)練集\(T = \lbrace (x_1,y_1),(x_2,y_2), \cdots ,(x_N,y_N)\rbrace\),其類別\(y_i \in \lbrace c_1,c_2, \cdots ,c_K\rbrace\),則訓(xùn)練集中樣本點(diǎn)數(shù)為\(N\),類別數(shù)為\(K\)。輸入待預(yù)測(cè)數(shù)據(jù)\(x\),則預(yù)測(cè)類別
\begin{equation}
\arg \mathop{\max}\limits_{c_k}p(y=c_k|x)
\label{eq:obj1}
\end{equation}
由貝葉斯定理可知:
\[p(y=c_k|x)= {p(x|y=c_k)p(y=c_k)\over p(x)} \]
對(duì)于類別\(c_k\)而言,\(p(x)\)是恒等的,因此式子\eqref{eq:obj1}等價(jià)于
\begin{equation}
\arg \mathop{\max}\limits_{c_k} p(x|y=c_k)p(y=c_k)
\label{eq:obj2}
\end{equation}
從上面式子可以看出:樸素貝葉斯將分類問題轉(zhuǎn)化成了求條件概率與先驗(yàn)概率的最大乘積問題。先驗(yàn)概率\(p(y=c_k)\)可通過計(jì)算類別的頻率得到,但如何計(jì)算條件概率 \(p(x|y=c_k)\)呢?
樸素貝葉斯對(duì)條件概率做了條件獨(dú)立性的假設(shè),即特征條件相互獨(dú)立。設(shè)輸入\(x\)為n維特征向量\((x^{(1)},x^{(2)},\cdots,x^{(j)},\cdots, x^{(n)})\),第\(j\)維特征\(x^{(j)}\)的取值有\(S_j\)個(gè)。由概率論的知識(shí)可知:
\[p(x|y=c_k)=\prod _{j}p(x^{(j)}|y=c_k)\]
式子\eqref{eq:obj2}等價(jià)于
\begin{equation}
\arg \mathop{\max}\limits_{c_k}p(y=c_k)\prod _{j}p(x^{(j)}|y=c_k)
\end{equation}
為什么要選擇后驗(yàn)概率最大的類別作為預(yù)測(cè)類別呢?因?yàn)楹篁?yàn)概率最大化,可以使得期望風(fēng)險(xiǎn)最小化,具體證明參看[1]。
極大似然估計(jì)
在樸素貝葉斯學(xué)習(xí)中,需要估計(jì)先驗(yàn)概率與條件概率,一般時(shí)采用極大似然估計(jì)。先驗(yàn)概率的極大似然估計(jì):
\[\hat {p}(y=c_k) = {\sum _{i} I(y_i=c_k)\over N}\]
其中,\(I\)是指示函數(shù),滿足括號(hào)內(nèi)條件時(shí)為1否則為0;可以看作為計(jì)數(shù)。
設(shè)第\(j\)維特征的取值空間為\(\lbrace a_{j1},a_{j2}, \cdots, a_{jS_j} \rbrace\),且輸入變量的第\(j\)維\(x^{(j)}=a_{jl}\),則條件概率的極大似然估計(jì):
\[\hat p(x^{(j)}=a_{jl}|y=c_k)={\sum \limits_{i}I(x_i^{(j)}=a_{jl},y=c_k)\over I(y_i=c_k)}\]
貝葉斯估計(jì)
在估計(jì)先驗(yàn)概率與條件概率時(shí),有可能出現(xiàn)為0的情況,則計(jì)算得到的后驗(yàn)概率亦為0,從而影響分類的效果。因此,需要在估計(jì)時(shí)做平滑,這種方法被稱為貝葉斯估計(jì)(Bayesian estimation)。先驗(yàn)概率的貝葉斯估計(jì):
\[\hat {p}(y=c_k) = {\sum _{i} I(y_i=c_k)+\lambda \over N+k\lambda}\]
后驗(yàn)概率的貝葉斯估計(jì):
\[\hat p(x^{(j)}=a_{jl}|y=c_k)={\sum \limits_{i}I(x_i^{(j)}=a_{jl},y=c_k)+\lambda\over I(y_i=c_k)+S_j\lambda}\]
常取\(\lambda =1\),這時(shí)被稱為L(zhǎng)aplace平滑(Laplace smoothing)。下面提到的拼寫檢查則用到了Laplace平滑——初始時(shí)將所有單詞的計(jì)數(shù)置為1。
2. 拼寫檢查
當(dāng)用戶在輸入拼寫錯(cuò)誤單詞時(shí),如何返回他想輸入的拼寫正確單詞。比如,用戶輸入單詞thew,用戶有到底是想輸入the,還是想輸入thaw?這種拼寫檢查的問題等同于分類問題:在許多可能拼寫正確單詞中,到底哪一個(gè)時(shí)最有可能的呢?大神Peter Norvig [2]采用樸素貝葉斯解決這個(gè)拼寫問題。
樸素貝葉斯分類
設(shè)用戶輸入的單詞為\(w\),要返回的拼寫正確單詞為\(c\),拼寫檢查要找出最大可能的\(c\),即
\[\arg \mathop{\max}_{c} p(c|w)\]
\(p(c|w)\)可以理解為在已發(fā)生\(w\)的情況下發(fā)生\(c\)的概率。根據(jù)貝葉斯定理:
\[p(c|w)={p(w|c)p(c)\over p(w)}\]
貝葉斯分類器可表示為:
\[\arg \mathop{\max}_{c} p(w|c)p(c)\]
如何估計(jì)\(p(w|c)\)與\(p(c)\)呢?估計(jì)\(p(c)\)的辦法可以在文本庫(kù)中統(tǒng)計(jì)單詞\(c\)的頻率。\(p(w|c)\)表示大多數(shù)用戶在輸入\(c\)時(shí)拼寫錯(cuò)誤輸入成了\(w\)的概率,可以看作時(shí)錯(cuò)誤模型。這需要對(duì)大量的錯(cuò)誤輸入進(jìn)行統(tǒng)計(jì),才能對(duì)\(p(w|c)\)估計(jì)得較為準(zhǔn)確。Norvig對(duì)此做了簡(jiǎn)易化的處理:
- 統(tǒng)計(jì)所有與\(w\)編輯距離為1的拼寫正確單詞,選出在文本庫(kù)中頻率最高者;
- 若未找到與\(w\)編輯距離為1的拼寫正確單詞,則統(tǒng)計(jì)所有與\(w\)編輯距離為2的拼寫正確單詞,選出在文本庫(kù)中頻率最高者
- 若與\(w\)編輯距離為2的拼寫正確單詞也未找到,則返回\(w\)(即分類失敗)。
所謂編輯距離為1,指單詞可以通過增加、刪除、修改(一個(gè)字母)或交換(相鄰兩個(gè)字母)變成另外的單詞。上述處理辦法默認(rèn)了:編輯距離為1的拼寫正確單詞永遠(yuǎn)比編輯距離為2的更有可能。
存在問題
Norvig所介紹的拼寫檢查是非常簡(jiǎn)單的一種,他在博文[2]中指出不足。此外,還有一些需要優(yōu)化的地方:
- 上下文關(guān)聯(lián),比如輸入thew,在不同的上下文中可能返回的拼寫正確單詞不同;
- 輸入媒介,比如用戶用鍵盤輸入與用手機(jī)的九宮格輸入,其拼寫錯(cuò)誤的方式時(shí)不一樣的。
3. 參考資料
[1] 李航,《統(tǒng)計(jì)學(xué)習(xí)方法》.
[2] Peter Norvig, How to Write a Spelling Corrector.
轉(zhuǎn)載于:https://www.cnblogs.com/en-heng/p/5002753.html
總結(jié)
以上是生活随笔為你收集整理的【十大经典数据挖掘算法】Naïve Bayes的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 彻底解决 intellij IDEA 卡
- 下一篇: 支持向量机(SVM)PPT