碼農(nóng)不識(shí)貝葉斯 雖知數(shù)據(jù)也枉然

數(shù)據(jù)的重要性毋庸置疑悟泵,但是如何讓數(shù)據(jù)產(chǎn)生價(jià)值呢杈笔?

對一個(gè)全棧老碼農(nóng)而言,經(jīng)常在開發(fā)或者研發(fā)管理的時(shí)候遇到各種預(yù)測糕非、決策蒙具、推斷、分類朽肥、檢測禁筏、排序等諸多問題。面對“你的代碼還有bug么衡招?”這樣的挑戰(zhàn)篱昔,一種理智的回答是,我們已經(jīng)執(zhí)行了若干測試用例始腾,代碼中存在bug的可能性是百分之零點(diǎn)幾州刽。也就是說,我們對當(dāng)前程序中沒有bug的信心是百分之九十九點(diǎn)幾浪箭。這實(shí)際上就是一直貝葉斯思維穗椅,或者說使用了貝葉斯方法。不論我們看到奶栖,還是沒有看到匹表,它都在那里门坷,熠熠生輝。

如果預(yù)測當(dāng)前軟件有沒有bug呢袍镀?還是要從貝葉斯定理看起默蚌。

貝葉斯定理的淺解

對老碼農(nóng)來說,貝葉斯定理的概率表達(dá)相對清晰苇羡,理解起來會(huì)相對容易绸吸。回憶一下我們學(xué)過的概率論宣虾,聯(lián)合概率是滿足交換律的惯裕,即:

P(A and B) = P (B and A)

對聯(lián)合概率以條件概率展開:

P(A and B ) = P(A) P(B|A)
P(B and A ) = P(B) P(A|B)

從而得到:

P(A) P(B|A) = P(B) P(A|B)

簡單的變換一下,得到:

P(B|A)= P(A|B) P(B)/P(A)

大功告成绣硝,這就是神奇的貝葉斯定理蜻势。其中:

  • P(B) 為先驗(yàn)概率,即在得到新數(shù)據(jù)前某一假設(shè)的概率鹉胖;
  • P(B|A) 為后驗(yàn)概率握玛,即在觀察到新數(shù)據(jù)后計(jì)算該假設(shè)的概率;
  • P(A|B)為似然度甫菠,即在該假設(shè)下得到這一數(shù)據(jù)的概率挠铲;
  • P(A)為標(biāo)準(zhǔn)化常量,即在任何假設(shè)下得到這一數(shù)據(jù)的概率寂诱。

還可以加點(diǎn)料拂苹,在計(jì)算P(A)的時(shí)候,可以用加法定理表示:

P(A) = P(A and B) + P(A and B_) = P(A|B)P(B)+ P(A|B_) P(B_) 

從而有:

P(B|A) =P(A|B)P(B)/{P(A|B)P(B)+P(A|B_)P(B_)}

其中B_ 是與B相反的事件痰洒。就測試與bug 之間的估算而言瓢棒,《貝葉斯推斷的思想》(http://www.reibang.com/p/0a038974d48c)一文給出了貝葉斯推斷的結(jié)果,其中就使用了這樣的方法丘喻。

貝葉斯方法

貝葉斯方法是一個(gè)非常通用的推理框架脯宿,用客觀的新信息更新我們最初關(guān)于某個(gè)事物的信念后,就會(huì)得到一個(gè)新的改進(jìn)了的信念泉粉。通過引入先驗(yàn)的不確定性连霉,允許了初始推斷的錯(cuò)誤,獲得了更新的證據(jù)后嗡靡,也沒有放棄初始的推斷跺撼,而是調(diào)整為更符合目前的證據(jù)。

但是讨彼,P(A|B) 和 P(B|A) 之類的經(jīng)常讓人混淆财边,@待字閨中的陳老師給出了理解的一個(gè)關(guān)鍵點(diǎn),區(qū)分出規(guī)律和現(xiàn)象点骑,就是將A看成“規(guī)律”酣难,B看成“現(xiàn)象”,那么貝葉斯公式看成:

P(規(guī)律|現(xiàn)象)= P(現(xiàn)象|規(guī)律)P(規(guī)律)/P(現(xiàn)象)

陳老師在《這的理解貝葉斯公式嗎》和《又一個(gè)生活中的貝葉斯應(yīng)用》給出了幾個(gè)通俗易懂的例子黑滴,這里不再贅述憨募。

回歸到碼農(nóng)生活,我們在改善系統(tǒng)功能的時(shí)候袁辈,通常的一個(gè)手段是AB測試菜谣。AB測試是用來檢測兩種不同處理方式的差異化程度的一種統(tǒng)計(jì)設(shè)計(jì)模式,例如兩個(gè)網(wǎng)站誰會(huì)帶來更高的轉(zhuǎn)化率晚缩,這里的轉(zhuǎn)化可以是用戶的購買、注冊、或其他的行為憨攒。AB測試的關(guān)鍵點(diǎn)在于組別之間只能容許一個(gè)不同點(diǎn)昂羡。實(shí)驗(yàn)后的分析一般都是用假設(shè)檢驗(yàn)完成的,例如均值差異檢驗(yàn)或者比例差異檢驗(yàn)鸣皂,往往涉及Z分?jǐn)?shù)或令人困惑的p值抓谴,而用貝葉斯方法則會(huì)自然的多。

對A寞缝,B兩個(gè)網(wǎng)站的轉(zhuǎn)化概率進(jìn)行建模癌压。轉(zhuǎn)化率在0~1之間,可采用Beta分布荆陆。如果先驗(yàn)是Beta(a1滩届,b1),且 觀測到N次訪問里有X次轉(zhuǎn)化被啼,那么此時(shí)的后驗(yàn)分布是Beta(a1+X,b1+N-X). 假設(shè)先驗(yàn)是Beta(1帜消,1),等價(jià)于【0趟据,1】上的均勻分布券犁,則示例代碼如下:

from spicy.stats import beta
a1_prior = 1
b1_prior =1
visitors_A = 12345 // 網(wǎng)站A的訪問人數(shù)
visitors_B = 1616  // 網(wǎng)站B的訪問人數(shù)
conversions_from_A = 1200 // 網(wǎng)站A的轉(zhuǎn)化人數(shù)
conversions_from_B = 15 0  // 網(wǎng)站B的轉(zhuǎn)化人數(shù)

posterior_A = beta(a1_prior+ conversions_from_A,b1_prior + visitors_A -conversions_from_A)
posterior_B = Beta(a1_prior+converiosns_from_B,b1_prior + visitors_B-conversions_from_B)
// 對后驗(yàn)概率進(jìn)行采樣,用rvs方法生成樣本
samples = 20000
samples_posterior_A = posterior_A.rvs(samples)
samples_posterior_B = posterior_B.rvs(samples)
// 對后驗(yàn)概率進(jìn)行比較
print (samples_posterior_A > samples_posterior_B).mean()

使用貝葉斯方法汹碱,是從思考數(shù)據(jù)是如何產(chǎn)生的開始粘衬。
1)什么隨機(jī)變量能過描述這些統(tǒng)計(jì)數(shù)據(jù)
2)確實(shí)概率分布的所需參數(shù)
3)參數(shù)對應(yīng)早期行為,或后期行為咳促,定義各種變化點(diǎn)
4)定義參數(shù)的概率分布
5)參數(shù)概率分布的變量選擇稚新,直到一個(gè)可以假設(shè)的均勻分布

對先驗(yàn)及后驗(yàn)概率的選擇,針對應(yīng)用場景而定跪腹。就先驗(yàn)分布而言褂删,除了常見的分布外,還有:

  • Gamma分布冲茸,指數(shù)隨機(jī)變量的推廣
  • 威沙特分布 屯阀,是所有半正定矩陣的分布缅帘,是一個(gè)協(xié)方差矩陣的適當(dāng)?shù)南闰?yàn)。
  • Beta分布难衰,隨機(jī)變量定義在0到1之間钦无,使其成為概率和比例的熱門選擇。
  • 冪律分布盖袭,滿足公司規(guī)模和公司數(shù)量之間的關(guān)系

在AB測試中使用了Beta分布失暂, 應(yīng)用了一個(gè)Beta先驗(yàn)分布連同二項(xiàng)式生成的觀測數(shù)據(jù)形成一個(gè)Beta后驗(yàn)分布這一原理。

當(dāng)面對多種對象之間的因果關(guān)系的時(shí)候鳄虱,貝葉斯方法演變成為了貝葉斯網(wǎng)絡(luò)弟塞。

貝葉斯網(wǎng)絡(luò)

貝葉斯網(wǎng)絡(luò)是為了解決不定性和不完整性問題而提出的,在多個(gè)領(lǐng)域中獲得了廣泛應(yīng)用拙已。貝葉斯網(wǎng)絡(luò)是基于概率推理的圖形化網(wǎng)絡(luò)决记,而貝葉斯公式則是這個(gè)概率網(wǎng)絡(luò)的基礎(chǔ)。貝葉斯網(wǎng)絡(luò)中的每個(gè)點(diǎn)代表一個(gè)隨機(jī)變量悠栓,都是具有實(shí)際含義霉涨、需要人為設(shè)計(jì)的,點(diǎn)和點(diǎn)之間的邊代表不確定的因果關(guān)系惭适,例如 節(jié)點(diǎn)E直接影響到節(jié)點(diǎn)H笙瑟,即E→H,則用從E指向H的箭頭建立結(jié)點(diǎn)E到結(jié)點(diǎn)H的有向弧(E,H)癞志,權(quán)值(即連接強(qiáng)度)用條件概率P(H|E)來表示往枷。

實(shí)際上,如果事物之間的關(guān)系能夠用一條鏈串起來凄杯,形成了貝葉斯網(wǎng)絡(luò)的一個(gè)特例——馬爾可夫鏈错洁,換個(gè)角度看, 貝葉斯網(wǎng)絡(luò)是馬爾可夫鏈的非線性擴(kuò)展戒突。貝葉斯網(wǎng)絡(luò)中當(dāng)某點(diǎn)的一個(gè)證據(jù)出現(xiàn)后屯碴,整個(gè)網(wǎng)絡(luò)中事件的概率都會(huì)變化。

簡單地膊存,由于多個(gè)變量間存在著可能的依賴性导而,貝葉斯網(wǎng)絡(luò)說明了其中的聯(lián)合條件概率分布,允許在變量的子集間定義條件獨(dú)立性隔崎。使用貝葉斯網(wǎng)絡(luò)的過程與使用貝葉斯方法的過程是類似的:

  1. 通過多個(gè)離散變量建立網(wǎng)絡(luò)今艺,是一個(gè)有向無環(huán)圖
  2. 參數(shù)的設(shè)置或?qū)W習(xí),即對DAG進(jìn)行遍歷爵卒,計(jì)算各節(jié)點(diǎn)的概率表
  3. 網(wǎng)絡(luò)推理虚缎,對因果關(guān)系得到置信概率
  4. 推理結(jié)果

例如, 社交網(wǎng)絡(luò)中不真實(shí)賬戶的檢測問題钓株。首先確定網(wǎng)絡(luò)中的隨機(jī)變量:

  • 賬戶的真實(shí)性 A
  • 頭像的真實(shí)性 H
  • 發(fā)帖即日志的密度 L
  • 好友的密度 F

使用觀測值示例化H实牡,L陌僵,F(xiàn),把隨機(jī)值賦給A铲掐,得到

P(A|H,L,F) = P(H|A)P(L|A)P(F|A,H)

然后就可以在社交網(wǎng)絡(luò)中嘗試使用該推理結(jié)果了拾弃。在《算法雜貨鋪——分類算法之貝葉斯網(wǎng)絡(luò)》一文中對這一例子給出了相對詳細(xì)的說明。

可以說摆霉,貝葉斯方法席卷了整個(gè)概率論,并將應(yīng)用延伸到各個(gè)問題領(lǐng)域奔坟,所有需要作出概率預(yù)測的地方都可以見到貝葉斯方法的影子携栋,特別地,貝葉斯方法對機(jī)器學(xué)習(xí)能夠有什么幫助呢咳秉?

貝葉斯與機(jī)器學(xué)習(xí)

機(jī)器學(xué)習(xí)在業(yè)界炙手可熱婉支,但我們在機(jī)器學(xué)習(xí)里同樣會(huì)遇到預(yù)測、決策澜建、分類向挖、檢測等問題,貝葉斯方法同樣大有用武之地炕舵。

機(jī)器學(xué)習(xí)中有大量的模型何之,如線性模型、非線性模型咽筋,可以采用貝葉斯方法來做模型的預(yù)測溶推。也就是說,某一場景可能采用的模型是無限多的奸攻,可以用概率分布去描述它蒜危。對于假設(shè)的先驗(yàn),對新來的樣本做預(yù)測如計(jì)算它的似然睹耐,然后用前面推出來的后驗(yàn)分布做積分辐赞,這個(gè)給定模型下樣本的似然,就是所有可能模型的分布硝训。

機(jī)器學(xué)習(xí)中模型的選擇和比較也是一個(gè)常見的問題响委。例如,在分類問題時(shí)捎迫,我們使用線性模型還是深度學(xué)習(xí)的非線性模型呢晃酒?貝葉斯方法是這樣考慮的: 用A 表示一個(gè)模型類別,可能是線性模型窄绒,B 表示另一個(gè)模型類別贝次,可能是非線性模型。在同樣的數(shù)據(jù)集X下彰导,計(jì)算在A蛔翅,B 情況下觀察到訓(xùn)練集的似然Ma敲茄,Mb,然后比較Ma和Mb山析,這是貝葉斯方法做模型選擇的一個(gè)基本規(guī)則堰燎。

實(shí)際上, 貝葉斯定理是信息處理的一種準(zhǔn)則笋轨, 輸入是一個(gè)先驗(yàn)分布和一個(gè)似然函數(shù)秆剪,輸出是一個(gè)后驗(yàn)分布。對機(jī)器學(xué)習(xí)中的模型本身爵政,也可以通過貝葉斯方法嘗試改進(jìn)仅讽,例如貝葉斯SVM, 高斯過程的貝葉斯等等。

另外钾挟,貝葉斯方法對深度學(xué)習(xí)而言洁灵,至少在調(diào)參的這一環(huán)節(jié)還是很有用的。在神經(jīng)網(wǎng)絡(luò)中掺出,每一層參數(shù)如卷積核的大小和數(shù)量等徽千,都不會(huì)在深度學(xué)習(xí)中被模型自動(dòng)優(yōu)化的,需要手工指定汤锨,這或許就是貝葉斯優(yōu)化双抽。

其他參考資料:

《貝葉斯方法-概率編程與貝葉斯推斷》

《貝葉斯思維:統(tǒng)計(jì)建模的python學(xué)習(xí)法》

《數(shù)學(xué)之美番外篇:平凡而又神奇的貝葉斯方法》

《Bayesian Method for Machine Learning》:www.cs.toronto.edu/~radford/ftp/bayes-tut.pdf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市泥畅,隨后出現(xiàn)的幾起案子荠诬,更是在濱河造成了極大的恐慌,老刑警劉巖位仁,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柑贞,死亡現(xiàn)場離奇詭異,居然都是意外死亡聂抢,警方通過查閱死者的電腦和手機(jī)钧嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琳疏,“玉大人有决,你說我怎么就攤上這事】张危” “怎么了书幕?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長揽趾。 經(jīng)常有香客問我台汇,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任苟呐,我火速辦了婚禮痒芝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牵素。我一直安慰自己严衬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布笆呆。 她就那樣靜靜地躺著请琳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腰奋。 梳的紋絲不亂的頭發(fā)上单起,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音劣坊,去河邊找鬼。 笑死屈留,一個(gè)胖子當(dāng)著我的面吹牛局冰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灌危,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼康二,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勇蝙?” 一聲冷哼從身側(cè)響起沫勿,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎味混,沒想到半個(gè)月后产雹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翁锡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年蔓挖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馆衔。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瘟判,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出角溃,到底是詐尸還是另有隱情拷获,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布减细,位于F島的核電站匆瓜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陕壹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一质欲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糠馆,春花似錦嘶伟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至毕匀,卻和暖如春铸鹰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背皂岔。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工蹋笼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人躁垛。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓剖毯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親教馆。 傳聞我的和親對象是個(gè)殘疾皇子逊谋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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