今天給大家帶來的這篇文章是關于機器學習的,機器學習有其獨特的數學基礎,我們用微積分來處理變化無限小的函式,并計算
它們的變化;我們使用線性代數來處理計算程序;我們還用概率論與統計學建模不確定性,
在這其中,概率論有其獨特的地位,模型的預測結果、學習程序、學習目標都可以通過概率的角度來理解,
與此同時,從更細的角度來說,隨機變數的概率分布也是我們必須理解的內容,在這篇文章中,專案作者介紹了所有你需要了解
的統計分布,他還提供了每一種分布的實作代碼,

專案地址:https://github.com/graykode/distribution-is-all-you-need

下面讓我們先看看總體上概率分布都有什么吧:

Python學習交流Q群:906715085### 非常有意思的是,上圖每一種分布都是有聯系的,比如說伯努利分布,它重復幾次就是二項分布,如果再擴展到多類別,就成為 了多項式分布,注意,其中共軛(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()
最后
今天給大家分享的Python小技巧到這里就結束了,對于文章有不懂的地方可以評論留言告訴我,喜歡的記得點贊收藏喲!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468730.html
標籤:Python
