數學與程式設計:“概率論”總結

Vamei發表於2013-12-15

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段宣告。謝謝!

 

終於寫完概率論部分的內容。寫一個總結,同時算是導讀。這兩天花了些時間,對原文進行修訂。自己預期的目標,是將概率論的理論和程式設計結合起來。這裡選擇的程式設計工具是Python和一些第三方的包。我看過一些概率的書籍。有一些在數學上處理得好,但太偏重於純粹數學;概率和程式設計結合的書,又過“實用”,沒有把概率論的數學本質講清楚。理論是最好的實用。為什麼不能把簡潔優美的數學理論和同樣美妙的程式設計合在一起呢?有了這個疑問,也就有了這一系列文章的探索。

 

總的來說,概率論的體系是比較簡單的。我覺得可以歸納為下面幾個點:1. 公理體系,2. 典型分佈,3. 描述量,4. 普適定律。在概率論的系列文章,或者是任何概率論的教材中,都會涉及這四個方面。

概率論的難點可能在於它的公理體系。它的敘述非常簡單,但不容易把握。要知道,在概率論初期發展的一兩百年裡,公理體系並不存在。當時的概率論研究很碎片化。公理化體系是建立在現代數學的基礎上,特別依賴於集合論和測度論的發展。因此它等到20世紀才建立起來。一些基本的概率論術語,如樣本、實驗、事件、隨機變數,放在集合論的大環境裡,就比較容易理解。公理化體系的難點在於概率測度的概念,也就是通俗說的“概率”。測度論本身為了探索“長度”、“面積”和“體積”這樣一些代表集合“大小”而產生的數學學科。概率論是在事件集合上,增加一個稱為“概率”的測度,對應起來。概率測度代表事件這樣一個集合的“大小”。集合越大,越可能出現。我們隨後引入的一些概念和工具,比如條件概率和連續分佈,都是建立在概率測度的基礎上的。所以,儘管測度論一般被認為是一門抽象學科,但一定程度的測度論知識非常有助於概率論的學習。

概率論的典型分佈大多來源於古典研究,也就是出現在公理體系之前。這些典型分佈大多基於一些具體的現實過程,比如連續打靶10次,中靶次數的分佈。它們對應現實過程的一些經典事件的分佈,因此非常實用。我們在研究許多概率論問題時,並不需要從最基本的公理從頭開始,而更多的是根據問題的特性,來直接引用具體分佈的結論。因此,這些經典分佈就像一本“電磁學千題解”,我們需要掌握的,是問題所在的具體頁碼。這些經典分佈最早都是為了解決概率論中的難題產生的。最經典和早期的一些數學分佈來自於賭博這一現實活動。比如最早的概率論研究就來自於帕斯卡和費馬的一系列通訊,而這些通訊都是為了解決帕斯卡的賭徒朋友所碰到的問題。數學的許多理論體系都來自於解題過程中產生的思想,比如高次多項式解這一數學難題,就孕育了抽象代數中的許多重要概念。如果沒有了數學難題,比如千禧年七大問題,數學就喪失了它賴以生存的動能。

描述量有很強的實用意義。通過參照典型分佈,我們已經可以大大簡化工作量。但作為需要作出決定的普通人,我們往往只需要最重要的一些結果來參考。期望和方差就可以提供很重要、又很容易把握的分佈資訊。之前有一個報導,是美國一對老夫婦發現,某個彩票的設計上有問題。在一些特定的購買時期,買家的期望值是正值。他們於是根據期望來買彩票,結果不聲不響的賺了幾百萬美元,還開公司教別人買彩票。下次打三國殺的時候,可以嘗試考慮一下判定牌的期望。再比如說,作為股票買家,很容易分辨股價比較“震盪”和股價比較“平靜”的時期,這就是方差的概念。在理論上,我們可以繼續求其它的描述量,它們也有各自的具體意義,比如斜度。但無疑,期望和方差是生活中最常遇到,也最常處理的一些描述量。在矩概念上建立起的矩生成函式,是一種很常用的概率論理論研究工具。

最後,是一些普適定律,比如Chebyshev不等式中心極限定律。這些定律不依賴於具體分佈的型別,對所有分佈都成立。這些定律就好象拿木棍做兵器,雖然糙了些,但勝在可以就地取材。但如果真的沒有進一步資訊,有一根木棍總勝過赤手空拳。這些定律可以參考它們的具體敘述。

 

概率論是許多學科的基礎,比如我們後面要進入的統計。統計是對一大票人口的資料的研究。統計的“概率性”來自於,許多時候,由於收集資訊的困難,我們無法獲得所有人口的具體資訊,我們需要通過取樣來推斷整個人口的資訊。這樣一種管中窺豹的研究方法,就具有很強的概率性。比如我們想了解程式設計師的比例,可以通過對500人取樣來進行估計。儘管總人口中的程式設計師是確定的,但這500人的取樣中,有多少個程式設計師,是一個概率事件。

概率論同樣是隨機過程的基礎。隨機過程的學習特別有助於理解一些具體分佈的生成過程。此外,隨機過程在電腦科學中也很重要,比如scheduler的執行緒,可以看作是隨機的排隊過程。我們可以通過對隨機過程的瞭解,來優化scheduler。

 

程式設計師並不需要特別高深的數學,但數學可以是程式設計師武器庫中一樣有力的武器。在我覺得,拋開需要一定直覺和運氣的數學研究,數學本身完全可以看作一個固定的、有確定規則的思維“程式設計”工具,它和程式設計師平常鑽研的“作業系統”、“程式語言”,有很大的類似性:基於一定的規則,並沿著這樣的規則,可以有一個確定的結果。計算機的一些領域是和數學緊密相關的,比如演算法、函數語言程式設計、計算機圖形、資料探勘、機器學習。許多程式設計書籍中“附贈”的數學節選,往往太過碎片化。看起來提供了所需要的數學,但將整個數學體系拋到腦後,只取結論。因為這個跳躍,讓本身不是特別複雜的數學顯得異常高深。其實,程式設計師這個異常好學的群體,為自己增加一個新的技能——數學,也是為自己開啟許多計算機領域的門。

 

希望讀過這一系列文章,可以“新技能get”。OK,下一步,統計。

 

歡迎繼續閱讀“資料科學”系列文章

相關文章