1 均匀分布随机数
均匀分布是指整个样本空间中的每一个样本点对应的概率(密度) 都是相等的。 根据样本空间是否连续, 又分为离散均匀分布和连续均匀分布。编程实现均匀分布随机数生成器一般可采用线性同余法(Linear Congruential Generator) 来生成离散均匀分布伪随机数:
得到的是区间[0,m−1]上的随机整数, 如果想要得到区间[0,1]上的连续均匀分布随机数, 用xt除以m即可.
2 采样
通用采样方法或采样策略的主要思想以及具体操作步骤:
方法 | 主要思想 | 具体步骤 | 示意图 |
---|---|---|---|
逆变换采样 | 在函数变换法中, 如果变换关系φ(·)是x的累积分布函数的话, 则得到所谓的逆变换采样(Inverse Transform Sampling) | (1)从均匀分布U(0,1)产生一个随机数ui;(2) 计算 , 其中 是累积分布函数的逆函数。上述采样过程得到的xi服从p(x)分布。 | |
拒绝采样 | 对于目标分布p(x), 选取一个容易采样的参考分布q(x), 使得对于任意x都有 , | ( 1) 从参考分布q(x)中随机抽取一个样本xi。( 2) 从均匀分布U(0,1)产生一个随机数ui,( 3) 如果 , 则接受样本xi ; 否则拒绝, 重新进行步骤( 1) ~( 3) , 直到新产生的样本xi被接受。 | |
重要性采样 | 用于计算函数f(x)在目标分布p(x)上的积分( 函数期望), |
3 马尔可夫蒙特卡洛采样法(MCMC)
MCMC采样法基本思想是: 针对待采样的目标分布, 构造一个马尔可夫链, 使得该马尔可夫链的平稳分布就是目标分布; 然后,从任何一个初始状态出发, 沿着马尔可夫链进行状态转移, 最终得到的状态转移序列会收敛到目标分布, 由此可以得到目标分布的一系列样本。
几种常见的MCMC采样法:Metropolis-Hastings采样法和吉布斯采样法,实际应用中一般会对得到的样本序列进行“burn-in”处理,即截除掉序列中最开始的一部分样本, 只保留后面的样本。
3.1 Metropolis-Hastings采样法
其中红线表示被拒绝的移动(维持旧样本) , 绿线表示被接受的移动(采纳新样本)
对于目标分布p(x), 首先选择一个容易采样的参考条件分布q(x*|x),令:
然后根据如下过程进行采样:
(1) 随机选一个初始样本x(0)。
(2) For t = 1, 2, 3, … :
3.2 吉布斯采样法
每次只对样本的一个维度进行采样和更新。对于目标分布p(x), 其中x是多维向量, 按如下过程进行采样:
(1) 随机选择初始状态 。
(2) For t = 1, 2, 3, … :
如果确实需要产生独立同分布的样本, 可以同时运行多条马尔可夫链, 这样不同链上的样本是独立的; 或者在同一条马尔可夫链上每隔若干个样本才选取一个, 这样选取出来的样本也是近似独立的。
4 贝叶斯网络的采样
贝叶斯网络, 又称信念网络或有向无环图模型。 它是一种概率图模型, 利用有向无环图来刻画一组随机变量之间的条件概率分布关系。
对一个没有观测变量的贝叶斯网络进行采样, 最简单的方法是祖先采样(Ancestral Sampling) , 它的核心思想是根据有向图的顺序, 先对祖先节点进行采样, 只有当某个节点的所有父节点都已完成采样, 才对该节点进行采样。
考虑含有观测变量的贝叶斯网络的采样,
观测变量用斜线阴影表示,最直接的方法是逻辑采样, 还是利用祖先采样得到所有变量的取值。 如果这个样本在观测变量上的采样值与实际观测值相同, 则接受, 否则拒绝, 重新采样。逻辑采样法的采样效率急剧下降, 实际中基本不可用。在实际应用中, 可以参考重要性采样的思想, 不再对观测变量进行采样, 只对非观测变量采样,
5 不均衡样本集的采样
5.1 基于数据处理
方法 | 主要思想 | 优缺点 |
---|---|---|
随机过采样 | 主要思想从少数类样本集Smin中随机重复抽取样本(有放回) 以得到更多样本 | 对少数类样本进行了多次复制, 扩大了数据规模, 增加了模型训练的复杂度, 同时也容易造成过拟合 |
SMOTE算法 | 对少数类样本集Smin中每个样本x, 从它在Smin中的K近邻中随机选一个样本y, 然后在x,y连线上随机选取一点作为新合成的样本(根据需要的过采样倍率重复上述过程若干次) | 可以降低过拟合的风险,但会增大类间重叠度, 并且会生成一些不能提供有益信息的样本 |
Borderline-SMOTE | 只给那些处在分类边界上的少数类样本合成新样本 | |
ADASYN | 给不同的少数类样本合成不同个数的新样本 | |
随机欠采样 | 从多数类样本集Smaj中随机选取较少的样本(有放回或无放回) | 会丢弃一些样本, 可能会损失部分有用信息, 造成模型只学到了整体模式的一部分。 |
Easy Ensemble | 每次从多数类Smaj中上随机抽取一个子集E(/E/≈/Smin/), 然后用E+Smin训练一个分类器; 重复上述过程若干次, 得到多个分类器,最终的分类结果是这多个分类器结果的融合。 | |
Balance Cascade算法 | 级联结构, 在每一级中从多数类Smaj中随机抽取子集E, 用E+Smin训练该级的分类器; 然后将Smaj中能够被当前分类器正确判别的样本剔除掉, 继续下一级的操作, 重复若干次得到级联结构; 最终的输出结果也是各级分类器结果的融合。 | |
基于聚类的采样方法 | 利用数据的类簇信息来指导过采样/欠采样操作 | |
数据扩充方法 | 对少数类样本进行一些噪声扰动或变换( 如图像数据集中对图片进行裁剪、 翻转、 旋转、 加光照等) 以构造出新的样本; | |
Hard Negative Mining | 把比较难的样本抽出来用于迭代分类器。 |
5.2 基于算法处理
可以通过改变模型训练时的目标函数( 如代价敏感学习中不同类别有不同的权重) 来矫正这种不平衡性; 当样本数目极其不均衡时, 也
可以将问题转化为单类学习( one-class learning) 、 异常检测( anomalydetection) 。