第2章 Probability Distribution

  • 2.2 Multinomial Variables
  • P74 两变量的条件期望与条件方差
  • 2.3 The Gaussian Distribution
  • P86 高斯分布的参数辨识
  • P94 序列估计
  • Robbins-Monro 算法
  • P99 高斯分布参数的贝叶斯估计
  • 一般性序列估计
  • 一维高斯分布均值的后验推断
  • 一维高斯分布方差的后验推断 Gamma分布
  • 一维高斯分布均值和方差联合的后验推断 Gaussian-gamma分布
  • 高维高斯分布均值的后验推断
  • 高维高斯分布方差的后验推断 Wishart分布
  • 高维高斯分布均值和方差联合的后验推断 Gaussian-Wishart分布
  • P103 学生t分布
  • P107 von Mises 分布
  • 2.4 The Exponential Family
  • P113 一般形式
  • P115 参数估计与充分统计量
  • P117 共轭先验
  • P117 无信息先验
  • 尺度参数的无信息先验分布
  • 2.5 无参数概率密度估计
  • P122 核密度估计和近邻方法
  • P125 kNN算法的一种无参解释


2.2 Multinomial Variables

P74 两变量的条件期望与条件方差

由Exercise2.8:考虑两个变量双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码双变量贯序排列python代码 双变量有序probit_方差_02,联合概率分布为双变量贯序排列python代码 双变量有序probit_机器学习_03. 那么
双变量贯序排列python代码 双变量有序probit_方差_04
这里双变量贯序排列python代码 双变量有序probit_机器学习_05表示在条件分布双变量贯序排列python代码 双变量有序probit_方差_06下,双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码的期望。条件方差记号类似。
所以可知
双变量贯序排列python代码 双变量有序probit_高斯分布_08
注意二式的右侧,第一项为双变量贯序排列python代码 双变量有序probit_方差_09的后验分布方差的期望,第二项为后验分布期望的方差。
其中,双变量贯序排列python代码 双变量有序probit_机器学习_10,所以双变量贯序排列python代码 双变量有序probit_数据集_11。也就是说观测到数据后,双变量贯序排列python代码 双变量有序probit_方差_09的不确定性会减小。不过这只对平均而言成立。可以构造特殊的数据集,并让双变量贯序排列python代码 双变量有序probit_方差_09的后验分布的方差变大。
(疑问:这好像并不能证明双变量贯序排列python代码 双变量有序probit_机器学习_14越大,不确定性越小。这里猜测可以用类似方法证明,写出两个数据集双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_15双变量贯序排列python代码 双变量有序probit_机器学习_16双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_15放到两侧,双变量贯序排列python代码 双变量有序probit_机器学习_16放到右边,构造一个类似上述的式子?有空试一波!)

2.3 The Gaussian Distribution

P86 高斯分布的参数辨识

高斯分布在给定形式后,如何看出参数双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_19和方差双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_20,直接关注指数表达式即可:
双变量贯序排列python代码 双变量有序probit_高斯分布_21
只要写成这样的形式,就能直接从二次项中读出双变量贯序排列python代码 双变量有序probit_方差_22,从一次项读出双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_23.
用这样的方法,2.3.1节写出当全变量为高斯分布时的条件分布
2.3.2节给出了边缘分布
2.3.3节给出了线性高斯模型的边缘分布和条件分布,即
双变量贯序排列python代码 双变量有序probit_高斯分布_24其中双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_25被称为精度矩阵Precision Matrix)
线性高斯模型的结果双变量贯序排列python代码 双变量有序probit_方差_02仍然是高斯分布
双变量贯序排列python代码 双变量有序probit_高斯分布_27

P94 序列估计

假定样本是一个一个序列观测的,记第双变量贯序排列python代码 双变量有序probit_机器学习_28次观测后,均值估计为双变量贯序排列python代码 双变量有序probit_方差_29,则易知
双变量贯序排列python代码 双变量有序probit_数据集_30
上式可看作是对双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_19的不断修正。这里考虑一个一般化的序列学习算法:

Robbins-Monro 算法

对于一对随机变量双变量贯序排列python代码 双变量有序probit_方差_09双变量贯序排列python代码 双变量有序probit_方差_33,并假定双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_34. 希望通过序列数据找到根双变量贯序排列python代码 双变量有序probit_数据集_35满足双变量贯序排列python代码 双变量有序probit_机器学习_36.

假定双变量贯序排列python代码 双变量有序probit_方差_33的条件方差有限,即双变量贯序排列python代码 双变量有序probit_高斯分布_38. 不失一般性,我们认为双变量贯序排列python代码 双变量有序probit_机器学习_39时,双变量贯序排列python代码 双变量有序probit_方差_40双变量贯序排列python代码 双变量有序probit_数据集_41时,双变量贯序排列python代码 双变量有序probit_高斯分布_42. 则

双变量贯序排列python代码 双变量有序probit_机器学习_43


其中双变量贯序排列python代码 双变量有序probit_机器学习_44是给定双变量贯序排列python代码 双变量有序probit_方差_45双变量贯序排列python代码 双变量有序probit_方差_33的观测。

双变量贯序排列python代码 双变量有序probit_高斯分布_47表示正数序列满足

双变量贯序排列python代码 双变量有序probit_方差_48

上式会以概率为1收敛到根。 第一项确保了修正项会收敛到一个有限值,第二项确保了不会对根欠收敛,第三项确保了累积噪声的方差有限,所以不会破坏收敛。(这个算法在强化学习的摇臂赌博机中也用到了)考虑一般的最大似然问题,参数双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_49是一个驻点,满足

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_50


双变量贯序排列python代码 双变量有序probit_高斯分布_51,上式即

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_52

注意这个形式,和Robbins-Monro的要求是一样的,可以得到

双变量贯序排列python代码 双变量有序probit_数据集_53

双变量贯序排列python代码 双变量有序probit_方差_33可以看作是其中的双变量贯序排列python代码 双变量有序probit_高斯分布_55

对于高斯分布的均值估计双变量贯序排列python代码 双变量有序probit_方差_29,即双变量贯序排列python代码 双变量有序probit_方差_57,取双变量贯序排列python代码 双变量有序probit_数据集_58,则得到一致的更新公式。

双变量贯序排列python代码 双变量有序probit_方差_59


双变量贯序排列python代码 双变量有序probit_方差_60

P99 高斯分布参数的贝叶斯估计

一般性序列估计

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_61

上式括号中的项可以看作是读入到第双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_62个数据之后,得到的参数分布,可以看作是第双变量贯序排列python代码 双变量有序probit_机器学习_28次的先验分布。

一维高斯分布均值的后验推断

如果已知方差,不知道均值,假定双变量贯序排列python代码 双变量有序probit_方差_64双变量贯序排列python代码 双变量有序probit_高斯分布_65,那么由
双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_66

可得双变量贯序排列python代码 双变量有序probit_高斯分布_67,其中

双变量贯序排列python代码 双变量有序probit_高斯分布_68
双变量贯序排列python代码 双变量有序probit_机器学习_28双变量贯序排列python代码 双变量有序probit_高斯分布_70中样本数,双变量贯序排列python代码 双变量有序probit_数据集_71.

这个式子很有趣

  • 双变量贯序排列python代码 双变量有序probit_数据集_72时,等同于先验分布
  • 双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_73时,等同于极大似然
  • 随着双变量贯序排列python代码 双变量有序probit_方差_74增大时,方差越来越小,双变量贯序排列python代码 双变量有序probit_方差_75越来越确定
  • 双变量贯序排列python代码 双变量有序probit_高斯分布_76时,等同于最大似然,方差很大意味着先验没有提供什么稳定的信息
一维高斯分布方差的后验推断 Gamma分布

如果已知均值,不知道方差,采用精确度双变量贯序排列python代码 双变量有序probit_方差_77进行表示。高斯分布的方差后验为:

双变量贯序排列python代码 双变量有序probit_方差_78

注意,这种写法下,对应的先验共轭分布其实是Gamma分布!
双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_79

如果记先验为双变量贯序排列python代码 双变量有序probit_高斯分布_80,则对应的后验为
双变量贯序排列python代码 双变量有序probit_数据集_81

从中可以辨识出分布为双变量贯序排列python代码 双变量有序probit_高斯分布_82
双变量贯序排列python代码 双变量有序probit_高斯分布_83

  • 双变量贯序排列python代码 双变量有序probit_方差_74增大时,双变量贯序排列python代码 双变量有序probit_高斯分布_85增大,实际上,可以把双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_86解释成是已经有了的双变量贯序排列python代码 双变量有序probit_高斯分布_87个先验伪观测,双变量贯序排列python代码 双变量有序probit_方差_88解释成是这双变量贯序排列python代码 双变量有序probit_高斯分布_87个先验观测具有方差双变量贯序排列python代码 双变量有序probit_数据集_90
  • 如果直接估计双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_91,而不是双变量贯序排列python代码 双变量有序probit_高斯分布_92,那么得到对应先验分布是Inverse Gamma 分布
一维高斯分布均值和方差联合的后验推断 Gaussian-gamma分布

如果方差和均值都不知道,那么双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_93的连乘可以写成如下形式:
双变量贯序排列python代码 双变量有序probit_高斯分布_94
这也即共轭先验的形式,该分布叫做normal-gammaGaussian-gamma分布

高维高斯分布均值的后验推断

如果已知方差,不知道均值,这种情况下,均值仍然是高斯分布。

高维高斯分布方差的后验推断 Wishart分布

如果已知均值,不知道方差,如果记精确度矩阵双变量贯序排列python代码 双变量有序probit_高斯分布_95,那么共轭先验分布为Wishart分布,这种分布可以看作是Gamma分布的高维推广,就类似于Beta分布和Dirichlet分布的关系。表达式为
双变量贯序排列python代码 双变量有序probit_机器学习_96
其中双变量贯序排列python代码 双变量有序probit_高斯分布_97是自由度,双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_98为归一化因子
双变量贯序排列python代码 双变量有序probit_数据集_99

如果直接对双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_20估计,而不是双变量贯序排列python代码 双变量有序probit_高斯分布_101,则得到对应的共轭先验为Inverse Wishart分布

高维高斯分布均值和方差联合的后验推断 Gaussian-Wishart分布

如果方差和均值都不知道,那么共轭先验的形式为:
双变量贯序排列python代码 双变量有序probit_高斯分布_102

称之为Normal-WishartGaussian-Wishart分布。

P103 学生t分布

如果一维高斯分布精确度先验为Gamma分布,均值已知,则双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码的边缘分布为
双变量贯序排列python代码 双变量有序probit_方差_104

如果记双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_105,则上式化学生t分布

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_106

双变量贯序排列python代码 双变量有序probit_机器学习_107有时称为t分布的precision,双变量贯序排列python代码 双变量有序probit_高斯分布_97称为自由度。双变量贯序排列python代码 双变量有序probit_方差_109时,退化为Cauchy distribution; 双变量贯序排列python代码 双变量有序probit_机器学习_110时,成为高斯分布双变量贯序排列python代码 双变量有序probit_高斯分布_111.

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_112

  • 相比于高斯分布,学生t分布的一个优点抗离群点robust,学生t分布的尾巴比较厚,没有高斯分布那么敏感。另外,如果一组数据,高斯分布拟合得好,学生t分也能拟合好,因为高斯分布是学生t分布的一个特例。如图所示

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_113

如果再另双变量贯序排列python代码 双变量有序probit_高斯分布_114,则学生t分布又可写为
双变量贯序排列python代码 双变量有序probit_方差_115
通过该形式,可以扩展出高维学生t分布
双变量贯序排列python代码 双变量有序probit_数据集_116

其中双变量贯序排列python代码 双变量有序probit_机器学习_117是维度, 双变量贯序排列python代码 双变量有序probit_机器学习_118

P107 von Mises 分布

一个二维高斯分布,关注其在以原点为圆心的单位圆下的条件概率分布,角度的分布为von Mises分布(循环正态分布)
双变量贯序排列python代码 双变量有序probit_数据集_119
其中双变量贯序排列python代码 双变量有序probit_高斯分布_120,而
双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_121
是归一化因子。

双变量贯序排列python代码 双变量有序probit_机器学习_122

  • 双变量贯序排列python代码 双变量有序probit_方差_123变大时,von Mises分布近似高斯分布

2.4 The Exponential Family

P113 一般形式

双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_124

其中双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码可以是一维或多维,也可以是离散或连续双变量贯序排列python代码 双变量有序probit_高斯分布_126叫做natural parameters,可看作归一化因子
实际上,本章中上述讨论过的概率分布都是指数族分布的特例

P115 参数估计与充分统计量

考虑一般参数双变量贯序排列python代码 双变量有序probit_方差_127估计问题,最大似然得到
双变量贯序排列python代码 双变量有序probit_方差_128

对数求导后得到
双变量贯序排列python代码 双变量有序probit_机器学习_129

  • 注意这里双变量贯序排列python代码 双变量有序probit_方差_130足够计算双变量贯序排列python代码 双变量有序probit_数据集_131,所以被称为充分统计量。例如对于Bernoulli分布,仅需要保存双变量贯序排列python代码 双变量有序probit_机器学习_132的和,对于高斯分布,需要保存双变量贯序排列python代码 双变量有序probit_方差_133各自的和。
  • 双变量贯序排列python代码 双变量有序probit_方差_134时,右侧变为双变量贯序排列python代码 双变量有序probit_数据集_135.

P117 共轭先验

双变量贯序排列python代码 双变量有序probit_方差_136
其中双变量贯序排列python代码 双变量有序probit_方差_137是一个归一化因子,双变量贯序排列python代码 双变量有序probit_高斯分布_138双变量贯序排列python代码 双变量有序probit_数据集_139中形式一样。易得后验
双变量贯序排列python代码 双变量有序probit_数据集_140
其中双变量贯序排列python代码 双变量有序probit_高斯分布_97被看作是先验伪观测数,每一次观测的统计量双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_142双变量贯序排列python代码 双变量有序probit_高斯分布_143

P117 无信息先验

无信息先验这个东西稍微抽象,偏贝叶斯思维。解决的问题是在无先验时如何选择先验,选择的思想是先验要对后验的影响最小。
如果没有什么信息,我们假定先验是均匀分布,这么做存在两个困难:

  • 在无限连续数域上发散。称之为反常先验分布。但如果后验分布是正常的,那么可以使用这样的分布(称之为广义先验分布)。例如高斯分布,如果假定均值先验是均匀分布,只要观测到一个数据点,那么后验就正常。
  • 如果另一个参数是该参数的非线性变换,那么将不再是均匀分布


尺度参数的无信息先验分布

如果一个分布形式为
双变量贯序排列python代码 双变量有序probit_高斯分布_144
其中双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_145双变量贯序排列python代码 双变量有序probit_方差_146已经归一化。
考虑双变量贯序排列python代码 双变量有序probit_数据集_147其中双变量贯序排列python代码 双变量有序probit_数据集_148. 那么
双变量贯序排列python代码 双变量有序probit_数据集_149
双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码双变量贯序排列python代码 双变量有序probit_方差_02的函数形式相同,所以双变量贯序排列python代码 双变量有序probit_方差_127双变量贯序排列python代码 双变量有序probit_数据集_153应该有相同的先验分布,如果双变量贯序排列python代码 双变量有序probit_数据集_153的先验分布为双变量贯序排列python代码 双变量有序probit_机器学习_155,那么
双变量贯序排列python代码 双变量有序probit_方差_156
双变量贯序排列python代码 双变量有序probit_机器学习_157,解得双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_158,取双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_159,则先验分布为双变量贯序排列python代码 双变量有序probit_方差_160.
这样的一个例子是高斯分布中的标准差
双变量贯序排列python代码 双变量有序probit_机器学习_161
还有一种位置参数的无信息先验分布,可以看原书,推导出的结果是均匀分布。

2.5 无参数概率密度估计

P122 核密度估计和近邻方法

这种估计方法不明确给出概率分布的表达式,而是通过数据进行感知。柱状图其实就是一种无参数的概率密度估计方法。

另外一种常用的双变量贯序排列python代码 双变量有序probit_方差_162估计方法是观察双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码的小邻域。记双变量贯序排列python代码 双变量有序probit_机器学习_28为总样本数,双变量贯序排列python代码 双变量有序probit_高斯分布_165为小邻域内样本数,如果小邻域足够小,认为小邻域内概率不变,则有
双变量贯序排列python代码 双变量有序probit_高斯分布_166

这里如果固定双变量贯序排列python代码 双变量有序probit_数据集_167,则该方法为核密度估计;如果固定双变量贯序排列python代码 双变量有序probit_机器学习_28,则为近邻估计,即找以双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码为中心包含双变量贯序排列python代码 双变量有序probit_高斯分布_165个点的最小超球,当作双变量贯序排列python代码 双变量有序probit_数据集_167.

P125 kNN算法的一种无参解释

在近邻方法当中,如果有多个类,则对于第双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_172类,记样本数为双变量贯序排列python代码 双变量有序probit_高斯分布_173,小邻域内有样本数双变量贯序排列python代码 双变量有序probit_数据集_174,则
双变量贯序排列python代码 双变量有序probit_方差_175
则后验为
双变量贯序排列python代码 双变量有序probit_双变量贯序排列python代码_176
这样,kNN分类就可以解释为是近邻方法中,后验概率最大的类别。

  • 1-NN分类器有一个很有趣的性质:当双变量贯序排列python代码 双变量有序probit_方差_134时,分类错误率不会超过贝叶斯最优分类器错误率的两倍
  • 最优分类器可以理解为是看到了真实后验分布
  • 我记得这个性质是要求概率连续的
  • 可以参考西瓜书P226

参考文献:
[1] Christopher M. Bishop. Pattern Recognition and Machine Learning. 2006