用樸素貝葉斯算法,一鍵破解垃圾郵件的秘密語言!

0 評(píng)論 2928 瀏覽 3 收藏 9 分鐘
🔗 产品经理的不可取代的价值是能够准确发现和满足用户需求,把需求转化为产品,并协调资源推动产品落地,创造商业价值。

本文從貝葉斯算法切入,深入講解了其原理,以垃圾郵件為例,分析其應(yīng)用步驟和使用邊界,就讓我們一起來看看吧!

樸素貝葉斯算法,這個(gè)名字聽起來有些“樸素”,但其實(shí)它是一個(gè)非常實(shí)用的機(jī)器學(xué)習(xí)算法。在機(jī)器學(xué)習(xí)領(lǐng)域,樸素貝葉斯算法就像一個(gè)勤勞的園丁,幫助我們?cè)跀?shù)據(jù)花園里分類和預(yù)測(cè)各種花卉的品種。

它的核心思想是通過已知的部分信息,來推測(cè)未知的信息。那它到底是如何“施展拳腳”進(jìn)行垃圾郵件分類的呢?我們來一起深度分析一下。

一、樸素貝葉斯算法的原理

樸素貝葉斯算法基于兩個(gè)關(guān)鍵概念:貝葉斯定理條件獨(dú)立性假設(shè)。

先說說貝葉斯定理。貝葉斯是由一名英國(guó)數(shù)學(xué)家提出來的,貝葉斯就是這個(gè)數(shù)學(xué)家的名字。同時(shí)它也是概率論中的一個(gè)重要公式,用于計(jì)算在已知一些相關(guān)事件發(fā)生的情況下,另一事件發(fā)生的概率。具體來說,貝葉斯定理的公式如下:

P(A|B) = [P(B|A) * P(A)] / P(B)

這里,P(A|B) 是在已知 B 發(fā)生的情況下 A 發(fā)生的概率(后驗(yàn)概率),P(B|A) 是在已知 A 發(fā)生的情況下 B 發(fā)生的概率(條件概率),P(A) 和 P(B) 分別是 A 和 B 的先驗(yàn)概率。

  • 后驗(yàn)概率:已經(jīng)看到某個(gè)事情發(fā)生了,再判斷這個(gè)事情發(fā)生原因的概率;
  • 條件概率:事件 B 在另一個(gè)事件 A 已經(jīng)發(fā)生條件下的概率;
  • 先驗(yàn)概率:事件 A 或 事件 B 是根據(jù)經(jīng)驗(yàn)來判斷發(fā)生的概率。

再來說說條件獨(dú)立性假設(shè)。

這是樸素貝葉斯算法的“樸素”之處。它假設(shè)所有特征在類別給定的情況下都是相互獨(dú)立的。

那特征之間的相互獨(dú)立是什么意思呢?

簡(jiǎn)單來說,一個(gè)人的性別是女性和她是中國(guó)國(guó)籍這兩項(xiàng)特征就是相互獨(dú)立的,因?yàn)樗膰?guó)籍不會(huì)影響到她的性別。那特征之間不相互獨(dú)立也很好理解了,像是一個(gè)人的身高會(huì)影響他衣服的尺碼,所以身高和衣服的尺碼就不是相互獨(dú)立的。

二、樸素貝葉斯案例之垃圾郵件分類

通常在職場(chǎng)中,我們都需要用到郵件發(fā)送一些重要文件或者通知,也會(huì)用自己的郵件賬號(hào)來注冊(cè)網(wǎng)站,然而這些網(wǎng)站同時(shí)會(huì)推給我們很多營(yíng)銷類的或詐騙類的郵件,令我們非常困擾。解決這個(gè)垃圾郵件的問題就可以使用今天的主角——樸素貝葉斯算法來做預(yù)測(cè)和分類,將垃圾郵件送到垃圾箱,進(jìn)而實(shí)現(xiàn)將一些垃圾郵箱拉黑。具體分為三步:

1. 步驟一:數(shù)據(jù)預(yù)處理

  • 收集數(shù)據(jù):獲取一個(gè)包含已標(biāo)記為垃圾郵件和非垃圾郵件的郵件數(shù)據(jù)集。
  • 數(shù)據(jù)清洗:去除無關(guān)字符(如標(biāo)點(diǎn)符號(hào)、數(shù)字等),并將所有文本轉(zhuǎn)換為小寫。
  • 文本分詞:將每封郵件分割成單詞或短語列表。
  • 構(gòu)建詞典:統(tǒng)計(jì)所有郵件中出現(xiàn)過的唯一單詞,并為每個(gè)單詞分配一個(gè)唯一的索引。

2. 步驟二:學(xué)習(xí)或訓(xùn)練

計(jì)算先驗(yàn)概率 P(Y):對(duì)于每個(gè)類別(垃圾郵件和非垃圾郵件),計(jì)算其在數(shù)據(jù)集中的比例。

假設(shè)我們有1000封郵件,其中200封是垃圾郵件,那么:

P(Spam) = 200 / 1000 = 0.2

P(Not Spam) = 800 / 1000 = 0.8

計(jì)算條件概率 P(Xi|Y):對(duì)于每個(gè)類別和每個(gè)單詞 i,在該類別下的郵件中,計(jì)算該單詞出現(xiàn)的頻率。

例如,如果我們有一個(gè)單詞 “free”,它在垃圾郵件中出現(xiàn)了50次,在非垃圾郵件中出現(xiàn)了10次,那么:

P(“free”|Spam) = 50 / (總垃圾郵件單詞數(shù))P(“free”|Not Spam) = 10 / (總非垃圾郵件單詞數(shù))

3. 步驟三:預(yù)測(cè)或分類

對(duì)于新的未知郵件,首先進(jìn)行同樣的數(shù)據(jù)預(yù)處理步驟(清洗、分詞等)。

使用訓(xùn)練得到的先驗(yàn)概率和條件概率,計(jì)算郵件屬于每個(gè)類別的后驗(yàn)概率 P(Y|X)。假設(shè)新郵件只包含單詞 “free”,我們可以通過以下公式計(jì)算其作為垃圾郵件的概率:

P(Spam|”free”) = [P(“free”|Spam) * P(Spam)] / P(“free”)

其中,P(“free”) 是 “free” 在整個(gè)郵件數(shù)據(jù)集中的概率,可以通過 Spam 和 Not Spam 中 “free” 的概率相加并歸一化得到。

比較 P(Spam|X) 和 P(Not Spam|X),選擇后驗(yàn)概率更大的類別作為郵件的預(yù)測(cè)類別。

在這個(gè)例子中,樸素貝葉斯算法通過計(jì)算每個(gè)單詞在不同類別郵件中出現(xiàn)的條件概率,以及各類別的先驗(yàn)概率,來判斷新郵件是否為垃圾郵件。

三、樸素貝葉斯算法的應(yīng)用步驟

接下來,我們來看看樸素貝葉斯算法的步驟。以幫我們鞏固一下知識(shí)。主要包括以下三步:

  1. 數(shù)據(jù)預(yù)處理:清洗和整理數(shù)據(jù),將非數(shù)值數(shù)據(jù)轉(zhuǎn)換為數(shù)值形式,可能需要進(jìn)行標(biāo)準(zhǔn)化或歸一化。
  2. 學(xué)習(xí)或訓(xùn)練:使用訓(xùn)練數(shù)據(jù)集來計(jì)算每個(gè)類別的先驗(yàn)概率 P(Y) 和每個(gè)特征在給定類別下的條件概率 P(Xi|Y)。
  3. 預(yù)測(cè)或分類:對(duì)于新的未知樣本,根據(jù)貝葉斯定理和條件獨(dú)立性假設(shè),計(jì)算其屬于每個(gè)類別的后驗(yàn)概率 P(Y|X)。選擇后驗(yàn)概率最大的類別作為該樣本的預(yù)測(cè)類別。

計(jì)算公式如下:

P(Y|X) = [P(Y) * P(X1|Y) * P(X2|Y) * … * P(Xn|Y)] / P(X)

其中,X1, X2, …, Xn 是特征,Y 是類別。

四、樸素貝葉斯算法的適用邊界和優(yōu)缺點(diǎn)

(1)適用邊界

  • 適用于大規(guī)模數(shù)據(jù)集。
  • 特征之間高度獨(dú)立或者弱相關(guān)的問題效果較好。
  • 在數(shù)據(jù)稀疏的情況下也能取得不錯(cuò)的效果。

(2)優(yōu)點(diǎn)部分

  • 計(jì)算簡(jiǎn)單快速,易于實(shí)現(xiàn)。
  • 對(duì)缺失數(shù)據(jù)不太敏感。
  • 可以處理多分類問題。

(3)缺點(diǎn)部分

  • 條件獨(dú)立性假設(shè)過于簡(jiǎn)化,可能導(dǎo)致預(yù)測(cè)精度下降。
  • 對(duì)輸入數(shù)據(jù)的分布有一定的假設(shè),如果實(shí)際數(shù)據(jù)與這些假設(shè)不符,效果可能會(huì)受影響。

五、最后的話

總的來說,樸素貝葉斯算法是一種基于貝葉斯定理和條件獨(dú)立性假設(shè)的分類方法。雖然它的假設(shè)可能過于簡(jiǎn)化,但在許多實(shí)際問題中仍能取得良好的效果。盡管它的名字聽起來有些“樸素”,但它的實(shí)用性和高效性讓我們?cè)跈C(jī)器學(xué)習(xí)領(lǐng)域離不開它。

當(dāng)然,我們也要注意它的適用邊界和優(yōu)缺點(diǎn),以便更好地發(fā)揮它的作用。希望帶給你一點(diǎn)啟發(fā),加油。

作者:柳星聊產(chǎn)品,公眾號(hào):柳星聊產(chǎn)品

本文由 @柳星聊產(chǎn)品 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!
专题
15631人已学习13篇文章
作为一名产品经理,需要持续对自己的经验进行总结并不断更新迭代。本专题的文章分享了产品设计方法论。
专题
97265人已学习11篇文章
不管你是产品、运营、设计、还是技术,流程图都是基础技能。
专题
12673人已学习12篇文章
活动策划,既是脑力活,也是苦力活,因此你需要尽量把各种情况考虑到。本专题的文章分享了如何策划一场线下活动。
专题
16087人已学习12篇文章
本专题的文章分享了支付风控系统的设计指南
专题
35207人已学习18篇文章
借用别人家的经典案例,来扒一扒社交电商。
专题
13136人已学习12篇文章
本专题的文章分享了金融产品经理需要知道的金融基础知识和产品观。