拉丁超立方采样算法
拉丁超立方采样(Latin hypercube sampling,缩写LHS)是一种从多元参数分布中近似随机采样的方法,属于分层采样技术,经常使用于计算机实验或蒙特卡洛积分等。函数
在统计抽样中,拉丁方阵是指每行、每列仅包含一个样本的方阵。好比优化
X | |||
X | |||
X | |||
X |
拉丁超立方则是拉丁方阵在多维中的推广,每一个与轴垂直的超平面最多含有一个样本。spa
假设有个变量(维度),能够将每一个变量分为
个几率相同的区间。此时,能够选取
个知足拉丁超立方条件的样本点。须要注意的是,拉丁超立方抽样要求每一个变量的分区数量
相同。不过,该方法并不要求当变量增长时样本数
一样增长。blog
若所需样本点数量为M,维度/变量数量为N。则能够取第一个维度/变量,分为M个区间,每一个区间将依次产生一个样本点;对于更高维度,则按维度1的样本点次序,随机地分布在该维度上。对于二维状况的拉丁方阵,则有element
X1 | |||
X2 | |||
X3 | |||
X4 |
高维度同理。it
基于优化的均匀采样table
基于优化的均匀采样关键在于定义一个合适的度量来评判采样点的均匀度。class
假设咱们的均匀度定义为变量
其中 xi表示第i个样本点的坐标。那么只须要经过优化算法使得该值更小的一组xi坐标,就是所需的均匀采样的样本点。
在MATLAB中,能够使用fmincon()来进行优化。有意思的是,假如输入的X是做为矩阵的话(好比N * n,N为样本点数量,n 为变量/维度数),在该函数会将矩阵X变为向量X(至关于 X_vec = X_mat(:) ,注意是一列一列地排,即向量最前面是矩阵第一列,而后矩阵第二列)就等同是对一个x序列做的优化。最后输出会从新转换成向量(至关于 X_mat = reshape(X_vec, N, n) or X_mat = reshape(X_vec, [N, n]) )。