采样方法

    • 蒙特卡洛求定积分
    • 直接采样
    • 接受-拒绝采样
    • 重要性采样
    • 吉布斯采样
  • 参考文献

采样方法,在机器学习中被广泛应用;从总体数据中,抽取代表性样本的过程即为采样过程;
根据需要,选择合适的采样方法;另外Gibbs在参数估计的过程中也是被广泛应用;

蒙特卡洛求定积分

1.一个不规则的区域的面积计算;此时,可以通过投点法进行计算: 划定一个区域,然后向区域内投点,落在不规则区域内的点个数,即为其比例;这就是随机模拟的思想;
2.给定一个被积函数,我们很难直接计算其原函数,不能直接通过牛顿莱布尼兹公式进行计算了;此时,我们将被积函数拆分成两个函数 f(x)=g(x)p(x) ,满足 ip(x)=1 即可;

baf(x)dx=bag(x)p(x)dx=E[g(x)]=1ning(xi)

这样变换之后 :定积分问题变成了 采样求期望的过程;
在贝叶斯框架中,我们经常需要计算联合分布(需要求积分)、或者归一化的时候分母计算;


直接采样

直接采样:又称逆采样过程;能够充分保留原始分布的概率特征;
常用于:CDF(累计分布)已知,且有逆函数(解析表达式)的情况;一维的变量
具体地:
1. 已知累积分布F(x),逆函数 F(x) ;
2. 从均匀分布 xU(0,1) 获得一个随机值 u ;
3. 计算 F(u) ,获得 采样点 x ;
4. 重复2,3即可;
采样方法_第1张图片


接受-拒绝采样

直接采样比较简单,但是当逆函数不存在解析解的时候,我们不能进行很好的采样;为此,我们寻找一个简单密度函数PDF,记为 q(x) ,然后使得 kq(x) 尽可能的接近 p(x) (包络起来);当然,越接近越好;这样我们对于 q(x) 直接采样,如果它在接收域内,接受采样点,否则拒绝;
这里 k 的计算方式:

k(q(x)>=p(x)k>=p(x)q(x)k=max{p(x)q(x)}

采样方法_第2张图片
采样方法_第3张图片


重要性采样

接受-拒绝采样:如果 q(x) 寻找的不好的话,拒绝率过高;效率过低;
改进:上式采样的点,全部接受,但是样本点有权重差异;这里的权重可以直接使用 w=p(x)/q(x)
采样方法_第4张图片


吉布斯采样

Gibbs采样适用于高维的情况;
假设:满足马尔科夫链模型,当前状态只受上一时刻的影响;
通过构造细致平衡条件 π=πP , P 是转移矩阵;
这样的话:利用坐标轮换法即可获得一系列的采样点,当收敛之后,我们继续采样,获得所需结果;
这里:我们需要知道条件概率;
采样方法_第5张图片

应用实例:LDA模型
代码:https://github.com/cdfox/gibbs_lda/blob/master/lda.py

参考文献

http://www.jianshu.com/p/3d30070932a8
http://www.cnblogs.com/ywl925/archive/2013/06/05/3118875.html
http://blog.csdn.net/baimafujinji/article/details/53946367

你可能感兴趣的:(机器学习)