国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Naive Bayes(樸素貝葉斯)

Miracle / 2309人閱讀

摘要:在決策理論中,貝葉斯推斷與主觀概率密切相關,通常被稱為貝葉斯概率。特征分布的假設被稱為樸素貝葉斯分類器的事件模型。多項式樸素貝葉斯對于一個多項分布事件模型,樣本表示了一個特定事件出現的頻率,由多項分布產生,其中,表示事件發生的頻率。

Code: https://github.com/tmac1997/u...

Naive Bayes Bayes" theorem(貝葉斯法則)

在概率論和統計學中,Bayes" theorem(貝葉斯法則)根據事件的先驗知識描述事件的概率。貝葉斯法則表達式如下所示:

$$ egin{align} P(A|B)=frac{P(B|A)P(A)}{P(B)} end{align} $$

P(A|B) -- 在事件B下事件A發生的條件概率

P(B|A) -- 在事件A下事件B發生的條件概率

P(A), P(B) -- 獨立事件A和獨立事件B的邊緣概率

Bayesian inferenc(貝葉斯推斷)

貝葉斯定理的許多應用之一就是貝葉斯推斷,一種特殊的統計推斷方法,隨著信息增加,貝葉斯定理可以用于更新假設的概率。在決策理論中,貝葉斯推斷與主觀概率密切相關,通常被稱為“Bayesian probability(貝葉斯概率)”。

貝葉斯推斷根據 prior probability(先驗概率) 和統計模型導出的“likelihood function(似然函數)”的結果,再由貝葉斯定理計算 posterior probability(后驗概率):

$$ egin{align} P(H|E)=frac{P(E|H)P(H)}{P(E)} end{align} $$

P(H) -- 已知的先驗概率

P(H|E) -- 我們想求的后驗概率,即在B事件發生后對于事件A概率的評估

P(E|H) -- 在事件H下觀測到E的概率

P(E) -- marginal likelihood(邊際似然),對于所有的假設都是相同的,因此不參與決定不同假設的相對概率

P(E|H)/P(E) -- likelihood function(可能性函數),這是一個調整因子,通過不斷的獲取信息,可以使得預估概率更接近真實概率

貝葉斯推斷例子

假設我們有兩個裝滿了餅干的碗,第一個碗里有10個巧克力餅干和30個普通餅干,第二個碗里兩種餅干都有20個。我們隨機挑一個碗,再在碗里隨機挑餅干。那么我們挑到的普通餅干來自一號碗的概率有多少?

我們用 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) -- 表示拿到普通餅干的概率

在我們拿到餅干前,我們會選到一號碗的概率是先驗概率 P(H1),在拿到了餅干后,我們要得到是后驗概率 P(H1|E)

Naive Bayes Classifiers(樸素貝葉斯分類器)

在機器學習中,樸素貝葉斯分類器是一個基于貝葉斯定理的比較簡單的概率分類器,其中 naive(樸素)是指的對于模型中各個 feature(特征) 有強獨立性的假設,并未將 feature 間的相關性納入考慮中。

樸素貝葉斯分類器一個比較著名的應用是用于對垃圾郵件分類,通常用文字特征來識別垃圾郵件,是文本分類中比較常用的一種方法。樸素貝葉斯分類通過選擇 token(通常是郵件中的單詞)來得到垃圾郵件和非垃圾郵件間的關聯,再通過貝葉斯定理來計算概率從而對郵件進行分類。

由單個單詞分類郵件

假設可疑消息中含有“sex”這個單詞,平時大部分收到郵件的人都會知道,這封郵件可能是垃圾郵件。然而分類器并不知道這些,它只能計算出相應的概率。假設在用戶收到的郵件中,“sex”出現在在垃圾郵件中的頻率是5%,在正常郵件中出現的概率是0.5%。

我們用 S 表示垃圾郵件(spam),H 表示正常郵件(healthy)。兩者的先驗概率都是50%,即:

$$ egin{align} P(S)=P(H)=50\% end{align} $$

我們用 W 表示這個詞,那么問題就變成了計算 P(S|W) 的值,根據貝葉斯定理我們可以得到:

$$ 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)的含義是,這個詞語在垃圾郵件和正常郵件中,分別出現的概率。通過計算可以得到 P(S|W) = 99.0%,說明“sex”的判斷能力很強,將50%的先驗概率提高到了99%的后驗概率。

結合獨立概率

大多數貝葉斯垃圾郵件分類器基于這樣的假設:郵件中的單詞是獨立的事件,實際上這種條件一般不被滿足,這也是為什么被稱作樸素貝葉斯。這是對于應用情景的理想化,在此基礎上,我們可以通過貝葉斯定理得到以下公式:

$$ 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 當郵件中包含第 Nth 個單詞時郵件是垃圾郵件的概率 p(S|WN)

對于輸出的概率,我們將它和一個 threshold(閾值)相比較,小于閾值的是正常郵件,否則認為它是垃圾郵件。

Parameter estimation and event model(參數估計和事件模型)

每一個分類的先驗概率可以通過假設它們等概率(即先驗概率 = 1 /(類別樹)),或者通過從訓練集中計算類別概率的估計得到(即先驗概率 = 該分類的樣本數 / 總樣本數)。為了估計特征分布的參數,必須為訓練集中的特征假設特征分布或者生成非參數模型。

特征分布的假設被稱為樸素貝葉斯分類器的 event model(事件模型)。對于文檔分類中遇到的離散事件,多項分布和伯努利分布比較適合。這些對于特征分布的不同的假設會導致最后結果并不完全相同,這些概念也經常被混淆。

Gaussian naive Bayes(高斯樸素貝葉斯)

處理連續數據的時候,一個比較典型的假設是與每個分類相關的連續值是按照高斯分布分布的。假設訓練集中包含連續值 x,我們按照類別將數據分類,并計算每個分類的均值和偏差。μk是對應類別 Ck 下 x 值的均值,σk2是方差。假設我們已經收集到一些觀測值 v。在給定分類 Ck 下 v 的概率分布 p(x = v | Ck 可以通過將 v 帶入到由 μk 和 σk2 決定的高斯分布公式中得到。

Multinomial naive Bayes(多項式樸素貝葉斯)

對于一個多項分布事件模型,樣本表示了一個特定事件出現的頻率,由多項分布(p1, p2, ..., pn)產生,其中,pi 表示事件 i 發生的頻率。特征向量 X = (x1, ..., xn)可以用直方圖來表示,其中 xi 表示事件 i 在特定特定情境下被觀察到的次數。這是個典型的用于文檔分類的事件模型,其中事件表示在單個文檔中某個單詞的出現。觀察到特征向量的可能性為:

在對數空間中,多項樸素貝葉斯分類器變成了線性分類器:

其中 b = log p(Ck),wki = log pki

如果給定的類別和特征在訓練集沒有一起出現,那么基于頻率的概率估計就為0。當它們相乘時,將消除其他概率中的所有信息。因此我們通常希望在所有概率估計中包含被稱為 pseudocount(偽計數)的小樣本校正,防止由估計概率被設置為0.這種規則化樸素貝葉斯的方法被稱為 Laplace smoothing(拉普拉斯平滑),當偽計數為1時,一般情況下使用 Lidstone smoothing(萊德斯通平滑)。

Bernoulli naive Bayes(伯努利樸素貝葉斯)

在多元伯努利事件模型中,特征是描述輸入的二元變量。和多項式模型一樣,這個模型通常用于文本分類,其中使用的是二項出現特征而不是詞頻。如果 xi 是用于描述詞表中第 i 個單詞是否出現的二元變量, 文檔中給定分類 Ck 的可能性為:

其中 pki 表示分類 Ck 產生單詞 xi的可能性。這個事件模型特別適合用于短文本分類。

Python 用法 numpy.meshgrid

Return 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]])

根據給定的坐標向量創建坐標矩陣。在上面的例子中,所得到的是 X 軸上 [0, 1, 2] 和 Y 軸上 [0, 1] 構成的一個 3x2 的網格,共有 6 個點。返回的兩個值中的 x 是這 6 個點 在 X 軸上的投影, y 則是這 6 個點在 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]])

將切片對象沿第二個軸(按列)轉換為連接。

numpy.ravel

Return 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 將多維數組降低為一位數組,和 numpy.flatten 實現的功能一樣。兩者的區別在于返回 copy 還是返回視圖 view,numpy.flatten 返回一份拷貝,對拷貝所做的修改不會影響原始矩陣,而 numpy.ravel() 返回的是視圖 view,會影響原始矩陣。

matplotlib.pyplot.pcolormesh

Create a pseudocolor plot of a 2-D array.

pyplot.pcolormesh 用于創建一個 2D 數組的偽彩色圖。pcolormesh 類似于 pcolor,pcolor 返回的是 PolyCollection,但 pcolormesh 返回的是 QuadMesh。pcolormesh要快得多,所以對于大型數組來說,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

貝葉斯推斷及其互聯網應用(一):定理簡介

貝葉斯推斷及其互聯網應用(二):過濾垃圾郵件

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44508.html

相關文章

  • 基于概率論的分類方法:樸素貝葉

    摘要:基于概率論的分類方法樸素貝葉斯概述貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。另外一種有效計算條件概率的方法稱為貝葉斯準則。可以在任意的分類場景中使用樸素貝葉斯分類器,不一定非要是文本。 基于概率論的分類方法:樸素貝葉斯 1. 概述 貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。本章首先介紹貝葉斯分類算法的基礎—...

    LeviDing 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<