摘要:在決策理論中,貝葉斯推斷與主觀概率密切相關(guān),通常被稱為貝葉斯概率。特征分布的假設(shè)被稱為樸素貝葉斯分類器的事件模型。多項(xiàng)式樸素貝葉斯對于一個(gè)多項(xiàng)分布事件模型,樣本表示了一個(gè)特定事件出現(xiàn)的頻率,由多項(xiàng)分布產(chǎn)生,其中,表示事件發(fā)生的頻率。
Code: https://github.com/tmac1997/u...
Naive Bayes Bayes" theorem(貝葉斯法則)在概率論和統(tǒng)計(jì)學(xué)中,Bayes" theorem(貝葉斯法則)根據(jù)事件的先驗(yàn)知識描述事件的概率。貝葉斯法則表達(dá)式如下所示:
$$ egin{align} P(A|B)=frac{P(B|A)P(A)}{P(B)} end{align} $$
P(A|B) -- 在事件B下事件A發(fā)生的條件概率
P(B|A) -- 在事件A下事件B發(fā)生的條件概率
P(A), P(B) -- 獨(dú)立事件A和獨(dú)立事件B的邊緣概率
Bayesian inferenc(貝葉斯推斷)貝葉斯定理的許多應(yīng)用之一就是貝葉斯推斷,一種特殊的統(tǒng)計(jì)推斷方法,隨著信息增加,貝葉斯定理可以用于更新假設(shè)的概率。在決策理論中,貝葉斯推斷與主觀概率密切相關(guān),通常被稱為“Bayesian probability(貝葉斯概率)”。
貝葉斯推斷根據(jù) prior probability(先驗(yàn)概率) 和統(tǒng)計(jì)模型導(dǎo)出的“l(fā)ikelihood function(似然函數(shù))”的結(jié)果,再由貝葉斯定理計(jì)算 posterior probability(后驗(yàn)概率):
$$ egin{align} P(H|E)=frac{P(E|H)P(H)}{P(E)} end{align} $$
P(H) -- 已知的先驗(yàn)概率
P(H|E) -- 我們想求的后驗(yàn)概率,即在B事件發(fā)生后對于事件A概率的評估
P(E|H) -- 在事件H下觀測到E的概率
P(E) -- marginal likelihood(邊際似然),對于所有的假設(shè)都是相同的,因此不參與決定不同假設(shè)的相對概率
P(E|H)/P(E) -- likelihood function(可能性函數(shù)),這是一個(gè)調(diào)整因子,通過不斷的獲取信息,可以使得預(yù)估概率更接近真實(shí)概率
貝葉斯推斷例子假設(shè)我們有兩個(gè)裝滿了餅干的碗,第一個(gè)碗里有10個(gè)巧克力餅干和30個(gè)普通餅干,第二個(gè)碗里兩種餅干都有20個(gè)。我們隨機(jī)挑一個(gè)碗,再在碗里隨機(jī)挑餅干。那么我們挑到的普通餅干來自一號碗的概率有多少?
我們用 H1 代表一號碗,H2 代表二號碗,而且 P(H1) = P(H2) = 0.5。事件 E 代表普通餅干。由上面可以得到 P(E|H1) = 30 / 40 = 0.75,P(E|H2) = 20 / 40 = 0.5。由貝葉斯定理我們可以得到:
$$ egin{align} P(H_{1}|E) &=frac{P(E|H_{1})} { P(E|H_{1}) P(H_{1}) + P(E|H_{2}) P(H_{2})} &=frac{0.75 imes 0.5}{0.75 imes 0.5 + 0.5 imes 0.5} &=0.6 end{align} $$
P(E|H1)P(H1), P(E|H2)P(H2) -- 分別表示拿到來自一號碗的普通餅干、來自二號碗的普通餅干的概率
P(E|H1)P(H1) + P(E|H2)P(H2) -- 表示拿到普通餅干的概率
在我們拿到餅干前,我們會選到一號碗的概率是先驗(yàn)概率 P(H1),在拿到了餅干后,我們要得到是后驗(yàn)概率 P(H1|E)
Naive Bayes Classifiers(樸素貝葉斯分類器)在機(jī)器學(xué)習(xí)中,樸素貝葉斯分類器是一個(gè)基于貝葉斯定理的比較簡單的概率分類器,其中 naive(樸素)是指的對于模型中各個(gè) feature(特征) 有強(qiáng)獨(dú)立性的假設(shè),并未將 feature 間的相關(guān)性納入考慮中。
樸素貝葉斯分類器一個(gè)比較著名的應(yīng)用是用于對垃圾郵件分類,通常用文字特征來識別垃圾郵件,是文本分類中比較常用的一種方法。樸素貝葉斯分類通過選擇 token(通常是郵件中的單詞)來得到垃圾郵件和非垃圾郵件間的關(guān)聯(lián),再通過貝葉斯定理來計(jì)算概率從而對郵件進(jìn)行分類。
由單個(gè)單詞分類郵件假設(shè)可疑消息中含有“sex”這個(gè)單詞,平時(shí)大部分收到郵件的人都會知道,這封郵件可能是垃圾郵件。然而分類器并不知道這些,它只能計(jì)算出相應(yīng)的概率。假設(shè)在用戶收到的郵件中,“sex”出現(xiàn)在在垃圾郵件中的頻率是5%,在正常郵件中出現(xiàn)的概率是0.5%。
我們用 S 表示垃圾郵件(spam),H 表示正常郵件(healthy)。兩者的先驗(yàn)概率都是50%,即:
$$ egin{align} P(S)=P(H)=50\% end{align} $$
我們用 W 表示這個(gè)詞,那么問題就變成了計(jì)算 P(S|W) 的值,根據(jù)貝葉斯定理我們可以得到:
$$ egin{align} P(S|W) = frac{ P(W|S)P(S) } {P(W|S)P(S) + P(W|H)P(H)} end{align} $$
P(W|S)和P(W|H)的含義是,這個(gè)詞語在垃圾郵件和正常郵件中,分別出現(xiàn)的概率。通過計(jì)算可以得到 P(S|W) = 99.0%,說明“sex”的判斷能力很強(qiáng),將50%的先驗(yàn)概率提高到了99%的后驗(yàn)概率。
結(jié)合獨(dú)立概率大多數(shù)貝葉斯垃圾郵件分類器基于這樣的假設(shè):郵件中的單詞是獨(dú)立的事件,實(shí)際上這種條件一般不被滿足,這也是為什么被稱作樸素貝葉斯。這是對于應(yīng)用情景的理想化,在此基礎(chǔ)上,我們可以通過貝葉斯定理得到以下公式:
$$ egin{align} p = frac {p_{1}p_{2} ... p_{N}} {p_{1}p_{2} ... p_{N} + (1 - p_{1})(1 - p_{2})...(1 - p_{N})} end{align} $$
p是可疑郵件是垃圾郵件的概率
pN 當(dāng)郵件中包含第 Nth 個(gè)單詞時(shí)郵件是垃圾郵件的概率 p(S|WN)
對于輸出的概率,我們將它和一個(gè) threshold(閾值)相比較,小于閾值的是正常郵件,否則認(rèn)為它是垃圾郵件。
Parameter estimation and event model(參數(shù)估計(jì)和事件模型)每一個(gè)分類的先驗(yàn)概率可以通過假設(shè)它們等概率(即先驗(yàn)概率 = 1 /(類別樹)),或者通過從訓(xùn)練集中計(jì)算類別概率的估計(jì)得到(即先驗(yàn)概率 = 該分類的樣本數(shù) / 總樣本數(shù))。為了估計(jì)特征分布的參數(shù),必須為訓(xùn)練集中的特征假設(shè)特征分布或者生成非參數(shù)模型。
特征分布的假設(shè)被稱為樸素貝葉斯分類器的 event model(事件模型)。對于文檔分類中遇到的離散事件,多項(xiàng)分布和伯努利分布比較適合。這些對于特征分布的不同的假設(shè)會導(dǎo)致最后結(jié)果并不完全相同,這些概念也經(jīng)常被混淆。
Gaussian naive Bayes(高斯樸素貝葉斯)處理連續(xù)數(shù)據(jù)的時(shí)候,一個(gè)比較典型的假設(shè)是與每個(gè)分類相關(guān)的連續(xù)值是按照高斯分布分布的。假設(shè)訓(xùn)練集中包含連續(xù)值 x,我們按照類別將數(shù)據(jù)分類,并計(jì)算每個(gè)分類的均值和偏差。μk是對應(yīng)類別 Ck 下 x 值的均值,σk2是方差。假設(shè)我們已經(jīng)收集到一些觀測值 v。在給定分類 Ck 下 v 的概率分布 p(x = v | Ck 可以通過將 v 帶入到由 μk 和 σk2 決定的高斯分布公式中得到。
Multinomial naive Bayes(多項(xiàng)式樸素貝葉斯)對于一個(gè)多項(xiàng)分布事件模型,樣本表示了一個(gè)特定事件出現(xiàn)的頻率,由多項(xiàng)分布(p1, p2, ..., pn)產(chǎn)生,其中,pi 表示事件 i 發(fā)生的頻率。特征向量 X = (x1, ..., xn)可以用直方圖來表示,其中 xi 表示事件 i 在特定特定情境下被觀察到的次數(shù)。這是個(gè)典型的用于文檔分類的事件模型,其中事件表示在單個(gè)文檔中某個(gè)單詞的出現(xiàn)。觀察到特征向量的可能性為:
在對數(shù)空間中,多項(xiàng)樸素貝葉斯分類器變成了線性分類器:
其中 b = log p(Ck),wki = log pki
如果給定的類別和特征在訓(xùn)練集沒有一起出現(xiàn),那么基于頻率的概率估計(jì)就為0。當(dāng)它們相乘時(shí),將消除其他概率中的所有信息。因此我們通常希望在所有概率估計(jì)中包含被稱為 pseudocount(偽計(jì)數(shù))的小樣本校正,防止由估計(jì)概率被設(shè)置為0.這種規(guī)則化樸素貝葉斯的方法被稱為 Laplace smoothing(拉普拉斯平滑),當(dāng)偽計(jì)數(shù)為1時(shí),一般情況下使用 Lidstone smoothing(萊德斯通平滑)。
Bernoulli naive Bayes(伯努利樸素貝葉斯)在多元伯努利事件模型中,特征是描述輸入的二元變量。和多項(xiàng)式模型一樣,這個(gè)模型通常用于文本分類,其中使用的是二項(xiàng)出現(xiàn)特征而不是詞頻。如果 xi 是用于描述詞表中第 i 個(gè)單詞是否出現(xiàn)的二元變量, 文檔中給定分類 Ck 的可能性為:
其中 pki 表示分類 Ck 產(chǎn)生單詞 xi的可能性。這個(gè)事件模型特別適合用于短文本分類。
Python 用法 numpy.meshgridReturn coordinate matrices from coordinate vectors.
Make N-D coordinate arrays for vectorized evaluations of N-D scalar/vector fields over N-D grids, given one-dimensional coordinate arrays x1, x2,..., xn.
>>> import numpy as np >>> x, y = np.meshgrid(np.arange(0, 3), np.arange(0, 2)) >>> x array([[0, 1, 2], [0, 1, 2]]) >>> y array([[0, 0, 0], [1, 1, 1]])
根據(jù)給定的坐標(biāo)向量創(chuàng)建坐標(biāo)矩陣。在上面的例子中,所得到的是 X 軸上 [0, 1, 2] 和 Y 軸上 [0, 1] 構(gòu)成的一個(gè) 3x2 的網(wǎng)格,共有 6 個(gè)點(diǎn)。返回的兩個(gè)值中的 x 是這 6 個(gè)點(diǎn) 在 X 軸上的投影, y 則是這 6 個(gè)點(diǎn)在 y 軸的投影。
通常我們將 meshgrid 用于繪制圖形:
import numpy as np import matplotlib.pyplot as plt plt.style.use("ggplot") x, y = np.meshgrid(np.arange(-1, 1, 0.01), np.arange(-1, 1, 0.01)) contor = np.sqrt(x ** 2 + y ** 2) plt.figure() plt.imshow(contor) plt.colorbar() plt.grid(False) plt.show()numpy.c_ (CClass object)
Translates slice objects to concatenation along the second axis.
>>> np.c_[np.array([1,2,3]), np.array([4,5,6])] array([[1, 4], [2, 5], [3, 6]]) >>> np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])] array([[1, 2, 3, 0, 0, 4, 5, 6]])
將切片對象沿第二個(gè)軸(按列)轉(zhuǎn)換為連接。
numpy.ravelReturn a contiguous flattened array.
1-D array, containing the elements of the input, is returned. A copy is made only if needed.
>>> import numpy as np >>> x = np.array([[1, 2], [3, 4]]) >>> y = np.array([[1, 2], [3, 4]]) >>> x.flatten()[1] = 100 >>> x array([[1, 2], [3, 4]]) >>> y.ravel()[1] = 100 >>> y array([[ 1, 100], [ 3, 4]])
numpy.quiver 將多維數(shù)組降低為一位數(shù)組,和 numpy.flatten 實(shí)現(xiàn)的功能一樣。兩者的區(qū)別在于返回 copy 還是返回視圖 view,numpy.flatten 返回一份拷貝,對拷貝所做的修改不會影響原始矩陣,而 numpy.ravel() 返回的是視圖 view,會影響原始矩陣。
matplotlib.pyplot.pcolormeshCreate a pseudocolor plot of a 2-D array.
pyplot.pcolormesh 用于創(chuàng)建一個(gè) 2D 數(shù)組的偽彩色圖。pcolormesh 類似于 pcolor,pcolor 返回的是 PolyCollection,但 pcolormesh 返回的是 QuadMesh。pcolormesh要快得多,所以對于大型數(shù)組來說,pcolormesh是首選。
import numpy as np import matplotlib.pyplot as plt plt.style.use("ggplot") x_min = 0.0 x_max = 1.0 y_min = 0.0 y_max = 1.0 # create data grid h = .01 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) # create classification grid = np.c_[xx.flatten(), yy.flatten()] pred = np.zeros((grid.shape[0], 1)) for i in xrange(0, len(grid)): if i >= (grid.shape[0] / 2): pred[i] = 1 pred = pred.reshape(xx.shape, order="F") # plot figure plt.figure() plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.pcolormesh(xx, yy, pred) plt.show()Reference
Naive Bayes spam filtering
Bayesian inference
Bayesian inference
Bayes" theorem
Naive Bayes classifier
貝葉斯推斷及其互聯(lián)網(wǎng)應(yīng)用(一):定理簡介
貝葉斯推斷及其互聯(lián)網(wǎng)應(yīng)用(二):過濾垃圾郵件
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44508.html
摘要:基于概率論的分類方法樸素貝葉斯概述貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。另外一種有效計(jì)算條件概率的方法稱為貝葉斯準(zhǔn)則??梢栽谌我獾姆诸悎鼍爸惺褂脴闼刎惾~斯分類器,不一定非要是文本。 基于概率論的分類方法:樸素貝葉斯 1. 概述 貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。本章首先介紹貝葉斯分類算法的基礎(chǔ)—...
閱讀 2929·2021-11-24 09:39
閱讀 3612·2021-11-22 13:54
閱讀 3415·2021-11-16 11:45
閱讀 2444·2021-09-09 09:33
閱讀 3202·2019-08-30 15:55
閱讀 1297·2019-08-29 15:40
閱讀 926·2019-08-29 15:19
閱讀 3402·2019-08-29 15:14