天天看點

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

人工智能中的數學概念一網打盡!歡迎來到youtube網紅小哥siraj的系列欄目“the math of intelligence”,本視訊是該系列的第6集,講解

機率論在機器學習中的運用,看完視訊後,大家會學到一個生活中非常實用的技能喔!

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

(大資料文摘已獲得siraj本人翻譯授權)

大家好,我是siraj。

讓我們将目光高度聚焦在機率論在機器學習中扮演的角色,通過從頭開始建構一個垃圾郵件分類器。

數學概念在生活中的應用

生活中充滿了不确定性,我們嘗試一些自己覺得會成功的事情,但我們無法确定,比如今天是否會下雨,或者在衆人注視下跳舞是否合适,亦或是我是否該在這段感情中投入更多。機率論給我們搭建了一個大的架構來進行上述的決策,而通過這麼做, 我們能做出更有效的決策。

數學的一些分支理論方法,能夠在我們有完整資訊時幫助我們做出決定,但是機率論能夠訓練我們,在規律性與不确定性并存時做出決定。就像我們真實的生活,它是用來衡量某事發生的可能性。

而分析服從一定機率分布的事件規律這一學科,叫做統計學。一個簡單的例子便是抛硬币,隻會存在兩種結果,即正或者反,我們可以對正面出現的機率進行模組化,因為我們知道兩個要素,即事情可能發生的方式以及總共能出現的結果,在這個例子中便是50%。

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

就像藍牙的工作頻率一樣,這是一個随機的變量,它代表着一件我們無法确定的事,無法确定的事并無法像代數那樣用變量進行表述。相反的,它有一組可能的取值,也稱作樣本空間,以及這組裡的每一個取值可能發生的機率是通過這樣表示的。它們既可以是離散的,隻表示一定數量的值,也可以是連續的,能夠取到一定範圍内的任何值。

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

假設現在有兩件可能發生的事情 a和b,比如,我們抛一枚硬币,以及擲一枚六面的骰子。我們可以用三種方式來衡量它們的可能性,即當硬币是正面時,骰子是4的機率,這便是條件機率。

我們也可以對兩件事情同時發生的機率模組化,比如說,硬币落在正面同時骰子落在4的機率是什麼,這便是聯合機率。而如果我們想要知道某種特定結果的機率,比如說,僅僅隻是硬币或者僅僅隻是骰子的投擲機率,這種便被稱為邊際機率。

貝葉斯統計

在機器學習中我們做了很多類似的假設,有些時候它們是錯的(一家公司),現在十分流行使用貝葉斯定理,它建構于條件機率的原理之上。

它之是以被稱為定理,是因為我們可以通過邏輯來證明它的真實性。理論中說道,對于兩個事件a和b,如果我們知道在a已知的條件下b發生的條件機率,以及a事件發生的機率,我們能計算得到已知b事件的條件下a發生的條件機率。

換句話來說,已知b的條件下,a發生的後驗機率,能夠通過下述方法計算得到,即将已知的可能性乘以先驗機率,并将乘積除以已知的機率值,事件的先驗機率 (the prior是英文中對先驗機率的簡稱),它是利用已有的資訊計算得出的機率。

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

某一天有雨的事前機率可以計算為0.6,在過去的100年裡這個日期60%都有雨,我們從一個事前機率入手,現在我們得到了新的資訊,進而更準确的重新估計此機率。

如貝葉斯統計學家lindley所言,掏出槍,當你看到...(此處為2pac hit'em up歌詞),等等...他說的是今天的事後機率就是明天的事前機率,我們可以利用這個定理,根據新的知識來更新機率。

如果木闆斷裂,這個小車而墜毀的機率是多少?木闆斷裂的機率為0.3,小車墜毀的機率為0.5。利用貝葉斯定理,墜毀幾率為20%,事故避免啦,那麼如何将此應用于機器學習中呢?

有這麼一個線性分類器的家族,它們基于貝葉斯定理,被稱為樸素貝葉斯分類器,它們往往表現得非常好,尤其是對于小樣本來說,是以它們要優于其他更強大的替代品。

實戰上手垃圾電子郵件的分類

樸素貝葉斯分類器廣泛應用于一系列不同的領域,從診斷疾病,到情緒分析,到我們接下來要做的垃圾電子郵件的分類。

它們對資料做了兩個很大的假設,第一個假設,樣本是獨立且同分布的,它們是兩兩互相獨立的随機變量,是從相近的機率分布中得出的;第二個假設,特征的條件獨立性,這意味着樣本的機率,可以從訓練資料中直接估計得出,而不是去評估x的所有可能性。是以給定一個n維特征向量,我們可以計算類條件機率,意思是說有多大可能性可以觀測到這個特定模式,假定它屬于類别y的話,在實踐中,這種假設被違反了相當長的時間,盡管它們的表現還是很不錯的。

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

第一個假設

追劇學AI (6) | 機率論在機器學習中的遷移運用,手把手建一個垃圾郵件分類器

第二個假設

為了使用樸素貝葉斯做一個預測,我們将計算屬于每個類别中的情況的機率,并使類值達到最高,對樸素貝葉斯分類器來說,這種分類資料是一個很好的用例。首先我們來加載資料檔案,它是csv格式,是以我們可以使用流行的資料處理子產品pandas打開檔案,并利用其讀取功能将每一行存儲在資料框中,每個電子郵件都标記為垃圾或非垃圾郵件。

我們可以将資料分割成一個測試我們模型的訓練集,和一個評估其預測能力的測試集,對于我們在貝葉斯定理背景下的垃圾郵件分類問題,我們可以将a設為電子郵件是垃圾郵件的機率。而b設為電子郵件的内容,是以如果電子郵件是垃圾郵件的機率,大于它不是垃圾郵件的機率,那麼我們将其分類為垃圾郵件,否則我們就不會由于貝葉斯定理在兩種情況下都會導緻b的機率作為除數。

是以可以将其從我們的比較方程中約去,計算a和非a的機率很簡單,它們不過是我們的訓練集中,垃圾郵件和非垃圾郵件的百分比,更為困難的部分是計算,a的條件下b的機率和非a的條件下b的機率,為了做到這個,我們需要“詞袋”模型(bow)。意思是我們把一段文字作為一組無重複詞群來提取,忽略每個單詞的順序。

對于每個單詞,我們計算出它出現在垃圾郵件中 和非垃圾郵件中的百分比,如果要計算一封完整郵件的另一種條件機率,我們就看郵件中出現的每個單詞的之前的條件機率相乘之後的結果,這個是在分類中進行, 而不是在訓練時。

我們可以構造自己的分類函數,這類函數在碰到每封郵件的時候就會啟用,并且使用我們之前定義的方程去對它們進行分類,這個就是全部現在我們能很容易地對新郵件進行分類 把他們分成垃圾或者非垃圾郵件。

如果我們想要分類的郵件中的單詞,不在我們的訓練集裡呢?不管怎樣,我們要解決這個極端例子的問題。解決的方法是用一種叫,它可以讓我們将代碼就作為”alpha“變量輸入,這個意味着每一次我們加1,是以它永遠不會是零,因為如果不是這樣操作的話,他會把某個單詞的機率設定成零 (比如說”警察“),這樣的話 整個郵件的機率也變成了零,不管這封郵件中出現了多少個其它垃圾性詞組,我們至今都還沒有好的答案。

就是如果我們把模型自己變成随機會怎麼樣,的意思是像結構中的嵌入随機變量,變分自動編碼器,很棒的一篇論文,我會發你的,請務必,我們或許還能把我們的模型造得和你一樣變幻莫測,我很多變的,對于我們的模型有沒有什麼我們可以改進的地方?

當然啦!我們本可以用一些更有效率的技術,而不是詞袋,并且用egram而不是數每個單詞,但是朋友們,今天這個視訊已經内容夠多的了。

總結一下,機率論将有助于我們正式地将生活中的不确定因素用模型建立出來,這簡直太棒啦,貝葉斯定律描述一件事情的機率是基于,之前所有可能和這個事件相關的條件,樸素貝葉斯分類器,将帶有獨立性假設的貝葉斯定律應用于各種特征之中。

比賽時間

這周得獎的是hammad shaikh的筆記,展現了如何運用主成分分析進而使一組多元的資料組視覺化,并且檢測出一個人是否有糖尿病。他的筆記給我留下很深的印象,一定要,一定要去看看。

接下來第二名christian beekman,他用了3中不同的自動解碼器将工廠資料視覺化,非常贊!

這周的挑戰是寫你自己的貝葉斯分類器!基于一個文本資料集 并且要比我的示範有更好的結果,具體的請移步——

<a href="https://github.com/llsourcell/naive_bayes_classifier/">https://github.com/llsourcell/naive_bayes_classifier/</a>

赢家會在下周宣布,請大家訂閱更多的程式設計視訊。現在,我也隻能接受不确定性啦!

謝謝大家觀賞!

原文釋出時間為:2017-09-03

翻軸:曾維新,chelle,馬卓群

校對:jenny,sophie 後期:李文

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“大資料文摘”微信公衆号

繼續閱讀