自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全棧必備 貝葉斯方法

開發(fā) 開發(fā)工具
我們對(duì)當(dāng)前程序中沒有bug的信心是百分之九十九點(diǎn)幾。這實(shí)際上就是一直貝葉斯思維,或者說使用了貝葉斯方法。不論我們看到,還是沒有看到,貝葉斯方法都在那里,熠熠生輝。

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

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

如何預(yù)測(cè)當(dāng)前軟件有沒有bug呢?還是要從貝葉斯定理看起。

貝葉斯定理的淺解

對(duì)老碼農(nóng)來說,貝葉斯定理的概率表達(dá)相對(duì)清晰,理解起來會(huì)相對(duì)容易?;貞浺幌挛覀儗W(xué)過的概率論,聯(lián)合概率是滿足交換律的,即:

  1. P(A and B) = P (B and A) 

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

  1. P(A and B ) = P(A) P(B|A)  
  2. P(B and A ) = P(B) P(A|B) 

從而得到:

  1. P(A) P(B|A) = P(B) P(A|B) 

簡單的變換一下,得到:

  1. 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í)候,可以用加法定理表示:

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

從而有:

 

其中B_ 是與B相反的事件。就測(cè)試與bug 之間的估算而言,《貝葉斯推斷的思想》(http://www.jianshu.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)象”,那么貝葉斯公式看成:

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

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

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

  1. from spicy.stats import beta 
  2. a1_prior = 1 
  3. b1_prior =1 
  4. visitors_A = 12345 // 網(wǎng)站A的訪問人數(shù) 
  5. visitors_B = 1616  // 網(wǎng)站B的訪問人數(shù) 
  6. conversions_from_A = 1200 // 網(wǎng)站A的轉(zhuǎn)化人數(shù) 
  7. conversions_from_B = 15 0  // 網(wǎng)站B的轉(zhuǎn)化人數(shù) 
  8.  
  9. posterior_A = beta(a1_prior+ conversions_from_A,b1_prior + visitors_A -conversions_from_A) 
  10. posterior_B = Beta(a1_prior+converiosns_from_B,b1_prior + visitors_B-conversions_from_B) 
  11. // 對(duì)后驗(yàn)概率進(jìn)行采樣,用rvs方法生成樣本 
  12. samples = 20000 
  13. samples_posterior_A = posterior_A.rvs(samples) 
  14. samples_posterior_B = posterior_B.rvs(samples) 
  15. // 對(duì)后驗(yàn)概率進(jìn)行比較 
  16. print (samples_posterior_A > samples_posterior_B).mean() 

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

對(duì)先驗(yàn)及后驗(yàn)概率的選擇,針對(duì)應(yīng)用場(chǎng)景而定。就先驗(yàn)分布而言,除了常見的分布外,還有: * Gamma分布,指數(shù)隨機(jī)變量的推廣 * 威沙特分布 ,是所有半正定矩陣的分布,是一個(gè)協(xié)方差矩陣的適當(dāng)?shù)南闰?yàn)。 * Beta分布,隨機(jī)變量定義在0到1之間,使其成為概率和比例的熱門選擇。 * 冪律分布,滿足公司規(guī)模和公司數(shù)量之間的關(guān)系

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

當(dāng)面對(duì)多種對(duì)象之間的因果關(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í),即對(duì)DAG進(jìn)行遍歷,計(jì)算各節(jié)點(diǎn)的概率表
  3. 網(wǎng)絡(luò)推理,對(duì)因果關(guān)系得到置信概率
  4. 推理結(jié)果

例如, 社交網(wǎng)絡(luò)中不真實(shí)賬戶的檢測(cè)問題。首先確定網(wǎng)絡(luò)中的隨機(jī)變量: * 賬戶的真實(shí)性 A * 頭像的真實(shí)性 H * 發(fā)帖即日志的密度 L * 好友的密度 F

使用觀測(cè)值示例化H,L,F(xiàn),把隨機(jī)值賦給A,得到

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

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

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

[[199266]]

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

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

機(jī)器學(xué)習(xí)中有大量的模型,如線性模型、非線性模型,可以采用貝葉斯方法來做模型的預(yù)測(cè)。也就是說,某一場(chǎng)景可能采用的模型是***多的,可以用概率分布去描述它。對(duì)于假設(shè)的先驗(yàn),對(duì)新來的樣本做預(yù)測(cè)如計(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)分布。對(duì)機(jī)器學(xué)習(xí)中的模型本身,也可以通過貝葉斯方法嘗試改進(jìn),例如貝葉斯SVM, 高斯過程的貝葉斯等等。

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

【本文來自51CTO專欄作者“老曹”的原創(chuàng)文章,作者微信公眾號(hào):喔家ArchiSelf,id:wrieless-com】

 

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2024-11-11 15:02:16

2012-09-24 10:13:35

貝葉斯

2022-09-28 08:00:00

Python機(jī)器學(xué)習(xí)算法

2023-09-12 11:36:15

攜程模型

2017-03-29 14:50:18

2017-06-13 08:55:29

Log日志MySQL

2017-04-06 10:27:01

JavaScript基礎(chǔ)Java

2020-07-20 08:23:04

Redis分布式系統(tǒng)

2017-06-13 15:10:02

大數(shù)據(jù)Log日志

2022-10-30 14:54:58

測(cè)試數(shù)據(jù)貝葉斯推理

2017-06-12 06:31:55

深度學(xué)習(xí)貝葉斯算法

2023-10-18 08:00:00

貝葉斯網(wǎng)絡(luò)Python醫(yī)療保健

2017-07-24 10:36:37

Python機(jī)器學(xué)習(xí)樸素貝葉斯

2023-01-31 15:49:51

機(jī)器學(xué)習(xí)函數(shù)評(píng)分函數(shù)

2013-05-08 09:05:48

狐貍貝葉斯大數(shù)據(jù)

2021-08-30 11:53:36

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2017-03-21 09:17:37

2017-10-12 14:24:24

2021-06-01 07:16:21

C語言基礎(chǔ)代碼

2016-08-30 00:19:30

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)