【采样算法】拉丁超立方采样

  • 简介
  • 过程
    • 一维拉丁超立方采样
    • 多维拉丁超立方采样
  • python编程
  • 结论
  • 参考

简介

LHS(Latin Hypercube Sampling)是一种分层采样方法,相较于蒙特卡洛采样,减少了迭代次数。其背后的概念并不复杂,即采用均匀采样的方法对变量进行采样,然后将这些变量的随机组合集用于目标函数的一次计算。先分区再在每个分区内均匀采样可以使采集的样本均匀分布在整个待抽样区域。

过程

一维拉丁超立方采样

一维拉丁超立方体抽样将累积密度函数(cdf)分成n个相等的分区,然后在每个分区中选择一个随机的数据点。

例如,假设你需要一个包含100个数据点的随机样本。首先,将cdf分成100个等距分区。如果你的分布从0开始,以k结束,那么第一个数据点将在(0,k/100)之间的区间中选择,第二个数据点来自(k/100, 2k/100),第三个数据点来自(2k/100, 3k/100),依此类推。最后得到100个不同的数据点。

多维拉丁超立方采样

二维采样没有变得更加复杂,通常是用软件来执行的。假设你的两个变量x1和x2是独立的,你按照一维方法分别得到x1和x2的一维样本。一旦你有了两个样本列表,再将它们随机组合成二维的随机组合集。

对于n维拉丁超立方体采样,使用相同的方法。

python编程

from pyDOE import *lhs(n, [samples, criterion, iterations])

其中

  • n代表因子数,即变量数,即维数。
  • samples代表对每个因子的采样数(默认值为n)
  • criterion代表在每个区间内的采样方式(默认为none,即在区间内简单随机采样)
    • “center”或“c”:将采样间隔内的点居中
    • “maximin” or “m”:最大化点与点之间的最小距离,但将点置于其区间内的随机位置
    • “centermaximin” or “cm”:与“maximin”相同,但在区间内居中
    • “correlation” or “corr”:最小化最大相关系数

输出设计为将所有变量的范围设定为[0,1],然后自行根据用户的需要进行转换。pyDOE2是仍在维护的pyDOE分支。它的一个改进是可以将一个随机的种子直接传递给lhs。

结论

拉丁超立方体抽样能够减少蒙特卡罗模拟所需的运行次数。一些模拟可能会减少50%的计算来创建一个平滑的输出分布。该过程快速、简单且易于实现。有些人认为现代计算机已经使LHS过时了,但它仍然被广泛使用。尽管它在分析上的差异不像在计算机系统运行缓慢的时候那么大,但它仍然可以在给定任何处理时间的情况下得到更精确的结果(就真正的可变性而言)。

参考

https://mathieu.fenniak.net/latin-hypercube-sampling/
https://www.statisticshowto.com/latin-hypercube-sampling/
https://pythonhosted.org/pyDOE/randomized.html
https://stackoverflow.com/questions/26137195/latin-hypercube-sampling-with-python/34924681#

【采样算法】拉丁超立方采样相关推荐

  1. Matlab 拉丁超立方采样lhsdesign函数、lhsnorm函数介绍

    本文主要介绍了Matlab自带的两个拉丁超立方抽样的两个函数--lhsdesign函数.lhsnorm函数,拉丁超立方抽样的原理后面有时间写一篇文章介绍一下 lhsdesign函数 X = lhsde ...

  2. 采用拉丁超立方采样的电力系统概率潮流计算 拉丁超立方采样属于分层采样,是一种有效的用采样值反映随机变量的整体分布的方法

    采用拉丁超立方采样的电力系统概率潮流计算 (自适应核密度估计,自适应带宽核密度估计) 拉丁超立方采样属于分层采样,是一种有效的用采样值反映随机变量的整体分布的方法. 其目的是要保证所有的采样区域都能够 ...

  3. 基于最大最小思想优化拉丁超立方采样

    由于普通的拉丁超立方采样,样本点序列是一个随机的排列,就会出现如下分布状况,虽然采样点满足了空间投影均匀的特性,但它的空间填充效果并不好. 根据参考文献的那篇论文提出的最大最小方法优化普通拉丁超立方采 ...

  4. 拉丁超立方采样的思想和代码

    思想 思想很简单,就是假设你要从一个超维空间(维度=Dim)采样N个样本,那么拉丁超立方采样就是这样做的.分别在每个维度采样N个值(你可以理解成把单维度(一条线)分成N份,在每个范围都随机取一个值出来 ...

  5. LHS拉丁超立方采样matlab程序,对于均匀分布与正态(高斯)分布的变量进行拉丁超立方采样

    1.对正态(高斯)分布的变量进行拉丁超立方采样 clc clear all close all cst_Mu_Sigma = load( 'cst_Mu_Sigma.dat'); Mu = cst_M ...

  6. Matlab 采用正态分布和韦布尔分布描述风电,光伏和负荷概率分布,采用拉丁超立方采样抽样生成大量场景

    [1]关键词:场景生成:场景削减:概率分布:随机优化 [2]参考文献:<一种在微网动态经济调度中考虑风电随机性的方法> [3]主要内容:Matlab 采用正态分布和韦布尔分布描述风电,光伏 ...

  7. Python 拉丁超立方采样

    #coding=utf-8 from __future__ import division __author__ = 'wanghai' import numpy as np from matplot ...

  8. 试验设计——拉丁超立方抽样

    目录 1 性质 2 原理 3 实现 4 结果​ 1 性质 当我们要对某个昂贵函数或者一些试验数据建立代理模型时,前期实验设计对于初始采样点的选取尤为重要,如何尽可能用少量点能够得到空间填冲效果好的初始 ...

  9. 拉丁超立方——样本点空间转换

    由拉丁超立方原理可知,在使用拉丁超立方采样采集的样本点的取值范围都在[0,1]区间内,而在实际问题中,设计变量的取值范围并不一定会在[0-1]区间内,为了保持在[0,1]区间内拉丁超立方采集的样本点的 ...

最新文章

  1. shell /dev/null
  2. R语言应用str_match函数和str_match_all函数从字符串抽取匹配的字符串模式:str_match函数抽取第一个匹配的字符串模式、str_match_all函数抽取多个匹配的字符串模式
  3. Bitcoin Core开发者:提倡使用信用卡进行日常开销而非比特币
  4. python找出图中所有闭合环_求图中的所有闭合环
  5. Python学习笔记之基本数据结构方法
  6. 如何拓展外链引流,让网站成为“顶牛”?
  7. Rainbond最佳实践:Tomcat配置Redis实现Session共享
  8. outlook从服务器中恢复已删除项目,Exchange 恢复已删除项目
  9. python代码优化无限营销软件工作室_这个教程价值有点高,利用Python制作全自动化营销软件!...
  10. python实现常见排序算法
  11. Exception和Error深入分析~~~
  12. oracle analyze 全部表,Oracle analyze table
  13. oracle java耗cpu_ORACLE高手请看过来,CPU使用率100% (100分)
  14. macOS U盘烧录Linux iso镜像
  15. python中关于元组的基础运用
  16. PHP 7天前的时间戳
  17. process.nextTick
  18. 小米手机多功能计算机都怎么使用方法,图文展示小米手机如何连接电脑详细操作...
  19. Centos 安装zlib
  20. BME相关SCI期刊

热门文章

  1. 企业中B端常用的十大产品分类详情
  2. HTML5中常见的新语义化标签
  3. python3的基本数据类型_python3基本数据类型
  4. ImageJ 用户手册——第四部分(ImageJ用户界面)
  5. 数学:确定性的丧失--第一章 数学真理的起源
  6. Win10(家庭版)虚拟机安装
  7. 如何做云班课上的计算机作业,云班课不分组怎么提交作业
  8. PG系列6-PostgreSQL的体系架构
  9. 平台级解决方案,平安给深圳的智慧工具箱
  10. Docker 部署微服务