柚子快報(bào)激活碼778899分享:【機(jī)器學(xué)習(xí)】樸素貝葉斯算法
柚子快報(bào)激活碼778899分享:【機(jī)器學(xué)習(xí)】樸素貝葉斯算法
目錄
什么是樸素貝葉斯算法?
算法引入?
貝葉斯定理
樸素貝葉斯分類器
工作原理
優(yōu)缺點(diǎn)
應(yīng)用場景
實(shí)現(xiàn)示例
基本步驟:
在機(jī)器學(xué)習(xí)的世界里,樸素貝葉斯算法以其簡單性和高效性而著稱。盡管它的名字聽起來有點(diǎn)復(fù)雜,但實(shí)際上它是一種基于概率論的簡單分類算法。今天,我們就來深入了解一下樸素貝葉斯算法的工作原理、優(yōu)缺點(diǎn)以及如何應(yīng)用它。?
什么是樸素貝葉斯算法?
樸素貝葉斯算法(Naive Bayes Algorithm)是一種基于貝葉斯定理的簡單概率分類器。它假設(shè)所有特征之間相互獨(dú)立,這個(gè)假設(shè)雖然在現(xiàn)實(shí)中往往不成立,但在很多情況下,樸素貝葉斯分類器仍然能夠表現(xiàn)得非常好。
樸素貝葉斯算法是基于貝葉斯定理的分類算法。貝葉斯定理是一種描述隨機(jī)事件A和B的條件概率的公式。在樸素貝葉斯中,我們假設(shè)特征之間相互獨(dú)立,即一個(gè)特征的出現(xiàn)不影響其他特征的出現(xiàn)。這個(gè)假設(shè)被稱為“樸素”的假設(shè),也是算法名稱的由來。
算法引入?
有一天,老師布置了一個(gè)非常困難的作業(yè),于是小明向班級內(nèi)其他30人發(fā)送群發(fā)消息,“今天的作業(yè)怎么做,能不能借我抄一抄,謝謝!”。然后班級內(nèi)30人分別給出了回復(fù),其內(nèi)容分為答案與情書。其中回復(fù)是作業(yè)答案的為16份。同時(shí)小明也收到了意外且深情的告白,其中情書數(shù)量是13份。但是唯獨(dú)小明的白月光發(fā)來的信息沒有看懂,于是小明就想能不能按照關(guān)鍵詞給白月光的回復(fù)進(jìn)行分類呢,看看到底是作業(yè)答案還是情書。
于是小明從其他的29份中選取了一些關(guān)鍵詞,從作業(yè)和情書中選取了4個(gè)關(guān)鍵詞,分別是喜歡、明天、紅豆、辛苦。然后從這16份答案與13份情書中分別統(tǒng)計(jì)出現(xiàn)的次數(shù),并且計(jì)算概率。
得到概率之后,我們就可以進(jìn)行計(jì)算:
回復(fù)是作業(yè)的概率=P(作業(yè))*?P(紅豆|作業(yè))*P(喜歡|作業(yè))=0.0183
回復(fù)是作業(yè)的概率=P(情書)*?P(紅豆|情書)*P(喜歡|情書)=0.0506
小明發(fā)現(xiàn)回復(fù)是情書的概率大于回復(fù)是作業(yè)的概率,0.0506>0.0183,所以得出結(jié)論,白月光給小明發(fā)的內(nèi)容是情書。
拉普拉斯平滑:?
我們再接著看這樣的一個(gè)例子:“好喜歡你,好喜歡你”、“好喜歡你,辛苦你了”,我們選取“喜歡”與“辛苦”為關(guān)鍵詞,我們根據(jù)上面的的例子,我們進(jìn)行計(jì)算概率:
P(作業(yè))*?P(喜歡|作業(yè))^3*P(辛苦|作業(yè))=0.000177
P(情書)*?P(喜歡|情書)^3*P(辛苦|情書)=0.000000
但是我們發(fā)現(xiàn)第二句話是很明顯的告白,但是因?yàn)樵谇闀小靶量唷标P(guān)鍵字沒有出現(xiàn),所以會(huì)導(dǎo)致P(辛苦|情書)?=0,通過這樣的算法,這很明顯得到了錯(cuò)誤的預(yù)測,那么我們?nèi)绾稳ソ鉀Q這個(gè)問題呢,我們可以利用拉普拉斯平滑技巧,也就是在每一個(gè)關(guān)鍵詞上人為增加一個(gè)出現(xiàn)的次數(shù)(如圖:黃色部分)。這樣會(huì)保證每一項(xiàng)都不為0,按照通過拉普拉斯平滑技巧處理過的次數(shù),進(jìn)行重新計(jì)算關(guān)鍵詞的概率,再此概率基礎(chǔ)上再進(jìn)行計(jì)算會(huì)得到正確的結(jié)果了。
貝葉斯定理
貝葉斯定理描述了給定事件B發(fā)生的條件下,事件A發(fā)生的概率,公式如下:
其中:
P(A∣B)?是在事件B發(fā)生的條件下事件A發(fā)生的概率。P(B∣A)?是在事件A發(fā)生的條件下事件B發(fā)生的概率。P(A)?是事件A發(fā)生的概率。P(B)?是事件B發(fā)生的概率。
樸素貝葉斯分類器
在分類問題中,樸素貝葉斯分類器的目標(biāo)是找出給定輸入特征下,哪個(gè)類別的概率最高。假設(shè)我們有特征集合 X={x1?,x2?,...,xn?} 和類別集合 C={c1?,c2?,...,ck?},樸素貝葉斯分類器會(huì)計(jì)算:
P(ci?∣X)=P(X)P(X∣ci?)P(ci?)?
其中:
P(ci?∣X)?是給定特征集合X的條件下,類別?ci??發(fā)生的概率。P(X∣ci?)?是給定類別?ci??的條件下,特征集合X發(fā)生的概率。P(ci?)?是類別?ci??的先驗(yàn)概率。P(X)?是特征集合X的先驗(yàn)概率,通常可以忽略,因?yàn)樗鼘λ蓄悇e都是相同的。
由于特征之間是條件獨(dú)立的,我們可以將P(X∣ci?) 展開為:
P(X∣ci?)=P(x1?∣ci?)P(x2?∣ci?)...P(xn?∣ci?)
工作原理
樸素貝葉斯算法的核心是計(jì)算給定輸入特征下,每個(gè)類別的概率,然后選擇概率最高的類別作為預(yù)測結(jié)果。具體步驟如下:
數(shù)據(jù)預(yù)處理:將數(shù)據(jù)轉(zhuǎn)換為算法可以處理的格式,如文本數(shù)據(jù)需要進(jìn)行分詞、去除停用詞等。 計(jì)算先驗(yàn)概率:先驗(yàn)概率是指在沒有觀察到任何特征的情況下,每個(gè)類別的概率。 計(jì)算條件概率:對于每個(gè)類別,計(jì)算在該類別下觀察到每個(gè)特征的概率。 應(yīng)用貝葉斯定理:結(jié)合先驗(yàn)概率和條件概率,計(jì)算后驗(yàn)概率,即在觀察到特征的情況下,每個(gè)類別的概率。 分類決策:選擇后驗(yàn)概率最高的類別作為預(yù)測結(jié)果。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
簡單高效:算法實(shí)現(xiàn)簡單,計(jì)算效率高,適合處理大量數(shù)據(jù)。對小規(guī)模數(shù)據(jù)表現(xiàn)良好:在數(shù)據(jù)量不大的情況下,樸素貝葉斯往往能取得不錯(cuò)的效果。需要的樣本量較少:與其他機(jī)器學(xué)習(xí)算法相比,樸素貝葉斯需要的訓(xùn)練樣本量較少。
缺點(diǎn):
特征獨(dú)立性假設(shè):特征獨(dú)立性假設(shè)在實(shí)際應(yīng)用中往往不成立,這可能會(huì)影響分類的準(zhǔn)確性。對輸入數(shù)據(jù)的表達(dá)形式敏感:算法對輸入數(shù)據(jù)的表達(dá)形式非常敏感,如文本數(shù)據(jù)的分詞方式等。
應(yīng)用場景
文本分類:通過計(jì)算文檔中每個(gè)詞屬于某個(gè)類別的概率,來確定文檔的分類。垃圾郵件檢測:通過分析郵件內(nèi)容,判斷郵件是否為垃圾郵件。情感分析:通過分析用戶評論,判斷用戶的情感傾向。
實(shí)現(xiàn)示例
基本步驟:
數(shù)據(jù)準(zhǔn)備:收集數(shù)據(jù)并將其分為訓(xùn)練集和測試集。特征提取:從數(shù)據(jù)中提取特征。計(jì)算先驗(yàn)概率:計(jì)算每個(gè)類別的概率。計(jì)算條件概率:計(jì)算每個(gè)特征在每個(gè)類別下的條件概率。應(yīng)用貝葉斯定理:使用貝葉斯定理計(jì)算后驗(yàn)概率。分類決策:選擇具有最高后驗(yàn)概率的類別作為預(yù)測類別。
以下是使用Python的scikit-learn庫實(shí)現(xiàn)樸素貝葉斯分類器的簡單示例:
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加載數(shù)據(jù)集
iris = load_iris()
X, y = iris.data, iris.target
# 劃分訓(xùn)練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 創(chuàng)建并訓(xùn)練模型
model = GaussianNB()
model.fit(X_train, y_train)
# 進(jìn)行預(yù)測
y_pred = model.predict(X_test)
# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
在這個(gè)示例中,我們使用了sklearn庫中的GaussianNB類,它假設(shè)特征遵循高斯分布。load_iris函數(shù)用于加載鳶尾花數(shù)據(jù)集,這是一個(gè)常用的分類數(shù)據(jù)集。然后,我們將數(shù)據(jù)集分為訓(xùn)練集和測試集,并使用GaussianNB模型進(jìn)行訓(xùn)練和預(yù)測。
請注意,這個(gè)例子是一個(gè)簡化的版本,實(shí)際應(yīng)用中可能需要進(jìn)行更多的數(shù)據(jù)預(yù)處理步驟,比如特征縮放、缺失值處理等。此外,根據(jù)數(shù)據(jù)的特性,可能需要選擇不同的樸素貝葉斯模型,如多項(xiàng)式樸素貝葉斯或伯努利樸素貝葉斯。
樸素貝葉斯算法雖然簡單,但在很多實(shí)際應(yīng)用中都能取得不錯(cuò)的效果。理解其工作原理和適用場景,可以幫助我們在適當(dāng)?shù)膯栴}上選擇合適的工具。希望這篇文章能幫助大家更好地理解和應(yīng)用樸素貝葉斯算法。
注:算法引入及圖片來源于[5分鐘學(xué)算法] #02 樸素貝葉斯 寫作業(yè)還得看小明_嗶哩嗶哩_bilibili
柚子快報(bào)激活碼778899分享:【機(jī)器學(xué)習(xí)】樸素貝葉斯算法
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。