樸素貝葉斯

2022-07-12 16:30:16 字數 1446 閱讀 1429

已知集合x,我們把這個集合稱為特徵集合,其中每乙個元素是乙個待分類項。

已知集合y,我們把這個集合稱為類別集合,其中的每乙個元素是乙個類別。

我們現在要找到乙個函式f,使得y=f(x),即x集合中的每乙個待分類項,都能通過f函式找到對應的分類y。

分類演算法的任務就是找到這個f函式。

樸素貝葉斯是根據貝葉斯公式得出的。

貝葉斯公式:

p(ai|b) = p(b|ai)p(ai) /p(b)

根據分類演算法可知:

我們的目的就是找到乙個f函式(此時這個f函式就是樸素貝葉斯),使得任意x特徵有對應的y類別。

即通過樸素貝葉斯找到「p(類別|特徵)」,解釋一下就是找到「當某某特徵發生的情況下,某某類別也發生的概率」。

所以套用貝葉斯公式可得:

p(類別|特徵) = p(特徵|類別)p(類別) /p(特徵)

樸素貝葉斯演算法有乙個大前提就是:所有特徵條件都是相互獨立的。

下面我們就來解釋一下這個前提的意義。

假設現在小明要出去玩:

有特徵集合x是表示當天的一些情況,有

有結果類別集合y代表最後到底去不去,有

那麼天氣可以細分為:好、中、差

作業可以細分為:多、少

心情可以細分為:好、壞

如果天氣、作業、心情是相互「不獨立」的,

那麼特徵就有3*2*2=12種組合情況。

就需要一一統計這12種情況的概率

即、、······一共12種。

在實際問題中特徵往往要比這還多,很多組合特徵可能根本沒法得到。

如果假定天氣、作業、心情相互獨立。

那麼就有p = ppp

由此,我們只需要找到各自的子特徵即可,即,、······一共7種。

特徵概率的獲取難度大大降低。

如果只是普通貝葉斯,那麼公式為:

p(去玩 | 天氣中,作業多,心情好) = p(天氣中,作業多,心情好 | 去玩)p(去玩) / p(天氣中,作業多,心情好)

由上面這個公式可以看出來:

我們為了求「在天氣中,作業多,心情好」這樣的前提下,小明出去玩的概率。

需要知道p(天氣中,作業多,心情好),即:同一天天氣中,作業多,心情好的概率。

以及p(天氣中,作業多,心情好 | 去玩)p(去玩),即:小明出去玩時,天氣中,作業多,心情好的概率。

自然,要提前找到這些特徵概率是十分困難的。

但如果用樸素貝葉斯演算法解這個問題,那麼作業、天氣、心情就假定成相互獨立的了。

公式變為:

p(去玩 | 天氣中,作業多,心情好) = p(天氣中|去玩)p(作業多|去玩)p(心情好|去玩)p(去玩) / p(天氣中)p(作業多)p(心情好)

由公式我們可以看出我們找到前置概率的難度下降了很多。

變成了找到單一特徵條件概率,如 p(天氣中)、p(天氣中|去玩)

所以樸素貝葉斯相比貝葉斯的最大區別就是,加上了個條件的獨立性假設,大大減少了引數的假設數量。

樸素貝葉斯

樸素貝葉斯演算法是一種基於概率統計的分類方法,它主要利用貝葉斯公式對樣本事件求概率,通過概率進行分類。以下先對貝葉斯公式做個了解。對於事件a b,若p b 0,則事件a在事件b發生的條件下發生的概率為 p a b p a b p b 將條件概率稍作轉化即可得到貝葉斯公式如下 p a b p b a ...

樸素貝葉斯

1.準備資料 從文字中構建詞向量 2.訓練演算法 從詞向量計算概率 3.測試演算法 儲存為 bayes.py 檔案 參考 coding utf 8 from numpy import 文字轉化為詞向量 def loaddataset postinglist my dog has flea probl...

樸素貝葉斯

機器學習是將資料轉化為決策面的過程 scikit learn縮寫為sklearn 訓練乙個分類器,學習之後 其處理的準確性 def nbaccuracy features train,labels train,features test,labels test from sklearn.bayes ...