15. 주성분 분석과 부분 최소자승법
15-1. 주성분분석
(Principle Component Analysis)
1) 주성분분석 (Principle Component Analysis)
- 다변량분석기법
- '주성분'이라고 불리는 선형조합으로 표현하는 기법
- 여기서 주성분은 공분산(X^TX)으로부터 eigenvector와 eigenvalue를 도출하여 계산됨
- 주성분간의 수직관계
- 1st 주성분 (PC1) : 독립변수들의 변동(분산)을 가장 많이 설명하는 성분
- 2st 주성분 (PC2) : PC1과 수직인 주성분
(첫번째 주성분이 설명하지 못하는 변동에 대해 두번째로 설명하는 성분)
- iris데이터(4개변수)의 주성분분석 - 차원축소 & 예측력 향상
- iris데이터(4개변수)의 주성분 도출 - 차원축소 & 예측력 향상
주성분분석은 추가패키지 필요없음
데이터 불러들이기
cor(iris[1:4])
독립변수간 상관관계 확인
- 주성분분석을 위한 함수 : prcomp(독립변수들, center= , scale= )
ir.pca<-prcomp(iris[,1:4],center=T,scale.=T)
- 옵션을 주지않으면 center=T, scale=F
- center=T, scale=T는 변수들의 평균을 빼고, 편차로 나누어 표준화한다는 의미
ir.pca
PC1 = 0.5211*Sepal.Length -0.2693*Sepal.Width +0.5804*Petal.Length +0.5649*Petal.Width
- 전체분산 중 각 주성분의 설명하는 비율
summary(ir.pca)
=> 누적설명비율을 보면 PC1와 PC2, 두개의 성분으로 전체분산의 95.81%를 설명
그러면 몇 개의 주성분으로 전체분산을 설명하는게 최적?
- 최적 주성분 수는? - scree plot을 그려보고 급격히 떨어지기 전까지의 PC를 선택
plot(ir.pca,type="l")
- 3rd PC에서 설명력이 급격하게 떨어짐을 볼 수 있음
- 기울기가 꺾이는 PC3을 'elbow point'라 부름
=> 이 경우는 PC1, PC2 까지 사용하는 것을 추천
- screeplot함수를 이용 : screeplot(pca결과)
screeplot(ir.pca)
앞의 그림과 동일한 결과
=> PC1, PC2까지 사용 추천
- PC계산= X_data(n*p) %*% PCA_weight(p*p)
PRC<-as.matrix(iris[,1:4])%*%ir.pca$rotation
PRC는 n*p행렬, 여기서는 150*4, %*%는 행렬과 행렬을 곱할 때 사용
head(PRC)
head(PRC)는 첫번째 6줄을 보여줌
- iris data => iris.pc data구성
iris.pc<-cbind(as.data.frame(PRC), Species)
head(iris.pc)
2) 주성분을 이용한 분류모형
- 주성분을 이용한 서포트벡터머신 수행 (iris data)
library (e1071)
m1<- svm(Species ~., data = iris.pc, kernel="linear")
summary(m1)
x<-iris.pc[, -5]
pred <- predict(m1, x)
y<-iris.pc[,5]
table(pred, y)
주성분을 이용한 분류 오분류율 : 2/150=0.013 (1.33%)
'공부 > R & Python' 카테고리의 다른 글
15-3. Partial Least Square (0) | 2020.03.06 |
---|---|
15-2. 주성분 회귀분석(Principle Component Regression) (0) | 2020.03.06 |
14-3. 로지스틱 회귀분석(Logistic Regression) (0) | 2020.03.05 |
14-2. 연관규칙 분석 2 (0) | 2020.03.05 |
14-1. 연관규칙과 로지스틱회귀분석-연관규칙 분석 1(Association Rule Analysis) (0) | 2020.03.05 |