우노
[R] D-optimal이란? 본문
실험계획법(DOE, design of experiments)이란?
D-optimal Design 기본 개념
전체 데이터셋에서 중요한 데이터만 가져와 효율적으로 실험하기 위해 쓰이는 실험계획법이다.
데이터는 X로 표현되며
정보행렬인 |X’X(대각행렬)|를 최대화하여, 추정 된 회귀 계수의 전체 분산을 최소화하도록 구성된다.
자세한 설명
선형모형
- N : 데이터의 개수 (행개수)
- k : 입력 데이터의 특성 개수 (열개수)
- Y : N x 1 출력 벡터
- X : N x k 입력 데이터 행렬
- β : 미지의 회귀 계수 k x 1 벡터
- ε : E(ε)=0, N x N 단위행렬인 공분산 행렬을 가진 실험오차 N x 1 벡터
회귀 계수 β
최소제곱법에 의해 추정하면 β는 다음과 같다.
회귀 계수 β의 공분산 행렬
회귀 계수 β의 분산 행렬
즉, 회귀 계수 β의 분산을 줄이기 위해 |X'X|의 행렬식 det(X'X)를 최대화하는 계획법이 D-optimal이다.
D-optimal 지원 R 라이브러리
optFederov
reference : https://www.rdocumentation.org/packages/AlgDesign/versions/1.0-10/topics/optFederov
Federov의 교환 알고리즘을 사용하여 세 가지 최적화 방법(D, A, I) 중 하나에 대한 정확한 또는 대략적인 알고리즘 설계를 계산합니다.
인자형태
optFederov(frml,data,nTrials,center=FALSE,approximate=FALSE,criterion="D", evaluateI=FALSE,space=NULL,augment=FALSE,rows,nullify=0, maxIteration=100,nRepeats=5,DFrac=1,CFrac=1,args=FALSE)
- 중요인자
- data
- 입력으로 넣을 데이터 행렬 또는 데이터 프레임입니다.
- 데이터를 입력하고 열의 이름을 따로 지정하지 않은 경우, 열의 이름이 X1,X2 등으로 지정됩니다.
- nTrials
- 입력 데이터에서 중요한 데이터로 몇 개를 가져올 건지 정합니다.
- criterion
- 최적화 방법(D, A, I)중 무엇을 사용할 건지 정합니다.
- nRepeats
- 수치 계산을 위해 전체 프로세스가 반복되는 횟수입니다.
- data
- 결과
- D, A, I, Ge, Dea
- 각각의 계산 결과
- design
- 중요한 데이터로 추출 된 행렬
- rows
- 추출 된 행렬의 행 번호
- D, A, I, Ge, Dea
- 중요인자
R 예제 코드
절차
- 1) 입력 데이터를 준비한다.
- 2) 중요한 데이터로 몇 개를 추출할지 정한다. (ex, nTrials=1000 )
- 3) 수치 계산을 위해 전체 프로세스가 몇 번 반복할지 정한다. (ex, nRepeats=20 )
- 4) 전체 데이터에서 중요한 nTrials개의 데이터를 뽑아내기 위해 nRepeats번 반복해 계산한다.
R 예제코드
# AlgDesing이 설치 되어 있지 않다면 다음 명령어를 통해 설치해야한다. # install.packages("AlgDesign") library(AlgDesign) # 최적화 데이터를 뽑고자 하는 입력 데이터 input = read.csv("/Users/bdlab/Desktop/Lab/Spmm scenario extraction/LHS/LHS before D-optimal.csv") # 입력 데이터 차원 확인 cat("dimension of data : ", dim(input), "\n") # data : 입력 데이터 , nTrials : 뽑을 데이터 개수, nRepeats : 전체 프로세스 반복 횟수, criterion : 사용할 최적화 방법 output = optFederov(data=input, nTrials=1000, nRepeats=20,criterion = "D")
# 전체 결과 output # 추출된 행렬 output$design # 출력제한 늘리기 options(max.print=1000000) # 추출된 행렬의 행 번호 output$rows # 추출된 행렬 csv로 저장, 작업 경로 변경 필요시 setwd("경로")로 변경 write.csv(output$design, file="LHS after D-optimal.csv", row.names=FALSE) # row.names : 행 포함 여부
참고자료
논문
- A Study on D-optimal Design Using the Genetic Algorithm
자료
'Language > R' 카테고리의 다른 글
[R] reached getOption("max.print") 오류 해결 방법 (2) | 2021.02.04 |
---|---|
[R] dataframe slice 하는 방법 (0) | 2021.01.08 |
[R] 파일 입출력 (0) | 2020.12.04 |
[R] 작업 폴더 경로 변경 (0) | 2020.12.04 |
[R] 실험계획법(DOE,design of experiments)이란? (0) | 2020.10.16 |
Comments