僅靠一道簡單的數學題,他就變成了Stack Overflow的數據科學家

原創  數學高手 AI科技大本營



古語有云,「學好數理化,走遍天下都不怕。」

人工智能時代尤爲如此。

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

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

在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%。甚至打五、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次不中的記錄。

所以,在咱們事先不知道機率是什麼但又有一些合理的猜想時,貝塔分佈可以很好地表示爲一個機率的分佈。

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

福利面試

若是你對這位從生物信息學博士變身Stack Overflow數據科學家的David Robinson感興趣,可在AI科技大本營(rgznai100)微信公衆號後臺回覆「數據」,便可得到David Robinson的R語言文本挖掘《Text Mining with R》免費電子書。微信

怎麼樣?讀到這裏,對於火車到達時間、彩票中獎機會、拋硬幣和棒球擊球率所對應的機率分佈,你應該都能回想起來了,除非你在《機率論與數理統計》課上所學的東西真的還給老師了。機器學習

不過,就算還給機率論老師也不要緊,你老是能夠從新啃書本把它拾起來,或是從新上一門能讓你真正學會機率、統計的課程,好比CSDN學院最近推出的中科院冒老師這門《機器學習之機率與統計推斷》:它不光能讓你真正學會機率、統計,還能弄懂這些概念在機器學習中的具體應用場景。學習

僅需8小時,你就能拾回早已還給老師的機率論和數理統計,拿到理解機器學習的入門鑰匙。ui

課程地址:http://edu.csdn.net/huiyiCourse/series_detail/46?ref=9人工智能

相關文章
相關標籤/搜索