精华内容
下载资源
问答
  • 作者:无影随想时间:2016年1月。... 机器学习很多场景中会用到放回采样,比如bagging方法。采样后的数据集会有一些数据重复,一些数据缺失,从$N$个样本采样$K$个样本,不同样本数量的期望为$U(K...

    作者:无影随想 
    时间:2016年1月。 
    出处:https://zhaokv.com/math/2016/01/sample-with-replacement-unique-number.html
    声明:版权所有,转载请注明出处

     

    机器学习很多场景中会用到放回采样,比如bagging方法。采样后的数据集会有一些数据重复,一些数据缺失,从$N$个样本中采样$K$个样本,不同样本数量的期望为$U(K)=N(1-\left(\frac{N-1}{N}\right)^K)$。怎么来的呢?这里给出简单的证明。

    首先,显然有$U(1)=1$;其次,设从$N$个样本中采样$k-1$个样本,不同样本数量的期望为$U(k-1)$,则第$k$个样本是未曾抽到的样本的概率为$1-\frac{U(k-1)}{N}$,所以$U(k)=1+\frac{N-1}{N}U(k-1)$$=1+\frac{N-1}{N}+\left(\frac{N-1}{N}\right)^2+\cdots+\left(\frac{N-1}{N}\right)^{k-1}$,根据等比数列求和公式得$U(K)=N(1-\left(\frac{N-1}{N}\right)^K)$。

    对于一种特殊情况,当$K=N$且$N$足够大时,则有最终不同样本数量是原始样本数量的期望为$(1-\frac{1}{e})$,大约是$\frac{2}{3}$。

    可以通过一段Python程序来验证结论的正确性:

    1 import random, math
    2  
    3 S = set()
    4 N = 10000000
    5 [S.add(random.randint(1,N)) for i in range(N)]
    6 print(len(S), int(N*(1-1/math.e)))

    我得到的输出结果为

    1 (6321214, 6321205)

    当然,你的运行结果可能和上面有所差别。

    转载于:https://www.cnblogs.com/zhaokui/p/5147424.html

    展开全文
  • 这项工作研究了一种生物启发式的微免疫优化算法,以解决一般的单目标非线性约束期望值编程,而无需任何先验分布。 在算法研究中,理论上发展了两个下界样本估计值,以估计个体的经验值。 设计了两种自适应竞赛采样...
  • 蒙特卡洛法(Monte Carlo Method) 常用于计算一些非常复杂无法...其中最关键的步骤是:如何按照指定的概率分布进行样本采样 离散的概率分布用概率质量函数(pmf)表示 连续的概率分布用概率密度函数(pdf)表示 ...

    蒙特卡洛法(Monte Carlo Method)

    常用于计算一些非常复杂无法直接求解的函数期望。即按一定的概率分布中获取大量样本,用于计算函数在样本的概率分布上的期望。比如,抛硬币,做N次实验,统计正面朝上的次数,期望为正面朝上的次数/总次数。

    其中最关键的步骤是:如何按照指定的概率分布\rho (x)进行样本采样

    离散的概率分布用概率质量函数(pmf)表示

    连续的概率分布用概率密度函数(pdf)表示

     

    接受-拒绝采样(Acceptance-Rejection Sampling)

    很多实际问题中,\rho(z)是很难直接采样的,因此,需要借助其他手段来采样。既然\rho(z)太复杂在程序中没法直接采样,那么我设定一个程序可抽样的分布q(z)比如高斯分布,然后按照一定的方法拒绝某些样本,达到接近\rho(z)分布的目的,其中q(z)叫做建议分布(proposal distribution)。

    具体操作如下,设定一个方便抽样的函数q(z),以及一个常量k,使得\rho(z)总在kq(z)的下方,如上图所示。

    • 给定目标分布密度\rho(z)
    • 建议密度q(z)和常数k,使得
      • 对q(z)采样比较容易
      • q(z)的形状接近\rho(z),且有\rho(z)\leqslant kq(z)
    • 通过对q(z)的采样实现对\rho(z)的采样
    • 采样过程为:
      • 产生样本z{_{}0_{}}^{}\sim q(z),和U\sim Uniform[0,1]
      • U\leq \rho(z_{0})/kq(z_{0}),则接收z_{}0
    • 接受的样本服从分布\rho(z),等价于
      • 产生样本z_{0}\sim q(z),和U\sim Uniform[0,1]
      • Y=kq(z_{0})U,若Y\leqslant \rho(z_{0}),则接收z_{}0

    虽然接受-拒绝采样比较简单,但是在高维的情况下会出现两个问题:第一是适合的q(.)分布难以找到,第二是很难确定一个合理的k值。这两个问题会导致高拒绝率,增加无用计算。 

    重要性采样 (Importance Sampling)

    重要性采样的主要思想是通过尺度变换(Change of Measure,CM)来修改决定仿真输出结果的概率测度,使本来发生概率很小的稀有事件频繁发生,从而加快仿真速度,能够在较短时间内得到稀有事件。

    用一个现有的例子说明:

    一个工厂里面,工资有低,中,高三档,分别是100块,200块,300块。其中拿低档工资的工人占60%,拿中档工资的工人占30%,拿高档工资的工人占10%。求该工厂工资的期望。

    一个解决方法是蒙特卡罗估计。即随机对该厂工人构造采样,求均值,结果随着采样数量增加会收敛该式

    \frac{0.6N*100+0.3N*200+0.1N*300}{N}

    接下来,问题改变了。该工厂有一个车间,工人的收入分布有所不同:低档50%,中档30%,高档20%。假设只能从该车间工人中采样,如何得到该厂的工人工资期望。

    如果我们直接从该车间工人中采样取均值,结果是错误的,因为车间工人工资分布与工厂工资分布不同,从车间工人中采样的结果应该收敛到该式

    \frac{0.5N*100+0.3N*200+0.2N*300}{N},显然与上式不同。

    E|f(x)|= \sum_{x}^{ }p(x)f(x)这是定义

    p(x)f(x)=q(x)f(x)\frac{p(x)}{q(x)}显然总可以这么写

    E_{p}|f(x)|= \sum_{x}^{ }p(x)f(x)= \sum_{x}^{ }q(x)|f(x)\frac{p(x)}{q(x)}|=E_{q}|f(x)\frac{p(x)}{q(x)}|

    因此,我们在用来自车间的工人采样时,只需要在工人工资数额前乘上一个权重\frac{p(x)}{q(x)},如对于低档次工资的工人,权重为\frac{0.6}{0.5},中档\frac{0.3}{0.3},高档\frac{0.1}{0.2},把所采工人的工资按权重求均值,就是工厂工人工资的期望值。

    对比两种估计:

    公式一:蒙特卡罗估计,即第一种情况,从x服从p分布中采样求均值

    s_{p}=\frac{1}{n}\sum_{i=1,x\sim p}^{n}f(x^{i})

    公式二:重要性估计,即第二种情况,从x服从q分布中采样,求x服从p分布的均值

    s_{p}=\frac{1}{n}\sum_{i=1,x\sim q}^{n}\frac{p(x^{i})f(x^{i})}{q(x^{i})}

    上面描述了两种从另一个分布获取指定分布的采样样本的算法,对于1)在实际工作中,一般来说我们需要sample的分布都及其复杂,不太可能求解出它的反函数,但它的值也许可以计算。对于2.找到一个适合的q往往很困难,接受概率有可能会很低。

    【疑问】:对于重要性采样,我有个疑问,既然是采样,为何最后没有得到样本,反而去求均值了?

    重要性采样与接受-拒绝采样有异曲同工之妙,接受-拒绝采样时通过接受拒绝方式对通过q(x)得到的样本进行筛选,使得最后的到的样本服从p(x)分布,每个接受的样本没有高低贵贱之分,一视同仁。而重要性采样的思想是,对于通过q(x)得到的样本,我全部接受!全部接受的话会有一个问题,那就是最后样本点分布不能服从p(x)分布,为了校正这个样本全部接受带来的偏差,我们给每个样本附一个重要性权重,比如,对于\frac{p(x0)}{q(x0)}=1的样本,给的权重大一些,\frac{p(x0)}{q(x0)}=0.1的样本,给的权重小一点。

    应当注意的是,图中p(z)与f(z)的关系,p(x)是一种分布,是相对于z轴的采样点而言的,比如在红色的两个驼峰处,z的取点比较多,在其他地方z的取点比较少,这叫样本分布服从于p(z)。对于f(z)是一种映射关系,将z值映射到其他维度。比如我们熟悉的y=f(x),将x映射到y,我们所说的求均值就是求f(z)得均值。

    马尔可夫链(Markov Chain)

    马尔可夫链的数学定义:P(X_{t+1}=x|X_{t},X_{t-1},...)=P(X_{t+1}=x|X_{t})

    写不完了,日后再更

    展开全文
  • Hadoop简单随机采样

    2019-05-23 20:54:17
    基于Hadoop的两种采样模式:百分比采样和N样本采样。 1.随机百分比采样: 从样本中随机抽取一个比例的样本,一种方法是对每条数据简单地使用随机数生成器来产生[0,1]上均匀分布的随机数,并将其与期望的阈值大小...

    (注:内容来自《Hadoop数据分析》)

    基于Hadoop的两种采样模式:百分比采样和N样本采样。

    1.随机百分比采样:

    从样本中随机抽取一个比例的样本,一种方法是对每条数据简单地使用随机数生成器来产生[0,1]上均匀分布的随机数,并将其与期望的阈值大小进行比较,小于阈值的留下,大于阈值的跳过。

    mapper.py

    import random
    # class Mapper可参考上一篇博客
    class PercentSampleMapper(Mapper):
    
        def __init__(self,*args,**kwargs):
            self.percentage = kwargs.pop("percentage")
            super(PercentSampleMapper,self).__init__(*args,**kwargs)
    
        def map(self):
            for _, val in self:
                if random.random() < self.percentage:
                    self.emit(None,val)
        
        if __name__=='__main__':
            mapper = PercentSampleMapper(sys.stdin,percentage=0.2)
            mapper.map 

    接着,使用一个恒等reducer合并数据

    2.随机抽取固定容量样本:

    仍然对每条数据产生一个[0,1]上的均匀分布,然后通过堆维护一个容量为n的样本。

    import random,heapd
    
    class SampleMapper(Mapper):
    
        def __init__(self,n,*args,**kwargs):
            self.n = n
            super(SampleMapper,self).__init__(*args,**kwargs)
        
        def map(self):
            heap = [0]*self.n
    
            for value in self:
                #heappushpop 如存在random.random()>heap中的某值,则将heap中最小值弹出,并将random.random()随机插入到heap
                heapd.heappushpop(heap,(random.random(),value))
                for item in heap:
                    self.emit(None,item)
    
    class SampleReducer(Mapper):
        
        def __init__(self,n,*args,**kwargs):
            self.n = n
            supper(SampleReducer,self).__init__(*args,**kwargs)
    
        def reduce(self):
            heap = [0]*self.n
    
            for _,value in self:
                for value in values:
                    heapd.heappushpop(heap,make_tuple(value))
    
            for item in heap:
                self.emit(None,item[1])

    该方法获得的样本数是mapper的数量的n倍,通过单个reducer对数据重新抽取。

    展开全文
  • 几种采样方法

    2020-03-26 17:35:22
    采样的几种方法拒绝采样蒙特卡罗法采样Metropolis-...顾名思义,在采样过程中,我们会接受一些样本,也会拒绝一些样本,使得样本最终的分布符合期望。 假设原始分布p(x)p(x)p(x)难以直接采样,我们先将p(x)p(x)p(...


    采样是指通过模拟的方式来采集符合某个分布p(x)p(x)的一些样本,一般来说,要采集的分布比较复杂。

    拒绝采样

    拒绝采样,也叫接受-拒绝采样。顾名思义,在采样过程中,我们会接受一些样本,也会拒绝一些样本,使得样本最终的分布符合期望。

    假设原始分布p(x)p(x)难以直接采样,我们先将p(x)p(x)归一化,得到p^(x)\hat{p}(x)。然后引入一个比较容易采样的分布q(x)q(x)和一个常数kk,使得kq(x)kq(x)可以覆盖p^(x)\hat{p}(x),即kq(x)>p^(x)kq(x)>\hat{p}(x)q(x)q(x)为提议分布。

    比如我们要采集一个分布p(x)=1212πσexp(x0.3)22σ2+3212πσexp(x0.8)22σ2p(x)=\frac{1}{2}\frac{1}{\sqrt{2\pi\sigma}}\exp{-\frac{(x-0.3)^2}{2\sigma^2}}+\frac{3}{2}\frac{1}{\sqrt{2\pi\sigma}}\exp{-\frac{-(x-0.8)^2}{2\sigma^2}},其归一化后多了一个系数10.632455\frac{1}{0.632455}。我们选择正态分布q(x)=12πσexp(x0.6)220.42q(x)=\frac{1}{\sqrt{2\pi\sigma}}\exp{-\frac{(x-0.6)^2}{2*0.4^2}}为提议分布,kk取为10。如下图所示:
    在这里插入图片描述
    观测p^(x)\hat{p}(x)的分布,我们在0到1.2之间根据提议分布抽取样本x^\hat{x},计算α(x^)=p^(x^)kq(x^)\alpha(\hat{x})=\frac{\hat{p}(\hat{x})}{kq(\hat{x})},并以α(x^)\alpha(\hat{x})的概率接受这个样本。

    def normal(x,u,sigma):
      p=np.exp(-(x-u)**2/(2*sigma**2))/(np.sqrt(2*np.pi)*sigma)
      return p
      
    def f1(x):
      sigma=0.1  
      return (0.5/np.sqrt(2*np.pi*sigma)*np.exp(-(x-0.3)**2/2.0/sigma**2)+1.5/np.sqrt(2.0*np.pi*sigma)*np.exp(-(x-0.8)**2/2.0/sigma**2))/0.632455
      
    x_t=[0]
    for t in range(100000):
      
      x_=np.random.normal(0.6,0.4)
      alpha=f1(x_)/5/normal(x_,0.6,0.4)
      u=np.random.uniform(0,1)
      if u<alpha:
        x_t.append(x_)
    

    最终采样结果如下:
    在这里插入图片描述

    拒绝采样法的难点在于:如何找到合适的提议分布,尤其是当样本维度很高的时候。

    蒙特卡罗法采样

    在高维空间中,蒙特卡罗法是一种更好的采样方法。其核心思想是将采样过程看作一个马尔可夫链。x1,x2,...,xt1,xt,xt+1,...x_1, x_2, ..., x_{t-1}, x_t, x_{t+1}, ....
    t+1t+1次的采样依赖于第tt次抽取的样本xtx_t和状态转移分布q(xxt)q(x|x_t)。如果这个马尔可夫链的平稳分布为p(x)p(x),那么在状态平稳时抽取的样本就服从p(x)p(x)的分布。

    Metropolis-Hastings算法

    Metropolis-Hastings算法简称MH算法,是一种常用的蒙特卡罗采样法。

    在MH算法中,假设第tt次采样的样本为xtx_t,首先根据提议分布q(xxt)q(x|x_t)抽取一个样本x^\hat{x},并以概率A(x^,xt)A(\hat{x},x_t)来接受x^\hat{x}作为第t+1t+1次的采样样本xt+1x_{t+1}
    A(x^,xt)=min(1,p(x^)q(xtx^)p(xt)q(x^xt))A(\hat{x},x_t)=\text{min}(1,\frac{p(\hat{x})q(x_t|\hat{x})}{p(x_t)q(\hat{x}|x_t)})
    这里相当于对马尔可夫链的状态转移概率做了修正:q(x^xt)=q(x^xt)A(x^,xt)q'(\hat{x}|x_t)=q(\hat{x}|x_t)A(\hat{x},x_t)
    修正后的马尔可夫链可达平稳状态,且平稳分布为p(x)p(x)
    其证明可以参考:《神经网络与深度学习》,邱锡鹏,2019 中关于采样的章节。

    我们在接受-拒绝采样中举的例子,也可以用MH方法来进行采样。

    ################ M-H sampling
    x_m=[0]
    for t in range(200000):
      x_=np.random.normal(x_m[-1],0.1)
    #  alpha=f1(x_)*normal(x_,x_m[-1],0.1)/f1(x_m[-1])/normal(x_m[-1],x_,0.1)
      alpha=f1(x_)*normal(x_m[-1],x_,0.1)/f1(x_m[-1])/normal(x_,x_m[-1],0.1)
    #  print(normal(x_m[-1],x_,1)/normal(x_,x_m[-1],1))
      alpha=min(alpha,1)
      u=np.random.uniform(0,1)
      if u<alpha:
        x_m.append(x_)
    

    结果如下:
    在这里插入图片描述

    展开全文
  • 目录概率论基础蒙特卡洛积分重要性采样参考概率论基础本文先补充两条基础的概率论公式,方便大家更好地看懂全文假设某一连续型随机变量的样本空间为,其概率密度分布函数为,则其数学期望为:若另一连续随机变量Y满足Y =...
  • 随机采样-mcmc,拒绝采样,转载,

    千次阅读 2018-01-18 10:22:37
    mcmc只关注,概率比较大的那些样本,对于计算期望来说影响不大,而且可以用来估计参数。。 根据吉布斯采样,也不一定需要知道联合分布,只需要知道条件概率即可。 采样样本也可以作为样本计算统计量。 ...
  • 数据采样问题

    千次阅读 2019-04-23 17:46:00
    实际应用中通过采样,对难以确定精确解的模型做近似推断。本质上,我们想要得到后验概率分布,然后计算期望。但往往计算期望时,积分操作比较困难。简单地说,就是在概率密度p(x)...通过从分布p(x)中采样x,计算样本...
  • 1. 前言1.1. 采样的用途概率推断在...假设我们要求f(x)对p(x)的期望,如式(1)所示,一种简单的方法就是,先得到从p(x)中采样样本点,然后进行求平均,那么就得到了期望的近似估计,当采样点足够多时,结果会无限的...
  • 采样的理解

    2020-10-27 22:29:45
    1. 什么是采样 我们知道了一个变量的分布,要生成一批服从这个分布的样本,这个过程就叫...其实采样不只是可以用来估计分布参数,还有其他用途,比如说用来估计分布的期望、高阶动量等。其实在机器学习中,采样的主要
  • 吉布斯采样(Gibbs sampling)是统计学中用于马尔科夫蒙特卡洛(MCMC)的一种算法,用于在难以直接采样时从某一多变量概率分布中近似抽取样本序列。该序列可用于近似联合分布、部分变量的边缘分布或计算积分(如某...
  • MCMC(蒙特卡洛采样

    2021-01-04 13:31:14
    1.MCMC是一种随机性近似推断方法,核心思想是求复杂概率分布下的期望值2.采样样本应该趋于高概率区域以及样本之间相互独立3.如果p(z)分布简单,可以通过概率分布采样得到所需要的样本...
  • 1. 前言1.1. 采样的用途概率推断在...假设我们要求f(x)对p(x)的期望,如式(1)所示,一种简单的方法就是,先得到从p(x)中采样样本点,然后进行求平均,那么就得到了期望的近似估计,当采样点足够多时,结果会无限的...
  • 比如我们知道样本z的后验分布p(z|x),我们经常会有一个需求,得到目标函数f(x)在概率分布上的期望,通常这个期望是很难计算的,我们可以根据p(z|x)采用N个样本,分别为,当N足够大我们便可以得到该期望值。如下式: ...
  • PRML读书笔记——采样方法

    千次阅读 2017-04-15 16:06:09
    我们假设,使⽤解析的⽅法精确地求出对应期望是⼗分...因此,我们采用采样的方法抽取出样本,计算出对应的值 本章的采样方法主要包括:重要采样、拒绝采样、蒙特卡罗采样、吉布斯采样、切片采样和混合蒙特卡罗采样
  • 怎么在高斯分布中采样得到向量python[把你所有的心事都告诉小编小编虽然不会说但小编听得懂]极限定义:设{Xn}为一无穷数列,如果存在常数a对于任意给定的正数ε(不论它多么小),总存在正整数N,使得当n>...
  • 基于采样的近似推断

    2020-02-21 20:01:46
    随机采样即给定概率密度函数p(x)p(x)p(x)中抽取出符合其概率分布的样本。 假设我们要推断的概率分布为p(x)p(x)p(x),并基于p(x)p(x)p(x)来计算函数f(x)f(x)f(x)的期望 为了计算上式,我们可以通过数值解的方法来近似...
  • 应用场所 粒子滤波:针对非线性、非...目标:计算服从于target PDF分布的函数f(z)f(z)f(z)的期望,通过应用Monte Carlo方法在概率分布中抽取N个样本,则 E[f(z)]≈1N∑i=1Nf(zi)E[f(z)] \approx\frac{1}{N}\sum_{i=1}^{
  • 假设某一连续型随机变量XXX的样本空间为DDD,其概率密度分布函数为p(x)p(x)p(x),则其数学期望为:E(X)=∫Dxp(x)dxE(X) = \int_D xp(x)dxE(X)=∫D​xp(x)dx 若另一连续随机变量Y满足Y = f(X),则Y的数学期望为:E(Y)=∫Df...
  • 采样法(Sampling Method)是通过模拟的方式来采集符合某个分布p(x)的一些样本,并通过这些样本来估计和这个分布有关的运算,比如期望等。 采样法(Sampling Method),也叫蒙特卡罗方法(Monte Carlo Method)或...
  • 吉布斯采样(英语:Gibbs sampling)是统计学中用于马尔科夫蒙特卡洛(MCMC)的一种算法,用于在难以直接采样时从某一多变量概率分布中近似抽取样本序列。该序列可用于近似联合分布、部分变量的边缘分布或计算积分...
  • 机器学习模型在训练数据集上表现出的误差叫做训练误差,在任意一个测试数据样本上表现出的误差的期望值叫做泛化误差。  欠拟合under-fitting:机器学习模型无法得到较低训练误差。 过拟合over-fitting:机器学习...
  • 当我们已知模型的存在,想知道参数的时候我们就可以通过采样的方式来获得一定数量的样本,从而学习到这个系统的参数。变分则是在采样的基础上的一次提升,采用相邻结点的期望。这使得变分往往比采样算法更高效:用一...
  • 一:RANSAC随机采样一致性 ...重复过程,迭代末尾依据期望的误差率、best_ninliers、总样本个数、当前迭代次数计算一个结束评判因子,其中inliers个数最多时对应的模型参数为最佳模型参数。 缺点:...
  • 采样方法【1】

    2015-08-25 17:54:13
    对于大多数的概率模型,直接推导求取它的参数,如均值,积分等,通常是很...但是如果我们可以从模型的概率分布采样到足够多的数据z(l),l=1,...,Lz^{(l)},l=1,...,L,根据大数定理,期望可以用样本的均值来逼近 E(f^)=1
  • PRML读书笔记 第十一章 采样方法(1)基本采样算法标准概率... 整本书的核心都是在知道样本以及假设先验概率分布的情况下,求后验概率分布问题,后验概率的主要用处则是用来计算期望,所以这里的话E[f]=∫f(z)p(...
  • 【LDA学习系列】Gibbs采样python代码

    千次阅读 2018-05-18 15:41:48
    Gibbs采样算法流程:从已知分布采样,前提是...@attention: Gibbs Sampling利用条件概率产生符合分布的样本,用于估计分布的期望,边缘分布;是一种在无法精确计算情况下,用计算机模拟的方法。 ''' import rand...
  • 来自|PaperWeekly作者|邓妍蕾学校|...日常中我们会用采样的方法采集样本,进行近似的数值计算,比如计算样本均值,方差,期望。虽然许多常见的概率密度函数(t 分布,均匀分布,正态分布),我们都可以直接在 ...
  • 原文链接 SMOTE: Synthetic Minority Over-sampling Technique 解决的问题 很多算法都有一个默认的假设:样本中各个类别的...如果通过简单复制样本没有获得期望结果时,不妨试试这个方法。 伪码 输入:同一类别的所...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

期望样本采样