作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!
概率論早期用於研究賭博中的概率事件。賭徒對於結果的判斷基於直覺,但高明的賭徒嘗試從理性的角度來理解。然而,賭博中的一些結果似乎有矛盾。比如擲一個骰子,每個數字出現的概率相等,都是1/6。然而,如果有兩個骰子,那么出現的2到12這些數字的概率卻不相同。概率論這門學科正是為了搞清楚這些矛盾背后的原理。
早期的概率論是一門混合了經驗的數學學科,並沒有嚴格的用語。因此,概率論在數學的精密架構下,顯得有些異類。許多名詞,如“概率”等,一定程度上是按照人們的直覺來定義的。1933年,俄國數學家Andrei N. Kolmogorov建立了概率論的公理化體系,嚴格定義了概率論的語言。正如現代數學的其他學科一樣,概率論的公理化體系同樣基於集合論。公理化的概率論體系基於幾條簡單易懂的公理,衍生出整個概率論的體系。學習這個公理化的體系,可以消除直覺中的許多混淆。這一公理體系的核心是“概率測度”。
實驗與樣本空間
任何一個過程,如果它的結果是隨機的(無法事前知道),那么該過程就稱為一個實驗。實驗所有可能的結果組成一個集合(set),叫做樣本空間(sample space),用[$\Omega$]表示。我們看下面實驗的樣本空間:
實驗1. 連續擲一個硬幣兩次:
$$\Omega = \{ HH, HT, TH, TT \}$$
H表示正面,T表示反面。上面括號里包含了所有可能的結果:正正,正反,反正,反反。
實驗2. 打印機的隊列最多允許10個工作。某時刻的工作數目:
$$\Omega = \{ 0, 1, 3, ..., 9, 10 \}$$

實驗3. 開車經過兩個路口,遇到的紅綠燈情況:
$$\Omega = \{ rr, rg, ry, gg, gr, gy, yy, yr, yg \}$$
r表示紅燈,g表示綠燈,y表示黃燈。
(利用計數原理,我們可以知道所有可能結果的總數為9)

對於概率論來說,集合是“如來佛的手掌心”。事實上,整個現代數學體系都是建立在集合論的基礎上。集合本身沒有什么神秘的,就是一些元素的集合。數學的關鍵是不同集合的特性、集合內部的結構和集合之間的關系。看似平常的集合給數學帶來許多意想不到的結果。
事件
樣本空間包含了概率論研究的基本元素,也就是實驗的結果。它們好象化學里的原子。在擲撒子的游戲中,1,2,3,4,5,6,這些結果就構成了我們的原子。然而,就像賭徒只對“大”和“小”感興趣一樣,在許多時候,我們會對分子那樣的原子集合更感興趣。在概率論里,這樣的“分子”就是樣本空間的子集。樣本空間的一個子集,被稱為一個事件(event)。比如說,在實驗1中,第一次投擲為正面的所有結果構成子集,即一個事件。該事件包含有兩個元素:
$$A = \{ (H,H), (H,T) \}$$
再比如,第二次投擲為正面也構成一個事件,即
$$B = \{ (H,H), (T,H) \}$$
我們可以將事件理解為一些特定結果的合集。通過事件,我們可以將結果“聚合”,從而在高一層的單位上進行概率研究。
既然事件是樣本空間的一個子集,那么事件可以有補集。事件A的補集包含所有不屬於A的樣本空間元素。
$$A^c = \{ TH, TT \}$$
該補集代表的事件為: 第一次投擲是反面。

補集
兩個集合可以有交集和並集運算。我們以集合A和集合B為例。
$$C = A \cap B$$
交集C中包含了所有既在A中又在B中的元素。事件C表示第一次為正面且第二次為正面。[$C = \{ (H,H) \}$]

交集: 交叉陰影區域
$$D = A \cup B$$
並集D中包含了所有在A中或者在B中的元素。事件D表示第一次為正面或者第二次為正面,[$D = \{ (H,H), (T,H), (H,T) \}$]

並集: 交叉陰影區域
空集[$\Phi$]是一個不包含任何元素的集合。如果兩個集合的交集為空集,即[$M \cap N = \Phi $],那么這兩個集合不相交。在概率論中,不相交的兩個事件互斥。
和加法一樣,集合的交並集運算同樣有運算法則。這些法則可以如上面那樣,畫出集合圖形,來輔助理解。
交換律
$$A \cup B = B \cup A$$
$$A \cap B = B \cap A$$
結合律
$$ (A \cup B) \cup C = A \cup (B \cup C)$$
$$ (A \cap B) \cap C = A \cap (B \cap C)$$
分配律
$$(A \cup B) \cap C = (A \cap C) \cup (B \cap C)$$
$$(A \cap B) \cup C = (A \cup C) \cap (B \cup C)$$
概率測度
我們上面定義了一些基本用語,即“實驗”,“樣本空間”,“事件”。我們下面要給“分子”上色:引入概率的概念。我們用函數來給每個事件分配一個概率,即分子和顏色的對應關系。
概率測度是基於樣本空間[$\Omega$]的一個函數P。這個函數P定義了從樣本空間的子集(即事件)到實數的映射,且滿足下面的條件:
1. [$P(\Omega) = 1$]
2. 如果[$A \subset \Omega$], 那么[$P(A) \ge 0$]
3. 如果[$A_1$]和[$A_2$]不相交,那么
$$P(A_1 \cup A_2) = P(A_1) + P(A_2)$$
“概率測度”是一個有些抽象的概念。“測度”這個詞是在提示我們概率定義的基礎是“測度論”。粗糙的說,“測度論”用於研究一個集合的“大小”或者說“面積”。更嚴格的說,就像概率一樣,“測度”是集合的子集到實數的一個映射。比如一個正方形的面積為6,實際上是說,一個點的集合(正方形)的某個“測度”為6,即點的集合和實數6對應。“面積”的一個關鍵特點是可加。比如我們買地的時候,如果兩塊地不重疊,那么它們的面積總和是兩個各自面積的和。概率測度有相同的特點,就是上面的第3點。第1,2兩點是概率的基本特征,即所有情況的概率總和為1,而概率值不為負。基於這樣一種直觀但不嚴格的類比,我們可以把概率(也就是“概率測度”)想象成“集合的面積”。而“樣本空間的總面積為1”。

以上是概率論的公理體系。利用上面的定義以及集合論工具,我們會進一步建立起概率論的體系。但要注意的是,上面公理化的定義,盡管嚴謹,但並沒有說明“概率是什么”,而只是說“概率那個人啊,它應該長的方臉,長鼻子,小眼鏡”。這有些像編程中的"duck typing",也就是根據對象的動作或者特點,來定義對象。即使是今天,概率的本質也存在爭議。主流的觀點分為兩派,即頻率觀點和貝葉斯觀點。在頻率觀點中,如果我們以相同的條件重復嘗試N次,那么如果某個事件出現了n次,那么該事件的概率為[$P(A) = n/N$]。在貝葉斯觀點中,概率代表了主觀上對某一論斷的信心。盡管對概率的理解不同,這兩個流派都開衍生出了非常有用的工具。
另一方面,定義也沒有告訴我們如何確定函數P,即如何計算概率測度。很多時候,函數P的確定依然基於一些假設和一定程度的直覺。比如在等概率條件下,我們利用計數方法,來獲得概率。比如一枚硬幣出現正反兩面的概率相同,結果總數為2,那么[$P(H) = 1/2$]。這也正是我們第一講中講解計數的目的所在。然而在其他情況下,比如不均勻硬幣,我們不能簡單的用1除以結果總數。我們可以利用頻率觀點,大量重復實驗,來獲得P函數。
Python中的集合
集合這一數據結構在多種語言中都有。比如Python中的集合:
A = set([1, 2, 3, 4]) B = set([3, 4, 5, 6]) print(A & B) # intersection
print(A | B) # union
print(A - B) # difference, element in A, and not in B
print(A ^ B) # symmetric difference, (A | B) - (A & B)
上面實現了集合的運算。
再比如,我們可以用in來判斷元素是否屬於集合,以及用>, >=, <, <=來判斷兩個集合的歸屬關系,比如一個集合是另一個集合的子集。
A = set([1, 2]) B = set([1, 2, 3]) print(1 in A) # element
print(A < B) # subset
set是一個數據容器,len(), max(), min()函數同樣可用於set,分別返回集合中元素總數,集合最大值,集合最小值。此外,set還有一些方法,比如下面的增加和刪除元素,注意set中不會有重復的元素:
A = set([1, 2]) A.add(5) # add an element
print(A) A.remove(2) # remove an element
print(A) A.add(1) print(A) # a set has no repeated elements
上面的set中元素都為整數,還可以是其他的任意對象。
練習: 利用Python,驗證集合的運算律。
總結
樣本空間,事件
互斥事件
概率測度
歡迎繼續閱讀“數據科學”系列文章
