概率模型
1.概述
我们现在有一个基本问题:
① 假设有两个类
② 假设某样本, 要么
, 要么
求, 前提条件:
我们可以看到上面的这个问题是一个分类问题:
若, 则
若, 则
实际上, 在神经网络中的最后倒数第二层, 经过softmax操作后, 也会输出每个分类的概率, 所以分类模型从某种程度上来说还是挺相似的, 我们现在根据贝叶斯公式来推导一下:
通过贝叶斯公式改写后, 我们可以得到这个式子:
若, 则
若, 则
根据贝叶斯公式的定义, 我们从这个式子中可以看到: 叫做
的先验概率
叫x在
上的似然函数(likelihood)
叫x在
上的后验概率
贝叶斯公式的意义: 在事件x己经发生的条件下,贝叶斯公式可用来寻找导致x发生各种“原因”时 的概率。
对于先验概率的理解, 我们可以理解为他是一种类似常识的东西, 是统计出来的, 例如, 一个人得了病, 这个病的人死亡率是95%, 但是的病的人只有5%, 这里的5%为先验, 这个人死亡的概率是它的后验, 所以我们可以看到, 先验概率是非常非常重要的, 同时我们也要尽可能地保证训练数据和测试数据同分布, 这样预测会更加准确
若不知道先验概率, 则假设所有先验概率一样, 在这个情况下, 分类准则将会改变, 上述的问题可以改写为:
若, 则
若, 则
如何估计 被成为概率密度估计问题, 下面我们会讲一下如何做概率密度的估计
2.朴素贝叶斯分类
首先看一下朴素贝叶斯分类器(Naive Bayesian Classifier)的限制条件:
① 每个维度都是离散的, 也就是说x有有限个值
②x的每个维度都是独立的
我们现在举一个经典的应用例子来讲这个分类过程: 垃圾邮件分类: 输入一个文件d, 输出
训练样本,我们设每个
都是一个单词, 然后很多个单词组成的一个邮件d:
在训练过程中, 我们要学习的是, 翻译成白话就是d属于这两类的概率, 然后我们推一下这个公式:
公式很好理解, 在之前我们做了独立性假设, 所以他是可以转化成连乘的形式, 式(2.2)中, 每个都是一个矩阵
, 然后在这个矩阵里 都是字母, 很多个字母组成了这个单词
下面我们就来求式(2.3)这个式子的每个子项, 实际上就是数数:
现在有一堆垃圾邮件和非垃圾邮件, 我们建立这个模型, 分子是统计 分别在垃圾邮件或非垃圾邮件中出现的次数, 分母是所有垃圾邮件中这个词出现的总次数或所有非垃圾邮件这个词出现的总次数, 这个V代表的是这个(非)垃圾邮件的词表, 也是(非)垃圾词的集合,下面我们求一下先验概率:
然后我们就可以说:
①若, 则
②若, 则
但是有的同学可能会问了, 如果在测试中出现了之前从来没有出现过的词, 最直接的结果就是,整个式子都是0了, 所以我们要对这个式子进行改进:
3.高斯概率密度估计
本节是第二种解决概率密度估计问题的方法, 与正态分布有关, 具体做法是假定样本集符合某一概率分布,然后根据样本集拟合该分布中的参数, 假设样本,
是一维情况的高斯分布, 它的概率密度函数如下:
当x是多维的情况时, 即多维高斯分布的公式:
上面的式子中待求参数为协方差矩阵 ,
是一个
的矩阵,
是
的向量
所以我们的问题转化成了已知, 求
,我们使用极大似然法来求解这个问题:
构造目标函数:
我们可以看到,我们其实要求的是似然函数的连乘,也就是类似式(2.3)的形式, 然后我们每一项都取对数后就变成了相加
我们可以看到极大似然法是待定系数法, 假定:
① 独立同分布
②假定使出现
的概率最大, 意思是说,让每个随机变量都尽可能地贴合这个分布参数, 然后通过待定系数法来求出这个参数
现在把式(3.4)带入目标函数(3.5):
我们的目标就是要求它的最大值, 所以我们对它求偏导,求极值
我们通过上面的矩阵求导,可以看出是所有
的均值, 而且是同一维度的, 我们再来求下一个偏导数, 直接求导不好求, 我们用另一种方法来求:
协方差矩阵有这样的性质, 所以我们用这种方法求出了偏导, 这里用到的矩阵求导, 如果有想深入了解的同学可以看知乎长躯鬼侠的矩阵求导数, 非常系统, 针对机器学习方面也非常够用, 求完了偏导, 我们就求出了似然函数
极大似然法步骤:
①假设X的概率分布的具体形式, 在这个具体形式中有一些特定参数
②用极大似然法构造带有这些特定参数的目标函数
③解②中优化问题获得待求参数
4.混合高斯模型
4.1问题引入
但是, 有些同学已经发现了问题, 就是我们一直假定样本服从高斯分布, 如果它不服从高斯分布, 那么我们将求不出这些特定参数, 所以我们用多个高斯模型组合起来来模拟样本的分布, 所以我们引出混合高斯模型, 解决了单个高斯很难模拟的问题, 因为多个高斯分布有多个峰值, 组合起来就会符合样本的复杂分布
现在要做的就是按照极大似然法步骤, 按部就班地将形式写出来:
①假设形式
上面式子看着挺难的, 实际上我们可以看出来, 实际上就是对多个高斯分布的加权求和, K为高斯分布的个数, 大家可以对照一下式(3.4)的形式, 然后说一下维度的问题, , 式子中的
是一个参数, 不是圆周率那个, 它满足这样的条件:
②极大似然构造目标函数, 估计概率密度:
这些其实就是把上面的式子都带进去, 我们要做的就是求上面的极值:
但是我们如果将这个问题转化成最优化问题时, 我们发现这个问题其实是非凸的, 说人话就是它求不到全局极值, 只能求局部极值
所以我们只能想别的办法, 现在存在的一共有三种方法求极值: 梯度下降, 启发式算法, 和EM算法
4.2EM算法
EM(Expectation-maximization)算法, 也叫期望最大化算法, 现在依然经常被使用, 它对局部极值是可解的, 他的优势有很多, 不需要调任何参数就收敛, 编程简单, 理论优美, EM算法代表的是一类算法, HMM, K-means等算法都属于EM算法, 我们这里只介绍最最经典的模型高斯混合模型的EM算法, 和K-means算法
主要思想: 因为有多个高斯分布, 用EM算法找样本点它是属于哪一个高斯分布, 我们现在就产生了两种想法, 一种是我们可以先随机化高斯分布然后估计X在哪个分布里, 另一种想法是先随机化X然后估计高斯分布的参数
4.3高斯混合聚类
高斯混合聚类就是高斯混合模型的EM算法, 它是一种无监督的算法, 下面来简单画一下这个算法, 假设有一个点x, 先随机化高斯分布的参数, 假设有两个高斯分布
我们在这个图里可以看出来, x点在1号高斯分布处于较高的概率密度, 说明在这个位置, 落在1号高斯分布的点比较多, 所以它属于1号高斯分布的可能性比较大, 比较严谨地说, 有两种判断方式:
①硬判断: P1, P2谁大谁就属于几号分布
②软判断:
然后通过这个来更新分布的参数, 总的说来, 就是不知道样本数据隐含的归属, 就先假定一个归属, 通过这个归属来求分布的参数, 然后不断循环, 很多书上把这个隐含归属的分布参数叫做无法观测的隐变量, 下面我们开始介绍算法具体步骤:
①随机化
②E-step 计算概率
我们要求的是第n个样本落在第k个高斯分布的概率
这个式子实际上就是上面软判断的具体实现, 其中在这里代表着一个先验概率,
为训练样本个数,
为高斯分布的个数, N代表高斯分布的概率密度函数
③M-step 更新参数
根据上面的推导我们可以得到这样的式子:
解释一下这两个式子, 式(4.8)意思是,所有N个样本中有多少个属于第k个高斯分布, 是个小数, 可以理解为期望, 然后所有的高斯分布加到一起是样本总数N
然后我们开始参数的更新:
解释一下上面式子中的参数表示样本属于第k个高斯的概率,
表示第k个高斯的均值,
为样本的值, 进行加权平均后, 得到这个期望, 大家可以类比一下一维高斯分布中的
,
则为第k个高斯分布的协方差矩阵
④回到②直到收敛
4.4K-means聚类
K-均值聚类(K-means clustering)是另一个EM算法的例子, 看名字就可以看出来,它是无监督的方法, 让机器自动分类
下面介绍一下要解决的问题:
输入N个样本, 输出N个样本的类别
, 其中
k指类别数量

我们这里直接用周志华老师书上的图来讲了, k-means的主要思想是, 找中心点, 比如上面的图, 加号那里就是中心点, 我们知道了中心点, 就很容易分类, 离谁近就分给谁就可以了, 所以要求中心点的位置, 我们定义上图中的中心点为, 这个中心点也可以理解为均值, 现在介绍一下K-means的计算步骤:
①随机化
②E-step
这个式子的意思是遍历所有的k找个距离最小的, k是类别, 然后判断它离谁近就分给谁, 双竖线是矩阵的范数也是矩阵的模
③M-step 更新参数
和高斯混合聚类的意义差不多, N个样本有多少个属于第k类, 是第k类样本的均值(期望), 也是中心点
④回到②直到收敛
我们其实很容易证明它收敛, 在证明它收敛之前, 我们可以先思考一个问题:
求一个C, 使最小, 很显然, 当C取均值的时候, 会使它最小, 即
所以,我们如果要证明它收敛, 主要是证明不断被更新的中心点让中心点到样本点的距离更小了, 基于这样的思想, 我们定义了这样的函数:
这个函数的大致意思就是所有中心点到所有样本点的距离的表达, 第②③步都会使E变小, 说明它使单调的, 而E有下界0, 单调有界必收敛, 证明完毕

