Distribution is all you need:這裡有12種做ML不可不知的分布
- 2019 年 10 月 6 日
- 筆記
選自github
作者:graykode
機器之心編譯
參與:思
機器學習開發者需要了解的 12 種概率分布,這些你都了解嗎?
機器學習有其獨特的數學基礎,我們用微積分來處理變化無限小的函數,並計算它們的變化;我們使用線性代數來處理計算過程;我們還用概率論與統計學建模不確定性。在這其中,概率論有其獨特的地位,模型的預測結果、學習過程、學習目標都可以通過概率的角度來理解。
與此同時,從更細的角度來說,隨機變數的概率分布也是我們必須理解的內容。在這篇文章中,項目作者介紹了所有你需要了解的統計分布,他還提供了每一種分布的實現程式碼。
項目地址:https://github.com/graykode/distribution-is-all-you-need
下面讓我們先看看總體上概率分布都有什麼吧:
非常有意思的是,上圖每一種分布都是有聯繫的。比如說伯努利分布,它重複幾次就是二項分布,如果再擴展到多類別,就成為了多項式分布。注意,其中共軛(conjugate)表示的是互為共軛的概率分布;Multi-Class 表示隨機變數多於 2 個;N Times 表示我們還會考慮先驗分布 P(X)。
在貝葉斯概念理論中,如果後驗分布 p(θ | x) 與先驗分布 p(θ) 是相同的概率分布族,那麼後驗分布可以稱為共軛分布,先驗分布可以稱為似然函數的共軛先驗。
為了學習概率分布,項目作者建議我們查看 Bishop 的模式識別與機器學習。當然,你要是準備再過一遍《概率論與數理統計》,那也是極好的。
概率分布與特性
1. 均勻分布(連續型)
均勻分布是指閉區間 [a, b] 內的隨機變數,且每一個變數出現的概率是相同的。
2. 伯努利分布(離散型)
伯努利分布並不考慮先驗概率 P(X),它是單個二值隨機變數的分布。它由單個參數φ∈ [0, 1] 控制,φ 給出了隨機變數等於 1 的概率。我們使用二元交叉熵函數實現二元分類,它的形式與對伯努利分布取負對數是一致的。
3. 二項分布(離散型)
二項分布是由伯努利提出的概念,指的是重複 n 次獨立的伯努利試驗。在每次試驗中只有兩種可能的結果,而且兩種結果發生與否互相對立。
4.Multi-Bernoulli 分布(離散型)
Multi-Bernoulli 分布又稱為範疇分布(Categorical distribution),它的類別超過 2,交叉熵的形式與該分布的負對數形式是一致的。
5. 多項式分布(離散型)
範疇分布是多項式分布(Multinomial distribution)的一個特例,它與範疇分布的關係就像伯努利分布與二項分布之間的關係。
6.Beta 分布(連續型)
貝塔分布(Beta Distribution) 是一個作為伯努利分布和二項式分布的共軛先驗分布的密度函數,它指一組定義在 (0,1) 區間的連續概率分布。均勻分布是 Beta 分布的一個特例,即在 alpha=1、 beta=1 的分布。
7. 狄利克雷分布(連續型)
狄利克雷分布(Dirichlet distribution)是一類在實數域以正單純形(standard simplex)為支撐集(support)的高維連續概率分布,是 Beta 分布在高維情形的推廣。在貝葉斯推斷中,狄利克雷分布作為多項式分布的共軛先驗得到應用,在機器學習中被用於構建狄利克雷混合模型。
8.Gamma 分布(連續型)
Gamma 分布是統計學中的常見連續型分布,指數分布、卡方分布和 Erlang 分布都是它的特例。如果 Gamma(a,1) / Gamma(a,1) + Gamma(b,1),那麼 Gamma 分布就等價於 Beta(a, b) 分布。
9. 指數分布(連續型)
指數分布可以用來表示獨立隨機事件發生的時間間隔,比如旅客進入機場的時間間隔、打進客服中心電話的時間間隔等等。當 alpha 等於 1 時,指數分布就是 Gamma 分布的特例。
10. 高斯分布(連續型)
高斯分布或正態分布是最為重要的分布之一,它廣泛應用於整個機器學習的模型中。例如,我們的權重用高斯分布初始化、我們的隱藏向量用高斯分布進行歸一化等等。
當正態分布的均值為 0、方差為 1 的時候,它就是標準正態分布,這也是我們最常用的分布。
11. 卡方分布(連續型)
簡單而言,卡方分布(Chi-squared)可以理解為,k 個獨立的標準正態分布變數的平方和服從自由度為 k 的卡方分布。卡方分布是一種特殊的伽瑪分布,是統計推斷中應用最為廣泛的概率分布之一,例如假設檢驗和置信區間的計算。
12. 學生 t-分布
學生 t-分布(Student t-distribution)用於根據小樣本來估計呈正態分布且變異數未知的總體,其平均值是多少。t 分布也是對稱的倒鍾型分布,就如同正態分布一樣,但它的長尾佔比更多,這意味著 t 分布更容易產生遠離均值的樣本。
分布的程式碼實現
上面多種分布的 NumPy 構建方式以及製圖方式都提供了對應的程式碼,讀者可在原項目中查閱。如下所示展示了指數分布的構建的製圖方式,我們可以直接定義概率密度函數,再列印出來就好了。
import numpy as np from matplotlib import pyplot as plt def exponential(x, lamb): y = lamb * np.exp(-lamb * x) return x, y, np.mean(y), np.std(y) for lamb in [0.5, 1, 1.5]: x = np.arange(0, 20, 0.01, dtype=np.float) x, y, u, s = exponential(x, lamb=lamb) plt.plot(x, y, label=r'$mu=%.2f, sigma=%.2f,' r' lambda=%d$' % (u, s, lamb)) plt.legend() plt.savefig('graph/exponential.png') plt.show()
本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。