Task02-樸素貝葉斯(Naive Bayes)-算法實踐(天池機(jī)器學(xué)習(xí)訓(xùn)練營D6)

本筆記為參加阿里云“天池龍珠計劃 機(jī)器學(xué)習(xí)訓(xùn)練營”所做的學(xué)習(xí)記錄,代碼及知識內(nèi)容均來源于訓(xùn)練營,本人稍作擴(kuò)充诊县。
具體活動內(nèi)容請移步阿里云天池龍珠計劃; 同時感謝公眾號“機(jī)器學(xué)習(xí)煉丹術(shù)”的介紹、推廣和組織。

模擬離散數(shù)據(jù)集--貝葉斯分類

Step1: 庫函數(shù)導(dǎo)入 + Step2: 數(shù)據(jù)導(dǎo)入&分析 + Step3: 模型訓(xùn)練&可視化 + Step4: 原理簡析

import random
import numpy as np
# 使用基于類目特征的樸素貝葉斯
from sklearn.naive_bayes import CategoricalNB
from sklearn.model_selection import train_test_split

Step2: 數(shù)據(jù)導(dǎo)入&分析

# 模擬數(shù)據(jù)
rng = np.random.RandomState(1)
# 隨機(jī)生成600個100維的數(shù)據(jù)弱左,每一維的特征都是[0, 4]之前的整數(shù)
X = rng.randint(5, size=(600, 100))
y = np.array([1, 2, 3, 4, 5, 6] * 100)
data = np.c_[X, y]
# X和y進(jìn)行整體打散
random.shuffle(data)
X = data[:,:-1]
y = data[:, -1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

所有的數(shù)據(jù)特征都是離散特征,我們引入基于離散特征的樸素貝葉斯分類器炕淮。

Step3: 模型訓(xùn)練&預(yù)測

clf = CategoricalNB(alpha=1)
clf.fit(X_train, y_train)
acc = clf.score(X_test, y_test)
print("Test Acc : %.3f" % acc)

# Output:
# Test Acc : 0.633
# 隨機(jī)數(shù)據(jù)測試拆火,分析預(yù)測結(jié)果,貝葉斯會選擇概率最大的預(yù)測結(jié)果
# 比如這里的預(yù)測結(jié)果是6涂圆,6對應(yīng)的概率最大们镜,由于我們是隨機(jī)數(shù)據(jù)
# 讀者運行的時候,可能會出現(xiàn)不一樣的結(jié)果润歉。
x = rng.randint(5, size=(1, 100))
print(clf.predict_proba(x))
print(clf.predict(x))

# Output:
# [[0.01365523 0.01227424 0.18555745 0.34259751 0.42150813 0.02440744]]
# [5]

Step4: 原理簡析

4.1 結(jié)果分析

可以看到測試的數(shù)據(jù)的結(jié)果模狭,貝葉斯會選擇概率最大的預(yù)測結(jié)果,比如這里的預(yù)測結(jié)果是5踩衩,5對應(yīng)的概率最大嚼鹉,由于我們是隨機(jī)數(shù)據(jù)贩汉,讀者運行的時候,可能會出現(xiàn)不一樣的結(jié)果锚赤。

這里的測試數(shù)據(jù)的準(zhǔn)確率沒有任何意義匹舞,因為數(shù)據(jù)是隨機(jī)生成的,不一定具有貝葉斯先驗性线脚,這里只是作為一個列子引導(dǎo)大家如何使用赐稽。

alpha=1這個參數(shù)表示什么?

我們知道貝葉斯法一定要計算兩個概率:條件概率: ??(??(??)=??(??)|??=????) 和類目 ???? 的先驗概率: ??(??=????) 浑侥。

對于離散特征:
NBFig1.jpg

我們可以看出就是對每一個變量的多加了一個頻數(shù)alpha姊舵。當(dāng)alphaλ=0時,就是極大似然估計寓落。通常取值alpha=1括丁,這就是拉普拉斯平滑(Laplace smoothing),這又叫做貝葉斯估計零如,主要是因為如果使用極大似然估計躏将,如果某個特征值在訓(xùn)練數(shù)據(jù)中沒有出現(xiàn),這時候會出現(xiàn)概率為0的情況考蕾,導(dǎo)致整個估計都為0祸憋,因為引入貝葉斯估計。

其中:
???? :表示第j個特征的個數(shù)肖卧。
?????? :表示第i個樣本的第j維元素蚯窥。
???? :第i個樣本的label。

4.2 樸素貝葉斯算法

樸素貝葉斯法 = 貝葉斯定理 + 特征條件獨立塞帐。

輸入 ??∈???? 空間是n維向量集合拦赠,輸出空間 ??={??1,??2,...,????} . 所有的X和y都是對應(yīng)空間上的隨機(jī)變量. ??(??,??) 是X和Y的聯(lián)合概率分別.訓(xùn)練數(shù)據(jù)集(由 ??(??,??) 獨立同分布產(chǎn)生):
??={(??1,??1),(??2,??2),...,(????,????)}

計算測試數(shù)據(jù)x的列表,我們需要依次計算 ??(??=????|??=??) 葵姥,取概率最大的值荷鼠,就是x對應(yīng)的分類。

??(??=????|??=??) 我們一般這樣解釋榔幸,當(dāng)給定 (??=??) 的條件下允乐, ??=???? 的概率,這就是條件概率. 這就簡單了削咆,我們只需要每個的x牍疏,計算其對應(yīng)的 ????,??∈[1,2,...,??] 的概率,選擇最大的概率作為這個x的類別進(jìn)行了.

通過貝葉斯公式進(jìn)行變形拨齐,得到預(yù)測的概率計算公式:


NBFig2.jpg

我們只需要計算以下兩個概率即可鳞陨,又由于樸素貝葉斯假設(shè)條件獨立,我們可以單獨計算每個特征的條件概率: ??(??(??)=??(??)|??=????) 和類目 ???? 的先驗概率: ??(??=????) 瞻惋。為了更好的理解這個公式厦滤,看下圖解釋:
其中:


NBFig3.jpg

當(dāng)涉及到多個條件時援岩,樸素貝葉斯有一個提前的假設(shè),我們稱之為 條件獨立性假設(shè)(或者 簡單假設(shè):Naive):公式如下
??(??,??|??) = ??(??|??)???(??|??)

這個公式是樸素貝葉斯的基礎(chǔ)假設(shè)掏导,即各個條件概率是相互獨立的窄俏,A不影響B(tài),B不影響A碘菜。 而對這里來說,假設(shè) ??=[??1,??2,...,????]

NBFig4.jpg

由此原式可以等價為:


NBFig5.jpg

我們來看一個實例限寞,更好的理解貝葉斯的計算過程忍啸,根據(jù)天氣和是否是周末預(yù)測一個人是否會出門。


NBFig6.jpg

4.3 樸素貝葉斯的優(yōu)缺點

優(yōu)點: 樸素貝葉斯算法主要基于經(jīng)典的貝葉斯公式進(jìn)行推導(dǎo)履植,具有很好的數(shù)學(xué)原理计雌。而且在數(shù)據(jù)量很小的時候表現(xiàn)良好,數(shù)據(jù)量很大的時候也可以進(jìn)行增量計算玫霎。由于樸素貝葉斯使用先驗概率估計后驗概率凿滤,具有很好的模型的可解釋性。

缺點: 樸素貝葉斯模型與其他分類方法相比具有最小的理論誤差率庶近。但是實際上并非總是如此翁脆,這是因為樸素貝葉斯模型給定輸出類別的情況下,假設(shè)屬性之間相互獨立鼻种,這個假設(shè)在實際應(yīng)用中往往是不成立的反番,在屬性個數(shù)比較多或者屬性之間相關(guān)性較大時,分類效果不好叉钥。而在屬性相關(guān)性較小時罢缸,樸素貝葉斯性能最為良好。對于這一點投队,有半樸素貝葉斯之類的算法通過考慮部分關(guān)聯(lián)性適度改進(jìn)枫疆,例如為了計算量不至于太大,我們假定每個屬性只依賴另外的一個敷鸦。解決特征之間的相關(guān)性息楔,我們還可以使用數(shù)據(jù)降維(PCA)的方法,去除特征相關(guān)性轧膘,再進(jìn)行樸素貝葉斯計算钞螟。

參考資料:
B站@up主-風(fēng)巽-樸素貝葉斯----模型原理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谎碍,隨后出現(xiàn)的幾起案子鳞滨,更是在濱河造成了極大的恐慌,老刑警劉巖蟆淀,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拯啦,死亡現(xiàn)場離奇詭異澡匪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)褒链,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門唁情,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甫匹,你說我怎么就攤上這事甸鸟。” “怎么了兵迅?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵抢韭,是天一觀的道長。 經(jīng)常有香客問我恍箭,道長刻恭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任扯夭,我火速辦了婚禮鳍贾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘交洗。我一直安慰自己骑科,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布构拳。 她就那樣靜靜地躺著纵散,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隐圾。 梳的紋絲不亂的頭發(fā)上伍掀,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機(jī)與錄音暇藏,去河邊找鬼蜜笤。 笑死,一個胖子當(dāng)著我的面吹牛盐碱,可吹牛的內(nèi)容都是我干的把兔。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼瓮顽,長吁一口氣:“原來是場噩夢啊……” “哼县好!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起暖混,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤缕贡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晾咪,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡收擦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谍倦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塞赂。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昼蛀,靈堂內(nèi)的尸體忽然破棺而出宴猾,到底是詐尸還是另有隱情,我是刑警寧澤叼旋,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布鳍置,位于F島的核電站,受9級特大地震影響送淆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怕轿,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一偷崩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撞羽,春花似錦阐斜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邻奠,卻和暖如春笤喳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碌宴。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工杀狡, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贰镣。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓呜象,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碑隆。 傳聞我的和親對象是個殘疾皇子恭陡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容