哈尔滨工业大学计算机学院-模式识别-课程总结(二)-概率密度函数的参数估计

1. 概率密度函数的参数估计

  • 前文讲到了利用贝叶斯决策理论构建贝叶斯分类器,初学者难免会有疑问,既然已经可以通过构建贝叶斯分类器的方法处理分类问题,那为什么还要学习本章节内容?
  • 事实上,贝叶斯分类器的缺可以通过计算先验概率与类条件概率来设计最优分类器。但是对于大多数实际问题,我们往往无法知道这两个概率的具体信息,其中先验概率往往比较容易计算,类条件概率很难获取。如何计算类条件概率,便是本章要进行讲述的内容,
    • 这里举一个例子,解释为什么先验概率比较容易获取。如果100万个人中有60万男40万女,可以粗略认为男性类别的先验概率为60%。
    • 标题中概率密度函数,指的就是类条件概率的概率密度函数。对于此函数的估计有两种方法,本章介绍参数估计方法,不介绍非参数估计方法。在授课过程中,老师只是着重强调了非参数估计方法中的近邻分类器,由于该分类器比较简单,便不做展开。 读者只需要了解如下内容即可:
      • 非参数化方法不需要对类条件概率密度的分布形式做出假设,而是直接利用训练样本集合对概率密度函数做出估计,也就是省略概率估计,直接计算后验概率,即设计判别函数。能够处理任意概率分布,不必假设形式。K近邻法就是直接估计每个类别的后验概率。

2. 最大似然估计

  • 最大似然估计把待估计的参数看作是确定性的量,只是取值未知,最佳估计就是使得产生已观测到样本(即训练样本)的概率为最大的那个。
  • 基于独立同分布假设,样本集合\(D\)出现的概率为:

    \[p ( D | \mathbf { \theta } ) = p \left( \mathbf { x } _ { 1 } , \mathbf { x } _ { 2 } , \cdots , \mathbf { x } _ { n } | \mathbf { \theta } \right) = \prod _ { i = 1 } ^ { n } p \left( \mathbf { x } _ { i } | \mathbf { \theta } \right)\]

  • 对数似然函数将乘法变成加法,可以避免出现累乘的概率值越来越小的情况:

    \[l ( \mathbf { \theta } ) = \ln p ( D | \mathbf { \theta } ) = \sum _ { i = 1 } ^ { n } \ln p \left( \mathbf { x } _ { i } | \mathbf { \theta } \right)\]

  • 就对数似然函数而言,最大似然估计便是寻找一个最优参数,使得似然函数\(l(\theta)\)值最大:

    \[\hat { \mathbf { \theta } } = \arg \max l ( \mathbf { \theta } )?\]

  • 当概率密度函数为正态分布形式时,高斯分布(也就是正态分布)参数的最大似然估计结果为:

    \[\hat { \mathbf { \mu } } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \mathbf { x } _ { i }\]

    \[\mathbf { \Sigma } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( \mathbf { x } _ { i } - \hat { \mathbf { \mu } } \right) \left( \mathbf { x } _ { i } - \hat { \mathbf { \mu } } \right) ^ { t }\]

    多变量高斯分布的参数为均值向量和协方差矩阵,均值向量的维度即多变量的个数。只要确定了均值向量与协方差矩阵,高斯分布的函数形式也就确定了。

2.1 高斯混合模型GMM

  • GMM采用混合密度模型的思想:一个复杂的概率密度分布函数可以由多个简单的密度函数混合构成:

    \[p ( \mathbf { x } | \mathbf { \theta } ) = \sum _ { i = 1 } ^ { M } a _ { i } p _ { i } ( \mathbf { x } | \mathbf { \theta } _ { i } ) , \quad \sum _ { i = 1 } ^ { M } a _ { i } = 1\]

    \(M\)是简单密度函数的个数,\(a_i\)可以看作是第\(i\)个简单密度函数的先验概率。

  • 因此,GMM的形式化数学公式如下所示:

    \[p ( \mathbf { x } ) = \sum _ { i = 1 } ^ { M } a _ { i } N \left( \mathbf { x } ; \mathbf { u } _ { i } , \mathbf { \Sigma } _ { i } \right)\]

    在应用GMM做多个类别分类问题时(one vs rest),每个GMM与每个类别对应(注意区分,是GMM的个数与类别个数相对应,而不是GMM中的简单高斯模型个数),该函数可以看作是该模型所对应类别的判别函数。

  • GMM的所有参数为:

    \[\mathbf { \theta } = \left( a _ { 1 } , a _ { 2 } , \cdots , a _ { M } , \boldsymbol { \mu } _ { 1 } , \mathbf { \Sigma } _ { 1 } , \cdots , \boldsymbol { \mu } _ { M } , \mathbf { \Sigma } _ { M } \right)\]

  • 高斯混合模型采用EM算法进行训练,具体学习过程在实验三中介绍。

2.2 期望最大化算法EM

  • EM算法的应用可以分为两个方面:

    1.训练样本中某些特征丢失情况下,分布参数的最大似然估计。

    2.对某些复杂分布模型假设,最大似然估计很难得到解析解时的迭代算法。

  • 样本集:令\(X\)是观察到的样本数据集合,\(Y\)是丢失的数据集合,完整的样本集合\(D = X U Y\)

    \(Y\)指的是丢失的某些维度的特征,举例如下:在高斯混合模型中,可以认为每个高斯模型的先验概率参数\(a\),就是丢失的特征。

  • 似然函数:在给定参数\(\theta\)时,似然函数可以看作\(Y\)的函数:

    \[l ( \mathbf { \theta } ) = l ( \mathbf { \theta } | D ) = l ( \mathbf { \theta } | \mathbf { X } , \mathbf { Y } ) = \ln p ( \mathbf { X } , \mathbf { Y } | \mathbf { \theta } )\]

  • 由于\(Y\)未知,因此我们需要寻找到一个在\(Y\)的所有可能情况下,平均意义下的似然然函数最大值:

    E步:\(\begin{aligned} Q ( \mathbf { \theta } | \mathbf { \theta } ^ { i - 1 } ) & = E _ { \mathbf { Y } } ( l ( \mathbf { \theta } | \mathbf { X } , \mathbf { Y } ) | \mathbf { X } , \mathbf { \theta } ^ { i - 1 } ) \\ & = E _ { \mathbf { Y } } ( \ln p ( \mathbf { X } , \mathbf { Y } | \mathbf { \theta } ) | \mathbf { X } , \mathbf { \theta } ^ { i - 1 } ) \end{aligned}\)

    M步: \(\mathbf { \theta } ^ { i } = \arg \max _ { \mathbf { \theta } } \mathcal { Q } ( \mathbf { \theta } | \mathbf { \theta } ^ { i - 1 } )\)

  • EM算法通过计算未知特征平均意义下的似然函数最大值,得到最优参数。

    EM算法具有收敛性,此处最优只能保证收敛于局部最优,不一定是全局最优。

3. 贝叶斯估计

  • 贝叶斯估计把待估计的参数看成是符合某种先验概率分布的随机矢量。
  • 对样本D进行观测的过程,就是把先验概率密度转化为后验概率密度,这样就利用样本信息修正了对参数的初始估计值。
    • 利用训练样本集合估计出参数矢量的分布,而在识别时需要考虑所有可能参数产生待识别样本的平均值,也可以是积分形式。
    • 优点是在小样本集条件下的保持较高估计准确率。
  • 贝叶斯估计的识别过程是类条件概率密度的计算:

    \[p ( \mathbf { x } | D ) = \int p ( \mathbf { x } , \mathbf { \theta } | D ) d \mathbf { \theta } = \int p ( \mathbf { x } | \mathbf { \theta } ) p ( \mathbf { \theta } | D ) d \mathbf { \theta }\]

  • 学习过程是参数后验概率密度的估计:

    \[p ( \mathbf { \theta } | D ) = \frac { p ( D | \boldsymbol { \theta } ) p ( \boldsymbol { \theta } ) } { \int p ( D | \mathbf { \theta } ) p ( \mathbf { \theta } ) d \mathbf { \theta } } = \frac { \prod _ { i = 1 } ^ { n } p \left( \mathbf { x } _ { i } | \mathbf { \theta } \right) p ( \mathbf { \theta } ) } { \int \prod _ { i = 1 } ^ { n } p \left( \mathbf { x } _ { i } | \mathbf { \theta } \right) p ( \mathbf { \theta } ) d \mathbf { \theta } }\]

原文地址:https://www.cnblogs.com/szxspark/p/9926397.html

时间: 2024-10-08 04:42:26

哈尔滨工业大学计算机学院-模式识别-课程总结(二)-概率密度函数的参数估计的相关文章

哈尔滨工业大学计算机学院-模式识别-课程总结-贝叶斯决策理论(一)

一.贝叶斯决策理论 贝叶斯决策理论是解决分类问题的一种基本统计途径,其出发点是利用概率的不同分类决策,与相应决策所付出的代价进行折中,它假设决策问题可以用概率的形式描述,并且假设所有有关的概率结构均已知. 二.各种概率及其关系 先验概率: \[P(\omega_i)\] 后验概率: \[P(\omega_i | x)\] 类条件概率: \[P(x |\omega_i )\] 贝叶斯公式: \[P \left( \omega _ { i } | \mathbf { x } \right) = \f

哈尔滨工业大学计算机学院-模式识别-课程总结(三)-线性判别函数

1. 线性判别函数 本章介绍的线性判别函数都归属于判别式模型,即对于分类问题,根据判别函数\(g(x)\)的取值进行判断,比如正数归为第一类,负数与零归为第二类.关于判别式模版与生成式模型的区别可以阅读我以前的[博客])(https://www.cnblogs.com/szxspark/p/8426850.html),最典型的生成式模型是贝叶斯分类器,这个在之前的博客中也有介绍. 在介绍具体算法之前,先了解一下线性判别函数的基本概念. 1.2 线性判别函数基本概念 对于线性可分情况,线性判别函数

南理工计算机学院研究生课程的评价和反思(研一上)

机器学习(英文):很坑,课程安排不合理.应该把5/6的时间用于讲各种模型,1/6的时间用于展示,否则根本学不到啥东西.容量方面差太多了,svm,决策树,gmm 根本就没讲到. 数据挖掘:大作业不能用python很恶心.缺少工程方面的讲解.其他还好. 人工智能:过度拘泥于课本,讲了一些曾经有用但现在被推翻的东西.讲了强化学习的模型的很多侧面,但不成体系,看完之后并不能亲手做一个强化学习项目. 神经计算:讲了微分流形,这玩意儿不属于神经网络,难以理解,效果还没rbm好.其它还好. 形式语言:缺少工程

字符串去特定字符-2009年哈尔滨工业大学计算机研究生机试真题

题目描述: 输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果. 输入: 测试数据有多组,每组输入字符串s和字符c. 输出: 对于每组输入,输出去除c字符后的结果. 样例输入: heallo    a 样例输出: hello 解题代码: 解法1:使用两个数组, 第二个数组存储去掉特定字符的字符串 #include <stdio.h> int main(){ char arr[200]; char arrNew[200]; char focus; while (scanf("%

找x-2010年哈尔滨工业大学计算机研究生机试真题

题目描述: 输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1). 输入: 测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x. 输出: 对于每组输入,请输出结果. 样例输入: 2    1 3    0 样例输出: -1 解题代码: #include <stdio.h> int main(){ int n; int array[200]; while (scanf("%d"

2010年哈尔滨工业大学计算机研究生机试真题

题目连接:点击打开链接 解题思路: 简单暴力 完整代码: #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> using namespace std; int n; int a[300]; bool check(int key) { set<int> s; s.clear(); for(int i =

2011年哈尔滨工业大学计算机研究生机试真题

题目连接:点击打开链接 解题思路: 暴力 完整代码: #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> using namespace std; const int INF = 1000000000; string s; int main() { #ifdef DoubleQ freopen("in.t

2012年哈尔滨工业大学计算机研究生机试真题

题目连接:点击打开链接 解题思路: 模拟 完整代码: #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> using namespace std; const int INF = 1000000000; const int maxn = 10001; char a[maxn] , b[maxn]; void MyS

判断三角形类型-2009年哈尔滨工业大学计算机研究生机试真题

题目描述: 给定三角形的三条边,a,b,c.判断该三角形类型. 输入: 测试数据有多组,每组输入三角形的三条边. 输出: 对于每组输入,输出直角三角形.锐角三角形.或是钝角三角形. 样例输入: 3 4 5 样例输出: 直角三角形 解题代码: #include <stdio.h> int main(){ int arr[3]; int temp; while (scanf("%d%d%d",&arr[0],&arr[1],&arr[2] ) != EO