貝塔分布例子(轉)


 

古語有雲,“學好數理化,走遍天下都不怕。”

 

人工智能時代尤其如此。

 

比如,寫上幾句基礎的數學概念,天上就能掉下一個工作來……這是真事。

 

學概率的時候,我們會反復來理解什么是正態分布,什么是均勻分布,什么是二項分布,什么是貝塔分布……不知在座的各位是否還能記起當時做過的習題?是否還能通俗地講解一下這些概念?

 

在Stack Overflow,有位學機器學習的同學理解不了貝塔分布,希望有人能幫他解答下。剛好,正在學生物信息學博士的David Robinson現身說法,用一個有關棒球運動的統計數據來解釋這個概念。這位博士純粹是為了消磨時間,覺得好玩。

 

不過,Stack Overflow數據科學團隊的Jason Punyon讀完David Robinson的解答后,覺得解釋很贊,他在內部會議上突發奇想:

 

 

哇!咱們干脆雇了這哥們兒吧。”

 

於是,一份公開的邀請不期而至:我們十分期待你能拜訪一下Stack Overflow。

 

 

在好奇心的驅使下,原本打算博士畢業后研究計算生物學的David Robinson,鬼使神差地拜訪了這家科技公司。一次拜訪、幾周面試,Stack Overflow提供給他一個無法拒絕的工作機會,David Robinson從計算生物學博士變成了一個數據科學家。

 

你一定特別好奇,這到底是個怎樣的問題,直接就讓這位博士拿到了數據科學家的offer?David Robinson的解釋到底又有多精彩?現在我們讓來看看這個問題。

 

 

 

 

首先聲明,我並不是統計學家,只是一名軟件工程師。我所掌握的大部分統計學知識都來自於自學,因此對於一些別人覺得很簡單的概念,我可能會覺得很難理解。因此我希望答案能盡量通俗易懂,少一些專業名詞而多一些形象解釋。

 

我之前試圖想弄清楚貝塔分布(beta distribution)的本質——它能用於做什么以及如何解釋它的應用場景?

 

例如,當我們談正態分布時,可以將它描述成火車的到達時間:大多數情況下火車正點到站,有時候會早1分鍾或者遲1分鍾,但是早20分鍾或者遲20分鍾的情況則非常罕見;均勻分布可以描述為彩票中獎的機會事件;二項分布可以描述成拋硬幣事件等等。那么,貝塔分布有這樣的直觀解釋嗎?

 

例如 α=.99,β=.5,貝塔分布B(α,β)如下圖所示(使用R生成):

 

 

 

那么這個圖代表什么意思?Y軸是一個概率密度,那么X軸呢?

 

答案可以基於這個例子來解釋,或者任何其他的也行。我將感激不盡。

 

David Robinson 解釋如下:

 

簡而言之,貝塔分布可以看作是一個概率的分布,也就是說,當我們不知道一個東西的具體概率是多少時,它給出了所有概率出現的可能性大小。下面結合一個應用場景來理解:

 

熟悉棒球運動的都知道一個指標就是棒球擊球率(batting average-http://en.wikipedia.org/wiki/Batting_average%22),就是用一個運動員擊中的球數除以總的擊球數(因此它是一個0到1之間的百分比)。我們一般認為0.266是一個平均的擊球水平,而如果擊球率達到0.3就會被認為非常優秀了。

 

假設有一個棒球運動員,現在我們想預測他整個賽季的棒球擊球率如何。你可能就會直接計算他目前的棒球擊球率,用擊中數除以擊球數,但這在賽季開始階段時是很不合理的!假如這個運動員就打了一次,還中了,那么他的擊球率就是100%,如果他沒中,那么就是0%。甚至打5、6次的時候,也可能運氣爆棚全中擊球率100%,或者運氣很糟擊球率0%。無論如何,基於這些來做預測是不合理的。

 

那么,為什么用前幾次擊中來預測整個賽季擊球率不合理呢?當運動員首次擊球沒中時,為什么沒人認為他整個賽季都會一次不中?因為我們有先驗期望。根據歷史信息,我們知道擊球率一般會在0.215到0.36之間。如果一個運動員一開始打了幾次沒中,那么我們知道他可能最終成績會比平均稍微差一點,但是一般不可能會偏離上述區間。

 

對於這個擊球率問題,我們可以用二項分布(https://en.wikipedia.org/wiki/Binomial_distribution)表示(一系列的成功或失敗事件),一個最好的方法來表示這些先驗期望(統計中稱為先驗(prior))就是貝塔分布,這表示在運動員打球之前,我們就對他的擊球率有了一個大概范圍的預測。貝塔分布的定義域為(0, 1),與概率是一樣的。我們下面繼續解釋為什么貝塔分布用在這個任務上是合理的。

 

假設我們預計運動員整個賽季的擊球率大概是0.27左右,范圍大概是在0.21到0.35之間。那么用貝塔分布來表示,我們可以取參數 α==81,β==219。

 

curve(dbeta(x, 81, 219))

 

 

之所以取這兩個參數,原因如下:

 

  • 貝塔分布的均值 

     

 

 

  • 從上圖中可以看出,這個分布主要落在(0.2, 0.35)之間,這是從經驗得到的合理范圍。

 

你問在貝塔分布的密度圖上x軸代表什么,在這里,x軸代表運動員的擊球率。注意到在這個例子里,不僅y軸是代表概率(確切說是概率密度),x軸也是(擊球率是擊中次數的概率分布)。因此貝塔分布可以看作一個概率的分布。

 

接下來解釋為什么貝塔分布適合這個例子。假設運動員一次擊中,那么現在他本賽季的記錄是“1次打中;1次打擊”。那么我們更新我們的概率分布,讓概率曲線做一些移動來反應我們的新信息。這里涉及一些數學上的證明(點此查看-https://en.wikipedia.org/wiki/Conjugate_prior#Example),但是結論非常簡單。新的貝塔分布為:

 

 

其中 α0和β0是初始參數,在這里是81和219。所以,在這個例子里,增加了1(擊中了一次),沒有增加(沒有失誤)。因此新的貝塔分布為Beta(81+1,219),如下圖:

 

 

curve(dbeta(x, 82, 219))

 

 

 

可以看到這個分布與原來相比並沒有什么肉眼可見的變化,這是因為僅一次擊中球並不能太說明什么問題。

 

然而,隨着整個賽季運動員逐漸進行比賽,這個曲線也會逐漸移動以匹配最新的數據。由於我們擁有了更多的數據,因此曲線(擊球率范圍)會逐漸變窄。假設賽季過半時,運動員一共打了300次,其中擊中100次。那么新的貝塔分布是Beta(81+100,219+200),如下圖:

 

 

curve(dbeta(x, 81+100, 219+200))

 

 

可以看出,曲線現在更尖而且往右移動了(擊球率更高),由此我們對於運動員的擊球率有了更好的了解。

 

根據新的貝塔分布,我們得到的期望值通常也是我們的新的估計。貝塔分布的期望值計算公式是。因此新的貝塔分布的期望值為,注意到這個值比直接預估要低,但是比賽季開始時的預計要高

 

你可能已經注意到了,這個公式就相當於給運動員的擊中次數添加了“初始值”,相當於在賽季開始前,運動員已經有81次擊中219次不中的記錄。

 

因此,在我們事先不知道概率是什么但又有一些合理的猜測時,貝塔分布能夠很好地表示為一個概率的分布。

 

就這樣,靠着一道數學題,就拿到了數據科學家的職位。做機器學習,你的數學准備好嗎?

 

 

 

 

轉自:https://mp.weixin.qq.com/s/ZEoxYPgenFgzHuNnI2IieQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM