當前位置:成語大全網 - 古籍修復 - 貝葉斯分類器(3)樸素貝葉斯分類器

貝葉斯分類器(3)樸素貝葉斯分類器

根據貝葉斯分類器(1)的貝葉斯決策理論、貝葉斯與頻率、概率與似然的概述,總結了貝葉斯分類器要解決的問題和解決的方法,把貝葉斯分類問題變成了要解決的問題。上壹篇文章貝葉斯分類器(2)最大似然估計,MLE和MAP,

本文分析了第壹種解決方案:極大似然估計。本文將介紹壹種更簡單的求解方法,並在此基礎上講壹個常用的貝葉斯分類器的實現:樸素貝葉斯分類器。

我們的目標是通過學習樣本得到壹個分類器,從而對未知數據進行分類,也就是求後驗概率。在貝葉斯分類器(1)貝葉斯決策理論概述,貝葉斯與頻率,概率與似然中,我們描述了貝葉斯分類器用產生式模型的思想處理這個問題。如下式所示,貝葉斯分類器計算聯合概率,將聯合概率轉化為計算的類先驗概率、類條件概率和證據因子。

難點是類條件概率的計算,因為樣本本身就是其所有屬性的聯合概率,所有屬性都是隨機組合的,不可預測。計算某個組合的概率真的太難了,樸素貝葉斯的出現就是為了解決這個問題。

如果要計算聯合概率,我們肯定希望事件是相互獨立的,可以簡單粗暴。我們要向流星許個願:讓世界上復雜的聯合概率變成簡單的乘法!

樸素貝葉斯實現了我們的夢想!樸素貝葉斯中的天真是對多個屬性的聯合分布做了壹個大膽的假設,即三個維度是相互獨立的:

樸素貝葉斯通過這個假設大大簡化了計算。當然,使用這個假設是有代價的。壹般來說,大量樣本的特征之間的獨立性條件很弱。畢竟哲學聯系是普適的,所以我們會用樸素貝葉斯降低壹些準確性。如果實際問題中事件的屬性非常依賴,甚至無法使用樸素貝葉斯。壹般來說,樸素貝葉斯大大簡化了計算,同時犧牲了壹些結果的準確性。是否使用取決於我們在實際問題中的取舍。

回顧壹下樸素貝葉斯思想下的分類問題,事件有壹個屬性,可以按照下面的公式來轉化分類問題:

只需要計算上式不同類別中的值,取值最大的類別為分類結果。

其中根據大數定律,,是類別下的後驗概率,其計算依賴於先驗,需要分兩種情況:

是類別在樣本中的出現頻率,是類別在樣本的第壹個屬性中出現的頻率。

而有些出現概率低的屬性可能不會出現在我們的樣本中,也就是頻率為0,如果不處理就會導致0,導致包含這個屬性的樣本永遠不會被歸入類別,現實中不壹定是這樣的。所以我們需要對沒有出現的情況進行平滑,比如常見的拉普拉斯平滑,給分子的頻率加上壹個固定值,加上分母來表示第壹個屬性中每個值的頻率。

示例:垃圾郵件判斷

樸素貝葉斯分類在判斷垃圾郵件時有很好的實用效果,垃圾郵件是壹個二元分類問題。假設垃圾郵件是正常的,統計顯示:

現在壹封郵件包含壹些關鍵詞:獲勝,筆記本電腦,特朗普,選舉,...根據大量的數據,我們可以統計出這些詞的出現頻率,除以類別中所有詞的總出現頻率,得到它們出現的後驗概率。在垃圾郵件中:

在普通郵件中:

可以計算出:

時間值是時間值的26倍,所以判斷這封郵件是垃圾郵件。

判斷西瓜好壞的問題也可以轉化為離散型隨機變量的分類問題,過程和上面類似。

例如,在垃圾郵件的例子中,在多項式樸素貝葉斯中:

如果我們只關心“贏”與否,不考慮詞頻,那麽在伯努利的樸素貝葉斯中:

例子:性別判斷

以下是壹組關於人類身體特征的統計數據。

某人身高6英尺,體重130磅,鞋底8英寸。確定此人的性別:

每個屬性都是壹個連續變量,假設男女身高、體重、腳掌呈正態分布,通過樣本計算均值和方差。男性身高呈正態分布,均值為5.855,方差為0.035。所以,比如男性身高6英尺的概率相對值等於1.5789(密度函數的值不是概率,只是用來反映各值的相對可能性)。

分布確定後,可以計算性別的分類:

女性的概率比男性高近10000倍,因此判斷此人是女性。

在前面的1.2.1部分,我們已經提到了平滑,主要是針對那些沒有在樣本中出現過的詞。它們的概率為0,導致分類中沒有存在感,所以要把這些詞平滑掉。

有許多平滑方法,包括上面提到的拉普拉斯平滑、Goodturing平滑、線性插值、K-Z回歸等。但這些方法都是自然語言處理中常用的方法,我們暫且不介紹,重點放在樸素貝葉斯上。我們來看看樸素貝葉斯在sklearn中的實現。

sklearn中常用的樸素貝葉斯有三種:

1)高斯分布樸素貝葉斯

因素

先驗:形狀的陣列狀(n _ classes,)

類別的先驗概率,如果指定,將不根據數據計算任何調整。

var_smoothing: float,default=1e-9

為計算穩定性而添加到變量中的所有特征的最大變量的壹部分。

2)多項式分布樸素貝葉斯

因素

alpha: float,默認值=1.0

加法(拉普拉斯/李德斯通)平滑參數(0表示不平滑)。

fit_prior: bool,default=True

是否學習類先驗概率。如果為假,將使用統壹的先驗。

class _ prior:shape(n _ classes,)的類數組,默認值=無

類別的先驗概率。如果指定,則不根據數據調整先驗。

其常用功能與高斯型相同。

3)伯努利分布樸素貝葉斯

因素

二進制化:浮點或無,默認值=0.0

對樣本特征進行二值化(映射到布爾值)的閾值。如果沒有,輸入預設為二進制向量的就緒壹致性。(用於設置二值化的閾值)。

官方的例子基本和多項式類型壹樣,沒有設置二進制化,相當於默認使用二進制化=0.0。根據源代碼sk learn/預處理/_data.py,

中的二進制化(x,*,threshold = 0.0,copy = true)函數可以發現,所有大於二進制化的值都賦給1,其他都是0。

優勢

劣勢

可見,樸素貝葉斯的缺點很大程度上來源於其假設過於強烈,對於其假設壹致性較低的問題會失去更多的準確性。所以,如果可以弱化假設,是否可以提高樸素貝葉斯的性能?下壹章,我們將繼續探討。

主要參考資料

“機器學習”周誌華

“統計學習方法”李航

學習樸素貝葉斯文檔