15-3. Partial Least Square
1) Partial Least Square Regression (PLS)
- 주성분분석의 component와 최소자승회귀법의 component의 비교
Latent variable (LV)
- PLS는 공정변수들의 변동을 설명하는 벡터 t를 구하는데 X의 정보만을 이용하는 것이 아니라 타겟변수 y의 정보를 동시에 고려
- PLS에서의 component는 PCR와 다르게 X의 정보만을 이용하는 것이 아니라 타겟변수(Y)와의 상관성을 고려하여 도출된다.
- Chemometrics, Marketing분야의 고차원데이터, 독립변수간 상관성 높은 데이터에 적용
- t(components)는 X들의 벡터의 선형조합으로 산출하는데 이 때 가중치로서 벡터 xj를 벡터 y에 projection한 weight를 이용한다. 이는 NIPALS Algoruthm으로 산출된다.
- PLS를 수행하기 위한 추가 패키지 설치
install.packages('pls')
library(pls)
PLS 수행을 위한 패키지 : "pls"
data(gasoline)
help("gasoline")
pls 패키지에 탑재된 데이터 gasoline 사용
여기서 data(gasoline)은 데이터를 load한다는 의미
- 데이터 설명 - 가솔린 데이터* (근적외선 흡광도, 60개의 가솔린 표본)
- 독립변수의 차원 : 401
- 타겟변수(Y) : 옥탄가(octane numbers)
- 데이터 요약 설명 (타겟변수 Y : 옥탄가)
par(mfrow=c(1,1))
hist(octane, col=3)
summary(octane)
- 옥탄가의 최소값 83.4, 최대값 89.6
- 히스토그램은 옥탄가의 분포를 보여줌
- 훈련데이터와 검증데이터 (50개 / 10개)
gasTrain <- gasoline[1:50, ]
gasTest <- gasoline[51:60, ]
- 주성분분석에서는 최적 성분수?
ga.pca<-prcomp(gasoline$NIR,center=T,scale.=F)
ga.pca
summary(ga.pca)
plot(ga.pca,type="l")
최소 5개정도의 PC는 사용
- PLS함수 : plsr
help(plsr)
- PLS함수 : plsr(타겟변수~독립변수, ncomp= , data= )
gas1 <- plsr(octane ~ NIR, ncomp = 10, data = gasTrain, validation = "LOO")
옵션사항 :
ncomp : 잠재변수의 수
validation=c("none", "CV", "LOO")
CV : cross-validation
LOO : leave-one-out
octane~NIR
NIR에 401차원의 값이 들어있음
summary(gas1)
- PLS결과 (1개의 잠재변수 -> 10개의 잠재변수)
- PLS모형에서의 최적 잠재변수의 수 :
plot(RMSEP(gas1), legendpos = "topright", pch=46, cex=1.0, main="Cross-validation for # of LV")
- 최적 PLS모형의 실제값과 예측값 산점도
plot(gas1, ncomp = 2, asp = 1, line = TRUE, cex=1.5,main="Measured vs Predicted", xlab="Measured" )
- 잠재변수 수에 따른 전체분산의(독립변수들) 설명정도
explvar(gas1)
2개의 잠재변수가 => 분산 전체의 85.58% 설명
- 검증데이터의 RMSEP계산
ypred<-predict(gas1, ncomp = 2, newdata = gasTest)
y<-gasoline$octane[51:60]
sqrt((sum(y-ypred)^2)/10)
[출력 결과]
[1] 0.2442074
RMSEP(gas1, newdata = gasTest)
- PLS 예측값 내보내기
out1<-cbind(y, ypred)
write.csv(out1,file="out1.csv", row.names = FALSE)
PLS 예측값 내보내기
'공부 > R & Python' 카테고리의 다른 글
16-2. Convolutional Neural Network (0) | 2020.03.06 |
---|---|
16-1. 딥러닝과 텍스트 마이닝-Neural Network (0) | 2020.03.06 |
15-2. 주성분 회귀분석(Principle Component Regression) (0) | 2020.03.06 |
15-1. 주성분 분석과 부분 최소자승법-주성분분석(Principle Component Analysis) (0) | 2020.03.06 |
14-3. 로지스틱 회귀분석(Logistic Regression) (0) | 2020.03.05 |