機器學習數學基礎:隨機事件與隨機變量

↑↑↑關注後"星標"Datawhale

每日干貨 & 每月組隊學習,不錯過

 Datawhale乾貨 

作者:吳忠強,Datawhale優秀學習者

所謂機器學習和深度學習, 背後的邏輯都是數學, 所以數學基礎在這個領域非常關鍵, 而統計學又是重中之重, 機器學習從某種意義上來說就是一種統計學習。

這次藉着在Datawhale組織的概率統計專題學習的機會再重新溫習一遍數學基礎,非常感謝組織的這次學習機會。這一版塊是整理概率統計的相關內容, 具體知識點參考了Datawhale的開源教程概率統計, 這次又是站在了大佬的肩膀上前行, 同時對其中的重點知識進行整理和補充, 然後進行了必要的代碼實現。

今天是概率統計基礎的第一篇文章, 我們先從隨機變量和隨機事件開始,之前學習概率統計, 有些變量就迷迷糊糊的, 這次再溫習一遍基礎概念。首先會從概率統計的基本概念入手, 然後學習概率相關的知識, 接下來是古典概型, 然後就是條件概率和偉大的貝葉斯公式, 最後再來整理隨機變量的相關知識。

大綱如下:

  • 隨機事件(基本概念, 頻率與概率, 古典概型, 條件概率, 全概率和貝葉斯)

  • 隨機變量(離散型及分佈, 連續型及分佈, 多維隨機變量及分佈, 數字特徵)

隨機事件

隨機事件是概率論中最重要的基礎概念之一, 但是我們真的理解隨機事件嗎? 哈哈, 不一定, 不信?你可以先嚐試解釋一下什麼是隨機事件,如果你告訴我說:所謂隨機事件, 就是隨機的那些事件, 那麼恭喜你, 得到了繼續往下看的機會。

1. 基本概念

要想解釋隨機事件, 我們得先從隨機現象的概念開始, 現實生活中,一個動作或一件事情,在一定條件下,所得的結果不能預先完全確定,而只能確定是多種可能結果中的一種,稱這種現象爲隨機現象。比如明天的天氣, 或者是拋硬幣的結果等, 這種現象在生活中非常常見, 就不做過多解釋了。

既然我們生活中很多現象都是不確定的或者隨機的, 那麼有沒有一些方法去研究和觀察這些隨機現象呢?如果能從這樣的隨機現象中找到一些規律, 那麼我們是不是可以更好的認識這個世界或者更好的生活呢? 

既然像拋硬幣這種事情來說不確定, 那麼我們就可以進行一些實驗嘛, 多做一些, 說不定就能發現一些規律了呢?  所以我們可以通過隨機試驗使得隨機現象得以實現和觀察。 所以這就引出了隨機試驗的概念, 那麼隨機試驗有沒有條件呢? 雖然隨機試驗是研究隨機現象的, 但是肯定不是所有的隨機試驗都那麼好研究, 比如明天的天氣, 所以隨機試驗應該滿足三個條件:

  • 可以在相同條件下重複進行(可重複)

  • 結果雖然不確定, 有多種可能, 但是這些可能的結果已知, 就是跑不出這個範圍

  • 作一次試驗不確定是這個範圍裏面的哪個結果

就拿拋硬幣這個來說, 首先拋硬幣我們可以重複進行多次, 並且每次進行我們都知道要麼是正, 要麼是反,所以可能的結果已知, 但是我們拋擲一次是正是反就不確定, 所以這個試驗是滿足上面的條件的, 所以拋硬幣結果的隨機現象我們就可以通過隨機試驗進行觀察。

有了隨機現象和隨機試驗的概念, 我們就可以再引出三個概念, 那就是樣本空間, 樣本點和隨機事件了。

  • 樣本空間:隨機試驗中所有可能結果組成的集合, 比如拋硬幣裏面的{正, 反}這兩種結果就是樣本空間,記爲

  • 樣本點:試驗的每一個可能的結果, 比如正或者反,記爲

  • 隨機事件:樣本空間中滿足一定條件的子集, 用大寫字母表示, 隨機事件在隨機試驗中可能出現也可能不出現, 這個子集到底怎麼理解?比如拋硬幣, 樣本空間是{正,反}, 而其子集就是{正}, {反}, 所以拋一枚硬幣得到的結果是正或者反都可以作爲隨機事件, 當然這個例子隨機事件可能會和樣本點進行混淆, 那就投擲一枚骰子的結果, 我們知道樣本空間是{1, 2, 3, 4, 5, 6}, 那麼隨機事件可以是這裏面的子集, 比如出現的數字是偶數的結果{2, 4, 6}。當其中一個樣本點出現的時候,我們就說這個隨機事件發生了。

最後還有兩個概念是必然事件, 這個就是一定發生的事件, 就是包含試驗裏面的所有樣本點, 比如樣本空間, 在每次試驗中它總是發生。當然有必然就有不可能, 不可能事件是不含任何樣本點, 在每次試驗中都不會發生, 比如投擲骰子的時候, 空集定義成結果數字大於6, 這個就不會發生了。

2. 頻率與概率

上面我們已經知道了概率論裏面的一些基礎概念, 但是我們上面說學概率統計是爲了研究隨機現象的某些規律的,那麼就需要在基礎概念的基礎上再往前一步, 去研究一些規律了, 我們知道了對於一個事件, 在一次隨機的試驗中可能發生, 可能不發生, 但如果我們知道某些事件在一次試驗中發生的可能性大小,是不是對我們會更有幫助, 所以我們希望找到一個合適的數來表徵事件在一次試驗中發生的可能性大小, 這個數就稱爲概率。

但是在研究概率之前, 我們先介紹一個概念叫頻率, 所謂頻率, 就是在相同的條件下, 進行了次試驗, 在次試驗中, 事件A發生的次數(頻數)與次數的比就是事件A的頻率, 記做。這個很好理解吧, 比如我們拋10次硬幣, 事件A是正面朝上, 如果10次裏面有6次正面朝上, 那麼就說A的頻率是0.6。

事件A的頻率大,就說明事件A發生就越頻繁, 這意味着事件A在一次試驗裏面發生的可能性就越大, 那你說, 直接將頻率表示時間A在一次試驗中發生的可能性大小不就完事?emmm,有道理,  大量試驗證實, 當重複試驗的次數逐漸增大, 頻率會逐漸穩定性到某個常數, 比如拋硬幣, 如果你做很多次試驗, 你會發現正面向上的頻率會穩定在0.5(不信?實踐是檢驗真理的唯一標準, 哈哈), 那麼頻率來表徵事件發生的可能性大小是合適的。

But, 在實際中, 很多情況,我們是不可能爲了得到某個事件發生的可能性大小而去做大量的實驗, 然後求得頻率, 再說某個事件發生的可能性, 沒那個耐心和時間, 像上面那個硬幣的實驗, 那些實驗者可是拋了20000多次, 所以有時候不得不敬佩人家的鑽研精神, 大佬之所以是大佬, 人家背後可是下足了功夫的。

那我們應該怎麼表示事件發生的可能性大小呢?我們從頻率穩定性中得到了啓發, 得到了表徵事件發生可能性大小的概率的定義。

隨機試驗的樣本空間, 對於每個事件, 定義一個實數與之對應, 若函數滿足條件:

爲事件的概率。關於概率的性質, 這裏就不再寫了,直接把文檔裏面的圖截過來了:

根據大數定律, 當時頻率在一定意義下接近概率。基於這一事實, 我們就可以將概率用來表徵事件在一次試驗中發生的可能性大小。

2.3 古典概型

將擲骰子游戲進行推廣,設隨機事件 的樣本空間中只有有限個樣本點,即 ,其中, 爲樣本點的總數。每個樣本點出現是等可能的,並且每次試驗有且僅有一個樣本點發生,則稱這類現象爲古典概型。若事件包含個個樣本點,則事件的概率定義爲:

事件包含的基本事件數基本事件總數

古典概型比較簡單, 主要是下面的例子有意思, 這裏再解釋一下

假設有 k 個不同顏色的球,每個球以同樣的概率 落到 個格子 () 的每個中,且每個格子可容納任意多個球。分別求出如下兩個事件 A 和 B 的概率。

  • A :指定的 k 個格子中各有一個球;

  • B :存在 k 個格子,其中各有一個球。

這裏再解釋一下這個題目, 我們的目標是求, 那麼我們根據上面的公式, 我們得需要事件包含的基本事件數(m)和基本事件的總數(n)。那麼我們就先從基本事件總數n開始:

個不同顏色的球放到個格子裏的所有可能的結果就是, 那麼可能的結果有多少呢?我們先從1個球開始, 如果把這1個球放入個格子的棋盤中, 那麼會有種可能, 因爲這個球有可能落在任何一個格子裏面。好, 那麼第二個球也會有中可能, 依次類推, 這k個球, 每個球都會有中可能落入這個格子, 並且這k個球互不影響,這樣如果把所有球都安頓下來, 那麼所有可能會是, 這樣說應該好理解些吧。因爲第1個球有中情況, 對於第一個球的每一種情況第二個球又有種情況, 對於第一個球,第二個球的每一種情況, 第三個球又有種情況, 這樣類推到第k個球。

總的可能結果確定之後, 那麼再想包含的基本結果, 指定的個格子中各有一個球, 也就是如果某個球落到了第一個格子裏面, 這時候k種可能, 那麼第二個格子種會有剩下的k-1個球的某一個會落入,就是k-1種可能, 依次類推,其實就是一種全排列, 即, 那麼

再考慮事件B:存在個格子, 其中各有一個球, 與A的區別就是不是我們指定好的個, 是存在個, 但是不確定是哪個, 如果確定了是哪, 就又回到了事件A, 所以B相當於A的基礎上又進了一步, 那麼好說, 只要我們能夠確定出從個格子裏面確定的會有多少種情況, 然後每個情況都會對應A的那些可能, 兩者乘起來就是B含有的結果數, 所以B含有的結果數就是, 那麼

好了, 希望上面這樣解釋會清楚一些, 有了這個例子, 就可以考慮概率論史上的著名問題---生日問題了:求個同班同學沒有兩人生日相同的概率。 這個文檔裏面解釋的很清楚, 所以直接把圖截過來:

這裏主要是想補充的python編程實現的另一種實現方式, 就是求階乘那塊, 想複習一下python的reduce函數, 所以嘗試用reduce函數實現階乘部分作爲補充。關於reduce函數, 在python幕後的不爲人知二中有, 這裏想借機會用一下:

from functools import reduce


def mul(x, y):
    return x * y


def cal_pB(k, days=365):
    l_fac = reduce(mul, range(1, days+1))
    l_k_fac = reduce(mul, range(1, days+1-k))
    l_k_exp = days**k


    return l_fac / (l_k_fac*l_k_exp)


P_B = cal_pB(40)
print("事件B的概率爲:",P_B)
print("40個同學中⾄至少兩個人同⼀天過⽣日的概率是:",1 - P_B)
結果:
事件B的概率爲:0.10876819018205101。40個同學中⾄至少兩個⼈同⼀天過⽣日的概率是:0.891231809817949

4. 條件概率

研究隨機事件之間的關係時,在已知某些事件發生的條件下考慮另一些事件發生的概率規律有無變化及如何變化,是十分重要的。

是兩個事件, 且, 稱爲事件發生的條件下,事件發生的概率。

條件概率的公式比較重要, 這裏記住這個形式即可, 原型依然是從樣本點的角度化簡過來的。

基於條件概率, 纔有了後面偉大的全概率公式和貝葉斯公式。

5. 全概率公式和貝葉斯公式

在介紹這倆公式之前, 先看看概率乘法公式和樣本空間劃分的。

  • 由條件概率公式, 可以得到概率的乘法公式:

  • 如果事件組,滿足:

則稱事件組是樣本空間的一個劃分。

5.1 全概率公式

是樣本空間 的一個劃分, 爲任一事件,則:

稱爲全概率公式。

5.2 貝葉斯公式 

是樣本空間 的一個劃分,則對任一事件 ,有:

稱爲貝葉斯公式, 稱爲先驗概率, 爲後驗概率。

在實際中,常取對樣本空間的有限劃分 視爲導致試驗結果發生的“原因”,而表示各種“原因”發生的可能性大小,故稱爲先驗概率; 則反應當試驗產生了結果後,再對各種“原因”概率的新認識,故稱爲後驗概率 。

貝葉斯公式, 先驗概率和後驗概率的概念超級重要, 也是機器學習中樸素貝葉斯的核心。

隨機變量

這一塊基於文檔會補充一些知識, 比如連續型隨機變量和常見分佈, 然後在數字特徵那裏補充方差,協方差和相關係數的numpy和pandas的實現。 當然隨機變量這裏還有多維隨機變量及其分佈的內容, 但是篇幅有些多, 就不整理到這裏了, 以後用到現查吧。

1. 隨機變量及其分佈函數

上面的討論中, 我們發現有些隨機試驗, 它們結果可以用數來表示, 此時樣本空間的元素是數, 而有些則不是, 對於後者, 我們就難以描述和研究, 那麼我們能不能想辦法將隨機試驗的每一個結果,即樣本空間中的每個元素與實數對應起來呢?那樣我們就可以從數學的角度研究這些隨機試驗的規律了, 從而引入了隨機變量的概念。

是隨機試驗,是樣本空間,如果對於每一個 。都有一個確定的實數 與之對應,若對於任意實 ,有,則稱上的單值實函數爲一個隨機變量。

簡單的理解, 隨機變量就是樣本空間樣本點到實數的一種映射。

舉個例子:我們假設拋擲一枚硬幣拋三次, 那麼我們的樣本空間是

正正正,正正反正反正,反正正,正反反,反正反,反反正,反反反

記三次投擲得到正面的總數, 那麼樣本空間中的每個樣本點, 都有一個數與之對應, 那麼就是定義在樣本空間上的實值單值函數。它的定義域是樣本空間, 值域是實數集合{0, 1, 2, 3}, 使用函數可將表示成:

通過這種方式, 就把樣本點映射到了實數上。

從定義可知隨機變量是定義在樣本空間上,取值在實數域上的函數。由於它的自變量是隨機試驗的結果,而隨機試驗結果的出現具有隨機性,因此,隨機變量的取值也具有一定的隨機性。這是隨機變量與普通函數的不同之處。

既然隨機變量的取值有隨機性, 那麼我們就關心它取值的可能性大小,也就是取某個值的概率,  那麼在數軸上我們如何確定這種概率的呢? 又引入了隨機變量分佈函數的概念。

是一個隨機變量, 對任意的實數, 令

爲隨機變量的分佈函數, 或者概率累積函數。

有了分佈函數, 如果我們再想研究隨機變量取值的概率, 就比較容易了, 並且對於隨機變量的取值, 我們往往不是研究去某一個值(因爲對於連續型隨機變量某一個值會發現概率是0), 而是研究一段區間, 那麼對於任意實數, 有:

這樣就得到了落在某一段區間上的概率。因此分佈函數完整的描述了隨機變量的統計規律性, 並且分佈函數就是一個普通的函數了, 通過這個我們就能通過數學的方法研究隨機變量。這個太厲害了。

2. 離散型隨機變量及常見分佈

如果隨機變量的全部可能取值只有有限多個或可列無窮多個(上面拋擲硬幣的例子), 則稱 爲離散型隨機變量。

如果要研究離散型隨機變量的統計規律, 必須知道的所有可能取值及每個可能取值的概率。

對於離散型隨機變量 可能取值爲 的概率爲:

上面的式子就是離散型隨機變量的分佈律。我們可以用下表來表示分佈律:

離散型隨機變量的分佈函數:

下面介紹三種重要的離散型隨機變量及分佈。

2.1. (0-1)分佈

設隨機變量只可能取0和1兩個值, 它分佈律是

則稱服從以爲參數的(0-1)分佈或者兩點分佈。對於一個隨機試驗, 如果樣本空間只包含兩個元素, , 我們就能在上定義一個服從(0-1)分佈的隨機變量

來描述隨機試驗的結果。比如拋硬幣的試驗, 比如檢驗產品是否合格等。

2.2. 二項分佈

說起二項分佈, 我們得先說一種試驗叫做伯努利試驗, 重複表示的每一次試驗概率不變, 獨立指的是每次試驗互不干擾。比如拋擲硬幣的那個例子, 拋擲一次觀察是正面還是反面, 這是一個伯努利試驗, 將硬幣拋擲次, 就是重伯努利試驗。設:


這就是著名的二項分佈, 記做分佈函數


分佈函數:

numpy 中提供了產生二項分佈的API:

np.random.binomial(n, p, size)

2.3. 泊松分佈

設隨機變量所有可能取值爲0, 1, 2,..., 而取各個值的概率爲

則稱服從參數爲的泊松分佈, 記爲

泊松定是一個常數, 是任意正整數, 設, 則對於任意固定非負整數, 有

這個東西也就是說以爲參數的二項分佈的概率值可以又參數爲的泊松分佈來近似。

numpy中提供了產生泊松分佈隨機數的API:

numpy.random.poisson([lam, size])

3. 連續型隨機變量及常見分佈

如果對於隨機變量的分佈函數, 存在非負函數, 使對於任意實數

則稱爲連續型隨機變量, 其中函數的概率密度函數或者概率密度。對於任意連續型隨機變量來說, 它取任意指定實數值的概率爲0, 但是這並不意味着這個不可能發生。也就是概率爲0的事件並不一定不發生。

還有一點要注意就是雖然概率密度的大小可以反映隨機變量取某段值的可能性大小, 但是概率密度並不代表着概率, 因爲有個積分號。

也就是

下面看看三種重要的連續型隨機變量及分佈:

3.1. 均勻分佈

若連續型隨機變量具有概率密度

則稱在區間(a,b)上服從均勻分佈, 記爲概率密度和分佈函數長這樣:

下面看一下用numpy的random來產生服從均勻分佈的隨機樣本:

# 均勻分佈
import numpy as np
import matplotlib.pyplot as plt


np.random.rand(10)         # (0-1)的一組均勻分佈的數
np.random.uniform(low=0, high=100, size=10)   # 從一個均勻分佈[low,high)中隨機採樣,注意定義域是左閉右開,即包含low,不包含high


# 畫個圖感受一下
x = np.random.uniform(-1, 1, 10000000)
plt.hist(x, bins=10)

看一下均勻分佈的效果:

3.2.指數分佈

若連續型隨機變量的概率密度爲:

則稱服從參數爲的指數分佈。概率密度圖如下:

指數分佈有個性質就是無記憶性。即

numpy中提供了指數分佈隨機數的API:

numpy.random.exponential(scale, size)
3.3. 正態分佈正態分佈若連續型隨機變量的概率密度爲



則稱服從參數爲的正態分佈或者高斯分佈, 記爲。這個分佈的重要性就不言而喻了吧。

看一下分佈函數和概率密度圖像:

如果, 那麼就稱服從標準正態分佈。

有一個牛叉的引理,就是若, 則, 這時候就可以通過標準正態去算正態的概率了。下面是numpy產生正態分佈隨機數:
# numpy.random.randn(d0, d1, ..., dn)
#返回一個指定形狀的數組,數組中的值服從標準正態分佈(均值爲0,方差爲1)
a = np.random.randn(3, 2)


# numpy.random.normal(loc=0.0, scale=1.0, size=None)
# 返回一個由size指定形狀的數組,數組中的值服從 μ=loc,σ=scale 的正態分佈。
a = np.random.normal(0, 1, (3, 2))

關於更多numpy產生隨機數的方法, 比較常用的就是

  • 均勻分佈:rand, uniform

  • 正態分佈:randn, normal

  • 離散均勻抽樣:randint, random

4. 隨機變量的數字特徵

4.1. 數學期望

這裏要注意一下,就是這裏的數學期望和樣本平均數可不是一回事。期望是針對於隨機變量而言的一個量,可以理解是一種站在“上帝視角”的值。針對於他的樣本空間而言的。而樣本平均數是一個統計量(對觀察樣本的統計),期望是一種概率論概念,是一個數學特徵。但是平均數和期望可以通過大數定律聯繫起來, 即期望就是平均數隨樣本趨於無窮的極限。所以後面會學習到數理統計的內容, 就是通過觀察已有的樣本去估計“上帝視角”的這些未知值。

數學期望代表了隨機變量取值的平均值, 是非常重要的數字特徵。數學期望有下面的性質:

關於期望, 我們是沒法直接求得, 但是給我們樣本, 我們可以求均值(np.mean)

4.2. 方差

方差是用來描述隨機變量取值相對於均值的離散程度的一個量,也是非常重要的數字特徵。方差有如下性質:

同樣樣本的方差可以np.var()

4.3. 協方差和相關係數

協方差和相關係數都是描述隨機變量X與隨機變量Y之間的線性聯繫程度的數字量。

當然, 衡量兩個隨機變量的線性相關程度, 我們一般用的是相關係數:

關於理論, 這裏就直接截圖了,因爲公式的編輯太費時間了。下面就通過代碼的方式看點有意思的事情了:

首先我們可以通過np.mean(), np.std(), np.var()計算給定數據的均值, 標準差, 方差。

import numpy as np


x=np.array([[1 ,5 ,6] ,[4 ,3 ,9 ],[ 4 ,2 ,9],[ 4 ,7 ,2]])
x.mean()       # 所有數的均值
x.mean(axis=1)  # 每一行的均值
x.mean(axis=0)   # 每一列的均值


# 方差
np.var(x)
np.var(x, axis=1)
np.var(x, axis=0)


# 標準差
np.std(x)
np.std(x, axis=1)
np.std(x, axis=0)

然後我們看看協方差np.cov():

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)計算協方差, 一定要清楚每一行代表一個變量還是每一列代表一個變量, 我們計算協方差是計算變量與變量之間的線性關係, 所以首先得知道哪是變量哪是樣本。numpy裏面的cov函數默認是每一行是變量(特徵)

x=np.array([[1 ,5 ,6] ,[4 ,3 ,9 ],[ 4 ,2 ,9],[ 4 ,7 ,2]])
np.cov(x)        # 每一行是一個變量

結果如下:

如果我們的每一列是變量, 這時候求協方差, 需要指定rowvar=0

np.cov(x, rowvar=0)     # 每一列是一個變量


# 結果
array([[ 2.25      , -0.75      ,  0.5       ],
       [-0.75      ,  4.91666667, -7.16666667],
       [ 0.5       , -7.16666667, 11.        ]])

但是注意, 如果是pandas的話, 默認是每一列是一個變量

import pandas as pd
df = pd.DataFrame(x)


df.cov()

如果是求相關係數, 我們可以用np.corrcoef(), 或者是pd.corr(), 同樣的前者默認行爲變量, 後者默認列爲變量, 用法的話和上面的協方差類似, 只不過corr()函數可以指定相關係數的類型。

np.corrcoef(x, rowvar=0)   # 求皮爾遜相關係數
df.corr()     # pandas默認是列是變量


# 這兩個結果一樣
array([[ 1.        , -0.22549381,  0.10050378],
       [-0.22549381,  1.        , -0.97450816],
       [ 0.10050378, -0.97450816,  1.        ]])

但是corr()不僅可以求皮爾遜相關係數, 還可以求其他的相關係數, 比如spearman等。

最後再看一個有意思的現象:

x = [1, 2, 3, 4]
np.var(x) * 4    # 5.0
np.cov(x) * 3    # 5.0

就是當x是一個變量的時候, np.cov和np.var都是再求方差, 但是後者是有偏的, 前者是無偏的, 關於有偏無偏, 這裏就不多說了, 有偏就是分母除的是n, 無偏是除的n-1. 那如果想這時候讓cov也求有偏, 就指定np.cov(x, ddof=0) , 這時候就和np.var(x)的結果一樣了。

寫到最後

這篇文章的內容屬於概率統計基礎部分, 內容也不少, 下面簡單回顧一下, 我們從隨機變量開始, 介紹了概率統計中很重要且容易混的一些概念, 隨機現象, 隨機試驗, 隨機事件, 樣本空間, 樣本點等。然後想找到衡量事件發生可能性大小的標準就引出了頻率和概率的概念, 然後再走一步學習了古典概型, 條件概率並引出了偉大的全概率公式和貝葉斯公式。

隨機變量這塊, 正式的把概率和數學函數聯繫到了一塊, 研究了離散型隨機變量和分佈, 連續型隨機變量分佈, 最後學習了隨機變量的數字特徵:期望, 方差,協方差和相關係數, 並基於numpy實現了樣本的均值,方差,協方差和相關係數。

本文電子版教程 後臺回覆 概率統計 獲取

“端午快樂!爲沉迷學習點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章