728x90
반응형
1. Latin Hypercube Sampling
- 정의
- stratified Monte Carlo(MC)의 한 종류로 기본 아이디어는 샘플링 포인트의 분포를 확률 밀도 함수(probability density function: pdf)에 가깝게 만드는 것
- 샘플링 영역은 x의 각 구성 요소의 범위를 나누어 특정 방식으로 분할된다. x의 요소가 독립이거나, 독립을 기반으로 변형가능할 경우에만 고려한다. - 특징
- 분포를 동일한 확률구간으로 분할한다.
- 주로 long-running model에 사용하도록 의도됨(효율적인 계층화 특성 때문에)
2. Process
- process
1) x 변수로부터 샘플 크기 N을 생성한다. x1, x2, ..., xn
각 변수의 범위는 동일한 확률 크기(1/N)를 기준으로 N개의 겹치지 않는 간격으로 분할된다.
각 구간으로부터 하나의 값은 구간 내의 확률 밀도에 대해 무작위로 선택된다.
2) x1, x2, ..., xn는 임의의 방식으로 쌍을 이룬다. Nn-tuples는 라틴 하이퍼큐브 샘플이다.
따라서, 주어진 값 N과 n은 LHS에 대해 (N!)^(n-1)의 가능한 간격 조합(interval combinations)을 가진다. - 1차원 라틴 하이퍼큐브 샘플링
- CDF(cumulative distribution function)를 N개 영역으로 균등하게 분할
- 각 영역에서 하나의 샘플링 포인트를 랜덤하게 선택
- 2차원 라틴 하이퍼큐브 샘플링
- x1과 x2는 독립
- x1에 대한 1차원 LHS 샘플 생성
- x2에 대한 1차원 LHS 샘플 생성
- LHS 샘플을 2차원 쌍에 랜덤하게 결합합니다
3. vs. Random sampling
- x ~ N(0,1) 때
4. python 코드
from pyDOE import *
lhs(n, [samples, criterion, iterations])
- n : 요인 수
- samples : 각 요인에서 생성하고자 하는 샘플 개수(default : n)
- criterion : 샘플 방법 정의
- center, c : 샘플링 간격 내에서 점의 중심
- maximin, m : 점 사이의 최소 거리를 최대화. 하지만, 간격 내에서 임의의 위치에 점 배치
- centermaximin, cm : maximin과 공일하지만 간격 내에서 중심에 배치
- correlation, corr : 최대 상관계수를 최소화
다른 방법으로, 원하는 분포를 설정할 수 있다.
from scipy.stats.distributions import norm
lhd = lhs(2, sample = 5)
lhd = norm(loc=0, scale=1).ppf(lhd)
평균 = 0, 표준편차 = 1인 정규 분포를 따르는 샘플을 추출.
아래 그래프에서, 파란색 샘플링 포인트에서 정규분포를 따르는 녹색 샘플링 된 점
요인 별로 원하는 분포 설정 가능
design = lhs(4, samples=10)
from scipy.stats.distributions import norm
means = [1, 2, 3, 4]
stdvs = [0.1, 0.5, 1, 0.25]
for i in xrange(4):
design[:, i] = norm(loc=means[i], scale=stdvs[i]).ppf(design[:, i])
참고 자료
1. Latin Hypercube - an overview | ScienceDirect Topics
2. PowerPoint Presentation (cmu.edu)
3. [Python] LHS(Latin HyperCube Sampling)란? (tistory.com)
4. Randomized Designs — pyDOE 0.3.6 documentation (pythonhosted.org) - python 코드
728x90
반응형
'Sampling' 카테고리의 다른 글
[Sampling] Reservoir Sampling (0) | 2023.02.13 |
---|---|
[Sampling] 중요도 샘플링 (Importance Sampling: IS) (0) | 2023.02.13 |