1.貝葉斯分類的基礎–貝葉斯定理
-
貝葉斯法則:假設數據遵循某種概率分佈,通過對概率的分析推理以做出最優的決策
-
貝葉斯公式:根據先驗概率和似然來計算後驗概率
利用了古典的數學理論,通過貝葉斯公式,由先驗概率計算出後驗概率,即是該假設屬於某一類別的概率,然後選擇後驗概率最大的類作爲該假設的目標值。 -
極大後驗概率(MAP):用貝葉斯公式計算每個候選假設的後驗概率,尋找給定數據D時可能性最大的假設
2.貝葉斯分類器
分類是機器學習和數據挖掘中最基礎的一種工作。假設現在我們有一組訓練樣本,以及與其相對應的分類標籤。每個元組都被表示爲n維屬性向量的形式,一共有k個類別。分類要做的就是模型可以預測數據屬於哪個類別。
對於每個類別,利用貝葉斯公式來估計在給定訓練元組X時的條件概率
當且僅當概率在所有類別中取值最大時,數據屬於。是類先驗概率,是樣本相對於類的類條件概率,稱爲似然。因爲是用於歸一化的證據因子,其對於所有的類別都是恆定的。所以只需要基於訓練數據來估計和
2.1 極大似然估計
估計類條件概率的一種常用策略是先假定其具有某種確定的概率分佈形式,再根據訓練樣本對概率分佈的參數進行估計。記關於類別的類條件概率爲,假設其具有某種概率分佈形式並且被參數向量唯一確定,則我們就根據訓練數據集來估計參數,我們將記爲
另來表示訓練集中第類樣本組成的集合,假設這些樣本是獨立同分布的,則參數對於數據集的似然是:
對進行極大似然估計就是尋找能夠最大化的參數值。也就是在的所有可能的取值中,找到一個能夠使數據出現的可能性最大的值。
上式的連乘操作容易造成下溢,通常使用對數似然:
此時,參數的極大似然估計爲:
需要注意的是這種參數估計的方法雖然能夠使類條件概率估計變得簡單,但是結果的準確性嚴重依賴於所假設的概率分佈形式是否符合潛在的真實數據分佈。在現實應用中,想要做出較好的接近潛在真實分佈的假設,往往需在一定會程度上利用關於任務本身的經驗知識,否則若僅憑猜測來假設概率分佈形式,很可能產生誤導性的結果。
2.2 貝葉斯分類器存在的問題
- 對於類條件概率來說,由於它涉及關於所有屬性的聯合概率,直接根據樣本出現的頻率來估計會遇到嚴重的困難,因爲如果假設樣本的d個屬性都是二值的,則樣本空間可能會有種可能性。在現實中,這個值往往遠大於訓練樣本數m,也就是說很多樣本的取值可能在訓練樣本中可能根本沒有出現,由於未被觀測到和沒有出現是兩個不同的事件,所以直接根據樣本頻率來估計是顯然不可行的。
- 由統計學知,如果每個特徵需要N個樣本,那麼對於10個特徵就需要個樣本,1000個特徵的詞彙表將需要個樣本。可以看到,所需樣本數會隨着特徵數目增大而迅速增長。如果特徵之間相互獨立,那麼樣本數就可以從減少到
3.樸素貝葉斯分類器
我們可以發現基於貝葉斯公式來計算後驗概率的主要困難在於類條件概率是所有屬性上的聯合概率,難以從有限的訓練樣本中直接估計而得。
爲了避開這個障礙,樸素貝葉斯分類器採用了屬性條件獨立性假設,即對於已知類別所有屬性獨立的對分類結果產生影響,也就是說所有屬性都是條件獨立的,聯合概率就等於每個單獨屬性概率的乘積:
因爲分母對於所有的類別都是一樣的,所以我們的目標就是:
樸素貝葉斯分類器的訓練過程就是基於訓練數據集來計算類先驗概率和類條件概率。
3.1 特徵屬性的條件概率估計的計算
-
計算條件概率是樸素貝葉斯的關鍵步驟
- 當特徵屬性是離散值時,可以很方便的統計訓練樣本中各個特徵屬性在每個類別中出現的頻率
- 當特徵屬性是連續值時,可以假定其值服從高斯分佈
只要計算出訓練樣本中各個類別中此特徵項劃分的各均值和標準差,帶入上述公式即可得到需要的估計值。
3.2 需要注意的問題
1. Laplace校準
需要注意的是,若某個屬性值在訓練集中在某個類中沒有出現過,則類條件概率會等於零,導致練乘計算出的概率值爲零。爲了避免這個問題,在計算概率值時要進行平滑處理,常用拉普拉斯修正,避免因訓練樣本不充足導致概率估值爲零的問題,對每個特徵的出現數初始化爲1,分母初始化爲2,在訓練集充分大時,修正過程所引入的額先驗的影響也會變得可忽略,使得估計值逐漸趨向於實際概率值。
2. 取對數處理
聯合概率的計算需要多個概率的乘積,概率值都在0-1之間,連乘操作可能會發生下溢出。取對數操作將連乘變爲加法操作 ,對數函數與原函數單調性一致不會產生任何損失
3.3. 優點
- 非常容易建立,並且能夠很快作出決策。當有新增樣本數據時,僅對新樣本屬性值所涉及的概率估值進行修正即可實現增量學習。
- 計算簡單
- 可處理多類別數據
- 決策結果很容易解釋
- 常用於文本分類
- 在進行其他複雜的分類技術前可以先應用樸素貝葉斯分類。
3.4 缺點
- 準確性降低(假設不成立)
- 不適用於特徵之間相關的情況
4.使用樸素貝葉斯進行分類
4.1 數據集
Most Popular Data Set中的wine數據集,這是對意大利同一地區聲場的三種不同品種的酒做大量分析所得出的數據;數據下載地址:https://archive.ics.uci.edu/ml/datasets/wine 該數據是一個多類別數據,一共包含三類。
可以看出該數據沒有缺失項,其中第一列代表數據的類別,標籤分爲爲1,2,3.每類數據分別有58, 71, 48個。下面給出算法的具體代碼: