机器学习领域必知必会的12种概率分布(附Python代码实现)

2019 年 10 月 18 日 算法与数学之美
机器学习开发者需要了解的 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.511.5]:

    x = np.arange(0200.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()

————

编辑 ∑Gemini

 来源:Datawhale


泰勒定理的奇闻轶事

丘成桐:漫谈微分几何

Leibniz 如何想出微积分?(一)

线性相关和秩的物理意义

数学史上你认为最丑陋的公式是什么?

陶哲轩谈什么是好的数学

田渊栋:数学的用处(下篇)

你绝对没想过原来数学家这么流氓,一言不合就进行暴力证明

世界上最牛的五篇博士论文

数学中有哪些巧合让人眼前一亮?

算法立功!清华毕业教授美国被抢车,警察无能为力自己用“贪心算法”找回

学术史上的奇文:怎样用数学抓狮子

台大教授的反思:最难的一课 我们却没教给学生

☞麻省理工学院(MIT)研究生学习指导—— 怎样做研究生

☞分享 数学,常识和运气 ——投资大师詹姆斯·西蒙斯2010年在MIT的讲座


算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域,经采用我们将奉上稿酬。

投稿邮箱:math_alg@163.com

登录查看更多
21

相关内容

概率分布,是指用于表述随机变量取值的概率规律。事件的概率表示了一次试验中某一个结果发生的可能性大小。若要全面了解试验,则必须知道试验的全部可能结果及各种可能结果发生的概率,即随机试验的概率分布。如果试验结果用变量X的取值来表示,则随机试验的概率分布就是随机变量的概率分布,即随机变量的可能取值及取得对应值的概率。根据随机变量所属类型的不同,概率分布取不同的表现形式。
Python导论,476页pdf,现代Python计算
专知会员服务
250+阅读 · 2020年5月17日
《深度学习》圣经花书的数学推导、原理与Python代码实现
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
195+阅读 · 2020年2月11日
人工智能学习笔记,247页pdf
专知会员服务
173+阅读 · 2019年12月14日
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
用Python实现流行机器学习算法
Python程序员
19+阅读 · 2018年12月31日
教你在Python中实现潜在语义分析(附代码)
数据派THU
8+阅读 · 2018年12月6日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
GAN完整理论推导、证明与实现(附代码)
数据派THU
4+阅读 · 2017年10月6日
朴素贝叶斯和贝叶斯网络算法及其R语言实现
R语言中文社区
10+阅读 · 2017年10月2日
神经网络理论基础及 Python 实现
Python开发者
6+阅读 · 2017年7月15日
详解基于朴素贝叶斯的情感分析及Python实现
AI研习社
9+阅读 · 2017年7月12日
A Survey on Bayesian Deep Learning
Arxiv
59+阅读 · 2020年7月2日
Arxiv
3+阅读 · 2019年10月31日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Embedding Logical Queries on Knowledge Graphs
Arxiv
3+阅读 · 2019年2月19日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
6+阅读 · 2018年4月4日
Arxiv
3+阅读 · 2017年7月6日
VIP会员
相关VIP内容
Python导论,476页pdf,现代Python计算
专知会员服务
250+阅读 · 2020年5月17日
《深度学习》圣经花书的数学推导、原理与Python代码实现
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
195+阅读 · 2020年2月11日
人工智能学习笔记,247页pdf
专知会员服务
173+阅读 · 2019年12月14日
相关资讯
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
用Python实现流行机器学习算法
Python程序员
19+阅读 · 2018年12月31日
教你在Python中实现潜在语义分析(附代码)
数据派THU
8+阅读 · 2018年12月6日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
GAN完整理论推导、证明与实现(附代码)
数据派THU
4+阅读 · 2017年10月6日
朴素贝叶斯和贝叶斯网络算法及其R语言实现
R语言中文社区
10+阅读 · 2017年10月2日
神经网络理论基础及 Python 实现
Python开发者
6+阅读 · 2017年7月15日
详解基于朴素贝叶斯的情感分析及Python实现
AI研习社
9+阅读 · 2017年7月12日
相关论文
A Survey on Bayesian Deep Learning
Arxiv
59+阅读 · 2020年7月2日
Arxiv
3+阅读 · 2019年10月31日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Embedding Logical Queries on Knowledge Graphs
Arxiv
3+阅读 · 2019年2月19日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
6+阅读 · 2018年4月4日
Arxiv
3+阅读 · 2017年7月6日
Top
微信扫码咨询专知VIP会员