偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

全棧必備 貝葉斯方法

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

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

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

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

貝葉斯定理的淺解

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

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

對聯(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) 為先驗概率,即在得到新數(shù)據(jù)前某一假設(shè)的概率;

P(B|A) 為后驗概率,即在觀察到新數(shù)據(jù)后計算該假設(shè)的概率;

P(A|B)為似然度,即在該假設(shè)下得到這一數(shù)據(jù)的概率;

P(A)為標(biāo)準(zhǔn)化常量,即在任何假設(shè)下得到這一數(shù)據(jù)的概率。

還可以加點料,在計算P(A)的時候,可以用加法定理表示:

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

從而有:

 

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

貝葉斯方法

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

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

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

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

對A,B兩個網(wǎng)站的轉(zhuǎn)化概率進行建模。轉(zhuǎn)化率在0~1之間,可采用Beta分布。如果先驗是Beta(a1,b1),且 觀測到N次訪問里有X次轉(zhuǎn)化,那么此時的后驗分布是Beta(a1+X,b1+N-X). 假設(shè)先驗是Beta(1,1),等價于【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. // 對后驗概率進行采樣,用rvs方法生成樣本 
  12. samples = 20000 
  13. samples_posterior_A = posterior_A.rvs(samples) 
  14. samples_posterior_B = posterior_B.rvs(samples) 
  15. // 對后驗概率進行比較 
  16. print (samples_posterior_A > samples_posterior_B).mean() 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[199266]]

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

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

機器學(xué)習(xí)中有大量的模型,如線性模型、非線性模型,可以采用貝葉斯方法來做模型的預(yù)測。也就是說,某一場景可能采用的模型是***多的,可以用概率分布去描述它。對于假設(shè)的先驗,對新來的樣本做預(yù)測如計算它的似然,然后用前面推出來的后驗分布做積分,這個給定模型下樣本的似然,就是所有可能模型的分布。

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

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

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

【本文來自51CTO專欄作者“老曹”的原創(chuàng)文章,作者微信公眾號:喔家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機器學(xué)習(xí)算法

2023-09-12 11:36:15

攜程模型

2017-03-29 14:50:18

2017-04-06 10:27:01

JavaScript基礎(chǔ)Java

2017-06-13 15:10:02

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

2020-07-20 08:23:04

Redis分布式系統(tǒng)

2017-06-13 08:55:29

Log日志MySQL

2017-06-12 06:31:55

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

2022-10-30 14:54:58

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

2017-07-24 10:36:37

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

2013-05-08 09:05:48

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

2023-01-31 15:49:51

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

2021-08-30 11:53:36

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

2023-10-18 08:00:00

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

2017-03-21 09:17:37

2021-06-01 07:16:21

C語言基礎(chǔ)代碼

2017-10-12 14:24:24

2016-08-30 00:14:09

大數(shù)據(jù)貝葉斯
點贊
收藏

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