概率論在機(jī)器學(xué)習(xí)中的遷移運(yùn)用,手把手建一個(gè)垃圾郵件分類器
大家好,我是Siraj。
讓我們將目光高度聚焦在概率論在機(jī)器學(xué)習(xí)中扮演的角色,通過從頭開始構(gòu)建一個(gè)垃圾郵件分類器。
數(shù)學(xué)概念在生活中的應(yīng)用
生活中充滿了不確定性,我們嘗試一些自己覺得會(huì)成功的事情,但我們無法確定,比如今天是否會(huì)下雨,或者在眾人注視下跳舞是否合適,亦或是我是否該在這段感情中投入更多。概率論給我們搭建了一個(gè)大的框架來進(jìn)行上述的決策,而通過這么做, 我們能做出更有效的決策。
數(shù)學(xué)的一些分支理論方法,能夠在我們有完整信息時(shí)幫助我們做出決定,但是概率論能夠訓(xùn)練我們,在規(guī)律性與不確定性并存時(shí)做出決定。就像我們真實(shí)的生活,它是用來衡量某事發(fā)生的可能性。
而分析服從一定概率分布的事件規(guī)律這一學(xué)科,叫做統(tǒng)計(jì)學(xué)。一個(gè)簡單的例子便是拋硬幣,只會(huì)存在兩種結(jié)果,即正或者反,我們可以對正面出現(xiàn)的概率進(jìn)行建模,因?yàn)槲覀冎纼蓚€(gè)要素,即事情可能發(fā)生的方式以及總共能出現(xiàn)的結(jié)果,在這個(gè)例子中便是50%。
就像藍(lán)牙的工作頻率一樣,這是一個(gè)隨機(jī)的變量,它代表著一件我們無法確定的事,無法確定的事并無法像代數(shù)那樣用變量進(jìn)行表述。相反的,它有一組可能的取值,也稱作樣本空間,以及這組里的每一個(gè)取值可能發(fā)生的概率是通過這樣表示的。它們既可以是離散的,只表示一定數(shù)量的值,也可以是連續(xù)的,能夠取到一定范圍內(nèi)的任何值。
假設(shè)現(xiàn)在有兩件可能發(fā)生的事情 A和B,比如,我們拋一枚硬幣,以及擲一枚六面的骰子。我們可以用三種方式來衡量它們的可能性,即當(dāng)硬幣是正面時(shí),骰子是4的概率,這便是條件概率。
我們也可以對兩件事情同時(shí)發(fā)生的概率建模,比如說,硬幣落在正面同時(shí)骰子落在4的概率是什么,這便是聯(lián)合概率。而如果我們想要知道某種特定結(jié)果的概率,比如說,僅僅只是硬幣或者僅僅只是骰子的投擲概率,這種便被稱為邊際概率。
貝葉斯統(tǒng)計(jì)
在機(jī)器學(xué)習(xí)中我們做了很多類似的假設(shè),有些時(shí)候它們是錯(cuò)的(一家公司),現(xiàn)在十分流行使用貝葉斯定理,它構(gòu)建于條件概率的原理之上。
它之所以被稱為定理,是因?yàn)槲覀兛梢酝ㄟ^邏輯來證明它的真實(shí)性。理論中說道,對于兩個(gè)事件A和B,如果我們知道在A已知的條件下B發(fā)生的條件概率,以及A事件發(fā)生的概率,我們能計(jì)算得到已知B事件的條件下A發(fā)生的條件概率。
換句話來說,已知B的條件下,A發(fā)生的后驗(yàn)概率,能夠通過下述方法計(jì)算得到,即將已知的可能性乘以先驗(yàn)概率,并將乘積除以已知的概率值,事件的先驗(yàn)概率 (the prior是英文中對先驗(yàn)概率的簡稱),它是利用已有的信息計(jì)算得出的概率。
某一天有雨的事前概率可以計(jì)算為0.6,在過去的100年里這個(gè)日期60%都有雨,我們從一個(gè)事前概率入手,現(xiàn)在我們得到了新的信息,從而更準(zhǔn)確的重新估計(jì)此概率。
如貝葉斯統(tǒng)計(jì)學(xué)家Lindley所言,掏出槍,當(dāng)你看到...(此處為2pac Hit'em Up歌詞),等等...他說的是今天的事后概率就是明天的事前概率,我們可以利用這個(gè)定理,根據(jù)新的知識(shí)來更新概率。
如果木板斷裂,這個(gè)小車而墜毀的概率是多少?木板斷裂的概率為0.3,小車墜毀的概率為0.5。利用貝葉斯定理,墜毀幾率為20%,事故避免啦,那么如何將此應(yīng)用于機(jī)器學(xué)習(xí)中呢?
有這么一個(gè)線性分類器的家族,它們基于貝葉斯定理,被稱為樸素貝葉斯分類器,它們往往表現(xiàn)得非常好,尤其是對于小樣本來說,因此它們要優(yōu)于其他更強(qiáng)大的替代品。
實(shí)戰(zhàn)上手垃圾電子郵件的分類
樸素貝葉斯分類器廣泛應(yīng)用于一系列不同的領(lǐng)域,從診斷疾病,到情緒分析,到我們接下來要做的垃圾電子郵件的分類。
它們對數(shù)據(jù)做了兩個(gè)很大的假設(shè),***個(gè)假設(shè),樣本是獨(dú)立且同分布的,它們是兩兩相互獨(dú)立的隨機(jī)變量,是從相近的概率分布中得出的;第二個(gè)假設(shè),特征的條件獨(dú)立性,這意味著樣本的概率,可以從訓(xùn)練數(shù)據(jù)中直接估計(jì)得出,而不是去評估X的所有可能性。因此給定一個(gè)N維特征向量,我們可以計(jì)算類條件概率,意思是說有多大可能性可以觀測到這個(gè)特定模式,假定它屬于類別Y的話,在實(shí)踐中,這種假設(shè)被違反了相當(dāng)長的時(shí)間,盡管它們的表現(xiàn)還是很不錯(cuò)的。
***個(gè)假設(shè)
第二個(gè)假設(shè)
為了使用樸素貝葉斯做一個(gè)預(yù)測,我們將計(jì)算屬于每個(gè)類別中的情況的概率,并使類值達(dá)到***,對樸素貝葉斯分類器來說,這種分類數(shù)據(jù)是一個(gè)很好的用例。首先我們來加載數(shù)據(jù)文件,它是CSV格式,所以我們可以使用流行的數(shù)據(jù)處理模塊pandas打開文件,并利用其讀取功能將每一行存儲(chǔ)在數(shù)據(jù)框中,每個(gè)電子郵件都標(biāo)記為垃圾或非垃圾郵件。
我們可以將數(shù)據(jù)分割成一個(gè)測試我們模型的訓(xùn)練集,和一個(gè)評估其預(yù)測能力的測試集,對于我們在貝葉斯定理背景下的垃圾郵件分類問題,我們可以將A設(shè)為電子郵件是垃圾郵件的概率。而B設(shè)為電子郵件的內(nèi)容,因此如果電子郵件是垃圾郵件的概率,大于它不是垃圾郵件的概率,那么我們將其分類為垃圾郵件,否則我們就不會(huì)由于貝葉斯定理在兩種情況下都會(huì)導(dǎo)致B的概率作為除數(shù)。
因此可以將其從我們的比較方程中約去,計(jì)算A和非A的概率很簡單,它們不過是我們的訓(xùn)練集中,垃圾郵件和非垃圾郵件的百分比,更為困難的部分是計(jì)算,A的條件下B的概率和非A的條件下B的概率,為了做到這個(gè),我們需要“詞袋”模型(BOW)。意思是我們把一段文字作為一組無重復(fù)詞群來提取,忽略每個(gè)單詞的順序。
對于每個(gè)單詞,我們計(jì)算出它出現(xiàn)在垃圾郵件中 和非垃圾郵件中的百分比,如果要計(jì)算一封完整郵件的另一種條件概率,我們就看郵件中出現(xiàn)的每個(gè)單詞的之前的條件概率相乘之后的結(jié)果,這個(gè)是在分類中進(jìn)行, 而不是在訓(xùn)練時(shí)。
我們可以構(gòu)造自己的分類函數(shù),這類函數(shù)在碰到每封郵件的時(shí)候就會(huì)啟用,并且使用我們之前定義的方程去對它們進(jìn)行分類,這個(gè)就是全部現(xiàn)在我們能很容易地對新郵件進(jìn)行分類 把他們分成垃圾或者非垃圾郵件。
如果我們想要分類的郵件中的單詞,不在我們的訓(xùn)練集里呢?不管怎樣,我們要解決這個(gè)極端例子的問題。解決的方法是用一種叫,它可以讓我們將代碼就作為”Alpha“變量輸入,這個(gè)意味著每一次我們加1,所以它永遠(yuǎn)不會(huì)是零,因?yàn)槿绻皇沁@樣操作的話,他會(huì)把某個(gè)單詞的概率設(shè)定成零 (比如說”警察“),這樣的話 整個(gè)郵件的概率也變成了零,不管這封郵件中出現(xiàn)了多少個(gè)其它垃圾性詞組,我們至今都還沒有好的答案。
就是如果我們把模型自己變成隨機(jī)會(huì)怎么樣,的意思是像結(jié)構(gòu)中的嵌入隨機(jī)變量,變分自動(dòng)編碼器,很棒的一篇論文,我會(huì)發(fā)你的,請務(wù)必,我們或許還能把我們的模型造得和你一樣變幻莫測,我很多變的,對于我們的模型有沒有什么我們可以改進(jìn)的地方?
當(dāng)然啦!我們本可以用一些更有效率的技術(shù),而不是詞袋,并且用egram而不是數(shù)每個(gè)單詞,但是朋友們,今天這個(gè)視頻已經(jīng)內(nèi)容夠多的了。
總結(jié)一下,概率論將有助于我們正式地將生活中的不確定因素用模型建立出來,這簡直太棒啦,貝葉斯定律描述一件事情的概率是基于,之前所有可能和這個(gè)事件相關(guān)的條件,樸素貝葉斯分類器,將帶有獨(dú)立性假設(shè)的貝葉斯定律應(yīng)用于各種特征之中。
來源:https://www.youtube.com/watch?v=PrkiRVcrxOs&t=6s
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】