机器学习中常用的概率分布

目录

本文蜻蜓点水般的过一下机器学习中用到的概率分布。这些分布不仅在机器学习中有广泛使用,而且在各个领域都有用到。

1 二项分布

二项分布也称伯努利分布。假设我们丢均匀硬币n次,令随机变量X表示出现正面的次数,则X服从二项分布,记为XBin(n,θ),概率密度函数是:

Bin(k|n,θ)(nk)θk(1θ)nk

其中:

(nk)=n!(nk)!k!

是二项式系数,表示从n个元素中选出k个的组合数。二项分布的均值为θ,方差为nθ(1θ).

mean=θ,var=nθ(1θ)

2 多项分布

二项分布用于建模丢硬币这样的结果有两种可能的事件,对于结果有K中可能的事件,我们用多项式分布建模。假设x=(x1,,xK)是一个随机矢量,xj表示第j个可能出现的次数,我们有Ki=1xi=n,则x具有的分布是:

Mu(x|n,θ)=(nx1,,xk)Kj=1θxjj

θj代表第j个可能出现的概率,

(nx1,,xK)=n!x1!x2!xK!

是多项式系数。这个多项式系数是把n=Kk=1xk分成x1,,xK的所有可能的分法。关于多项式系数更有意思的结论可以参见 这篇博文

3 泊松分布

随机变量X服从泊松分布,则其概率密度分布可以表示为:

Poi(x|λ)=eλλxx!

其中eλ是归一化敞亮,用于保证分布的和是1.

泊松分布经常用于对较少发生的事情建模,比如一碗食堂免费汤里的蛋花。

4 经验分布

给定一个数据集D={x1,,xN},我们定义一个经验分布(也叫经验度量),

Pemp(A)=1NNi=1δxi(A)

其中δx(A)是狄拉克度量,

δx(A)={0xA1xA

通常意义上我们为每一个样本分配一个权重:

p(x)=Ni=1wiδxi(x)

其中wi是权重,满足0wi1,且Ni=1wi=1。我们可以把这个想象成一个直方图,在每一个xi处都有一个高为wi的直方柱。

5 高斯分布

高斯分布是机器学习和统计学中使用最广泛的分布,关于高斯分布的八卦见我的这篇博文 。其密度函数是:

N(x|μ,σ2)=12πσ2e(xμ)22σ2

这里μ=E(X)是均值,σ2是方差。2πσ2是归一化因子,用来保证密度函数积分为1.

我们用XN(μ,σ2)来表示X服从高斯分布,其密度函数为p(x|μ,σ2),如果XN(0,1),我们说X服从正态分布。通常,我们用方差的导数表示高斯分布的精度λ=1/σ2,一个高精度的高斯密度函数指的是一个方差较小的高斯函数。这一意味着,随机变量的值大都集中于均值μ周围。考虑在x=μ出的概率,其值为N(μ|μ,σ2)=12πσ2,所以如果σ<2π,我们有p(x)>1,即出现了概率大于1的现象。

高斯函数的累积分布函数(CDF)定义为:

Φ(x;μ,σ2)=xN(z|μ,σ2)dz

这个CDF没有闭式解析解,但是很多软件包都可以用来结算该CDF。

高斯函数之所以在统计学中有广泛应用,基于以下原因:

  1. 高斯分布只用两个参数就可以解释:均值和方差。
  2. 中心极限定理告诉我们:独立随机变量的和近似于高斯分布。所以我们用高斯变量来建模噪声。
  3. 使用高斯分布用最少的假设条件就可以构建满足某种均值和方差的分布。
  4. 高斯分布的数学形式简单,易于实现。

5.1 高斯分布的退化

当我们令式~(10)中的σ2趋近零的时候,高斯分布的精度会越来越高,意味着高斯分布越来越窄,窄到只在x=μ处有值:

limσ20N(x|μ,σ2)=δ(xμ)

其中δ(x)是狄拉克函数:

δ(x)={1x=00x0

且有:

δ(x)dx=1

这个狄拉克函数的最大作用是采样,可以用这个函数从一个和中选出一项,比如:

f(x)δ(xμ)dx=f(μ)

高斯函数的一个缺点是对异类(outlier)特别敏感(记不记得格拉德维尔有本书中文名是《异类》,其英文名就是outlier,这本书还不错,推荐阅读。格拉德维尔所著的书中我觉得只读一本的话读这本就可以了,只可惜我都读了才明白,花费了不少宝贵时间)。好吧,回到高斯函数对异类敏感,这是因为高斯函数取log之后只随着(xμ)的平方衰减,xμx到高斯函数中心的距离。一个更鲁棒的分布是学生分布。

6 学生分布

学生分布密度函数:

T(x|μ,σ2,ν)[1+1ν(xμσ)2]ν+12

其中μ是均值,σ2>0是缩放因子,ν>0是自由度。稍后我们会发现学生分布的方差是νσ2ν2

20170524mlappfigure2dot7.png

Figure 1: 高斯函数对异类敏感,学生分布更鲁棒

我们从图1 可以看出高斯分布对异类更敏感,而学生分布则要稳定的多。对于学生分布ν=1时,我们也称其为柯西分布或者洛伦兹分布。这个分布的尾巴很重以至于求均值计算积分的时候根本不收敛。

为了保证方差有限,我们要求ν>2. ν=4是比较常见的一个参数。当ν5的时候,学生分布近似于高斯分布,逐渐失去其鲁棒性。

7 拉普拉斯分布

拉普拉斯分布也是具有重尾的分布,这个分布也叫作双边指数分布,从其定义式上就可以看出为什么这么称呼:

Lap(x|μ,b)=12bexp(|xμ|b)

这里μ是位置参数,b是一个缩放参数。拉普拉斯分布的均值是μ,方差是2b2。这个分布对于异类也是不敏感的,在0附近聚集了更多的概率密度。使用这个分布我们可以在模型中允许更多的稀疏性(sparsity)。

8 伽马分布

伽马分布是一个非常灵活的分布。伽马分布由两个参数决定形状参数a,和速率参数b:

Ga(T|shape=a,rate=b)=baΓ(a)Ta1eTb

其中Γ(a)是伽马函数:

Γ(x)=0ux1eudu

伽马分布的主要参数是:

mean=ab,mode=a1b,var=ab2

有几个分布是伽马分布的特例:

  1. 指数分布,定义为:Expon(x|λ)Ga(x|1,λ)
    其中λ是速率参数。这个分布描述了泊松过程中两个事件之间的时间。
  2. Erlang分布。这个分布和伽马分布相同,除了a是一个整数。我们令a=2就是Erlang分布,即Erlang(x|λ)=Ga(x|2,λ)
    其中λ是速率参数。
  3. χ2分布。这个分布定义为:χ2(x|ν)=Ga(x|ν2,12)
    这个分布是高斯随机变量平方和的分布,即如果ZiN(0,1)S=νi=1Z2i,那么Sχ2ν

9 贝塔分布

贝塔分布定义域在[0,1]上,定义式为:

Beta(x|a,b)=1B(a,b)xa1(1x)b1

这里B(p,q)是贝塔函数:

B(a,b)=Γ(a)Γ(b)Γ(a+b)

为确保B(a,b)存在,a,b必须是大于零的数。当a=b=1时,贝塔分布退化为均匀分布。贝塔分布的均值是aa+b,方差为ab(a+b)2(a+b+1)

10 Pareto分布

Pareto分布用于长尾数据量建模。例如英语里最常用的单词“the” 发生的频率是"of"的两倍,"of"发生的频率又是排名第四的单词的两倍,依次类推。如果我们根据这些单词的频率和排名画图的话,我们得到了一个幂函数的图像。这是 Zipf 定律。Pareto分布定义为:

Pareto(x|k,m)=kmkx(k+1)I(xm)

从式 (23)我们可以看出x必须大于某一个常数,但是x又不能太大(k控制着到底多大才是“大”)。当k时,Pareto分布趋向于δ(xm)。这个分布的均值是kmk1,k>1,方差是m2k(k1)2(k2)

11 机器学习中概率分布的用途

讨论概率分布的一个重要原因是,现实生活中有很多数据可以使用这些模型来模拟。对于给定的一个数据集合x1,,xn我们希望这个数据集合来自于某个随机变量X,并且这个随机变量具有概率分布P(X)。找到P(X)的过程叫做密度估计(density estimation)。需要强调的是密度估计问题是一个病态问题,因为世界上的概率密度函数不计其数,能够给出观测集合x1,,xn的概率密度函数也是如此之多。任何一个在x1,,xn处非零的密度函数P(X)都可能是候选。选择一个合适的P(X)是模型选择问题,在机器学习领域经常遇见。

之前我们也看到了很多分布,把这些分布用到密度估计过程中,我们需要确定相对于这些模型的一些重要参数,比如期望,比如方差,再比如一些超参数。这些量值的确定亦有不同的方法,从频率方面(frequentist)着手的话,我们根据某个准则进行优化,为这些参数选择特定的值,常见的准则是最大似然准则。从贝叶斯方面着手的话,我们引入这些参数的一些先验估计(prior distributions),然后使用贝叶斯定理根据给定的观测数据计算关于这些参数的后验估计。在通信系统中,贝叶斯估计是经常用到的一种密度估计处理方法。