Press "Enter" to skip to content

机器学习的采样

采样就是从特定的概率分布中抽取相应样本点的过程。采样在机器学习中有着非常重要的应用:它可以将复杂的分布简化为离散的样本点;可以用重采样对样本集进行调整以更好地后期的模型学习;可以用于随机模拟以进行复杂模型的近似求解或推理。另外,采样在数据可视化方面帮助人们快速、直观地了解数据的结构和特性。

 

1.采样的作用

 

采样的本质是对随机现象的模拟,根据给定的概率分布,来模拟产生一个对应的随机事件。采样可以让人们对随机事件及其产生过程有更直观的认识。

 

采样也可以看做一种非参数模型,通过利用少数的采样点来近似总体分布,并刻画总体分布中的不确定性。采样其实也是一种信息降维,可以起到简化问题的作用。

 

对当前数据进行重采样,可以充分利用已有数据集,挖掘更多信息,如自助法和刀切法。另外,利用重采样技术,可以在保持特定的信息下(目标信息不丢失),有意识的改变样本的分布,从而适应后续模型的训练与学习。

 

很多模型由于结构复杂、含有隐变量的原因导致对应的求解公式很复杂,没有显式解析解,难以进行精确求解或推理。可以使用采样方法进行随机模拟,从而对复杂模型进行近似求解或推理。一般转化为对某些函数在特定分布下的积分或者期望,或者求某些随机变量或参数在给定数据下的后验分布。

 

因此,我们一般会从总体样本中抽取出一个子集来近似总体分布,这个子集被称为“训练集”,然后模型训练的目的就是最小化训练集上的损失函数,训练完成后,需要另一个数据集来评估模型,也被称为“测试集”。

 

采样的一些高级用法,比如对样本进行多次重采样,来估计统计量的偏差与方法,也可以对目标信息保留不变的情况下,不断改变样本的分布来适应模型训练与学习(经典的应用如解决样本不均衡的问题)。

 

2.常见的采样算法

逆变换采样

有的时候一些分布不好直接采样,可以用函数转换法,如果存在随机变量x和u的变换关系:u=ϕ(x),则它们的概率密度函数如下所示:

 

p(u)|ϕ′(x)|=p(x)

 

因此,如果从目标分布p(x)中不好采样x,可以构造一个变换u=ϕ(x),使得从变换后地分布p(u)中采样u比较容易,这样可以通过对u进行采样然后通过反函数来间接得到x。如果是高维空间地随机变量,则ϕ′(x)对应Jacobian行列式。

 

而且,如果变换关系ϕ(·)是x的累积分布函数的话,则就是我们说的 逆变换采样(Inverse Transform Sampling), 我们假设待采样的目标分布的概率密度函数为p(x), 它的累积分布函数为:

 

 

逆变换采样法的过程:

 

 

从均匀分布U(0,1)产生一个随机数 Ui

 

计算逆函数

 

 

来间接得到x

 

 

但并不是所有的目标分布的累积分布函数的逆函数都是可以求解的(or容易计算),这个时候逆变换采样法就不太适用,可以考虑拒绝采样(Rejection Sampling)和重要度采样(Importance Sampling)。

拒绝采样

拒绝采样,也被称为接受采样(Accept Sampling),对于目标分布p(x),选取一个容易采样的参考分布q(x),使得对于任意的x都有:

 

 

其采样过程如下:

 

1)从参考分布q(x)中随机抽取一个样本xi

 

2)从均匀分布U(0,1)产生一个随机ui

 

3)如果 ,则接受样本xi,否则拒绝,一直重复1-3步骤,直到新产生的样本量满足要求。

 

其实,拒绝采样的关键就是为我们的目标分布p(x)选取一个合适的包络函数新知图谱, ,如下图所示的正态分布的函数:

 

重要性采样

另外,很多时候,采样的最终目的不是为了生成样本,而是为了进行一些后续任务,如预测变量值,通常表现为一个求期望的形式。重要性采样就是用于计算函数 f(x) 在目标分布 p(x) 上的积分(即函数期望),即

 

 

3.马尔可夫蒙特卡洛采样法

 

在高维空间中,拒绝采样和重要性采样很难寻找到合适参考分布,而且采样的效率是很低的,这个时候是可以考虑一下马尔科夫蒙特卡洛(Markov Chain Monte Carlo,MCMC)采样法。

 

MCMC采样法主要包括两个MC,即Monte Carlo和Markov Chain。Monte Carlo是指基于采样的数值型近似求解方法,Markov Chain则是用于采样,MCMC的基本思想是:针对待采样的目标分布,构造一个马尔科夫链,使得该马尔科夫链的平稳分布就是目标分布,然后从任何一个初始状态出发,沿着马尔科夫链进行状态转移,最终得到的状态转移序列会收敛到目标分布,由此得到目标分布的一系列样本。

 

MCMC有着不同的马尔科夫链(Markov Chain),不同的链对应不用的采样法,常见的两种就是Metropolis-Hastings采样法和吉布斯采样法。

 

Metropolis-Hastings采样法

吉布斯采样法

 

4.失衡样本的采样

 

我们在实际的建模中总会遇到很多失衡的数据集,比如点击率模型、营销模型、反欺诈模型等等,往往坏样本(or好样本)的占比才千分之几。虽然目前有些机器学习算法会解决失衡问题,比如XGBoost,但是很多时候还是需要我们去根据业务实际情况,对数据进行采样处理,主要还是分两种方式:

 

过采样(over-sampling):从占比较少的那一类样本中重复随机抽样,使得最终样本的目标类别不太失衡;

 

欠采样(under-sampling):从占比较多的那一类样本中随机抽取部分样本,使得最终样本的目标类别不太失衡;

 

参考视频: www.bilibili.com/video/BV1fh…

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注