주성분 분석이 비선형 데이터 취급할 수 없다고 이상하게?
1 주성분 분석은 선형 수법?
세상적으로는 「비선형 데이터를 취급할 때는 주성분 분석에서는 안된다」라고 하는 것이 그대로 시세가 되고 있다. 그러나 Unsupervised Feature Extraction Applied to Bioinformatics 이라는 제목의 책을 작년 출판해, 바이오인포매틱스에 주성분 분석을 이용한 해석의 논문을 가득 내고 있는 저로서는 「생명 현상이 비선형 데이터의 가장 큰 것은 아닐까?」라고 하는 생각이 있어 , 내심, 망설이는 생각이 있다. 주성분 분석이 비선형 데이터 해석에 적합하지 않다면, 왜 나는 한 잔 논문을 쓸 수 있었는가? 그래서, 여기서는 간단한 예로 「주성분 분석이 비선형 데이터에 약하다」라고 하는 것은 일종의 「미신」인 것을 주장하고 싶다.
2 엔의 주성분 분석
우선 원을 생각하자. 구체적으로 $x_{i1} =\cos\left ( 2\pi\frac{i}{N}\right)\in\mathbb{R}^N$,$x_{i2} =\sin\left ( 2\pi\frac{i}{N}\right)\in\mathbb{R}^N$, 같은 것을 생각한다.
circle.RN<-100
theta <- seq(0,2*pi,length=100)
x <- cbind(cos(theta),sin(theta))
plot(x)
이런 느낌이다. 여기서 점 $i_1$과 점 $i_2$의 유클리드 거리 행렬 $d_{i_1 i_2} =\sqrt{\sum_{j=1}^2 (x_{i_1j} -x_{i_2j})^2}\in\mathbb{R}^{N\times N}$를 생각하고 특이값 분해를 적용해 봅시다.
SVD.RD <- data.matrix(dist(x))
SVD<- svd(D)
plot(SVD$u[,2:3])
그건 재미있어? 원이 재현되었습니다. 거리에 고쳐진 단계에서 「비선형 데이터」가 되어 버렸기 때문에, 원은 재현되지 않는 것이 아니었던 것일까요?
아니, 이것은 유클리드 거리이기 때문입니까? 제곱 매우 제곱근이니까 결국, 거의 선형의 의존성이니까. 그렇네요, 그럼, $d^2_{ij}$를 특이값 분해해 봅시다!
SVD2.RSVD2 <- svd(D^2)
plot(SVD2$u[,2:3])
네. 역시 원이 재현되고 있습니다. 주성분 분석은 비선형 데이터를 다룰 수 없다는 것은 거짓말이었습니까?
아니, 이것이 원처럼 보이기 때문입니까? 좀 더 복잡하다면 안 되니?
3 정규 분포에 따른 난수의 주성분 분석
그렇네요, 그럼, 100개의 정규 난수를 늘어놓고, 유클리드 거리 행렬을 만들어 제곱하고 나서 특이값 분해를 해 봅시다. 과연 여기까지 하면 안되는 것은 아닌가?
normal.Rset.seed(0)
ran <- matrix(rnorm(200),ncol=2)
SVD0 <- svd(ran)
D2 <- data.matrix(dist(ran))
SVD3 <- svd(D2^2)
plot(SVD0$u[,1:2])
points(SVD3$u[,2],-SVD3$u[,3],col=2)
검정이 원래 데이터, 빨강이 「유클리드 거리 행렬을 만들어 제곱하고 나서 특이값 분해」의 결과입니다. 훌륭하게 재현하고 있습니까?
그래서 "주성분 분석이 비선형 데이터를 다룰 수 없다"는 것은 미신이라는 것을 잘 알았지요?
고마워요!
Reference
이 문제에 관하여(주성분 분석이 비선형 데이터 취급할 수 없다고 이상하게?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yh_Taguchi/items/2cbdab3a4e1f8eba8d9e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선 원을 생각하자. 구체적으로 $x_{i1} =\cos\left ( 2\pi\frac{i}{N}\right)\in\mathbb{R}^N$,$x_{i2} =\sin\left ( 2\pi\frac{i}{N}\right)\in\mathbb{R}^N$, 같은 것을 생각한다.
circle.R
N<-100
theta <- seq(0,2*pi,length=100)
x <- cbind(cos(theta),sin(theta))
plot(x)
이런 느낌이다. 여기서 점 $i_1$과 점 $i_2$의 유클리드 거리 행렬 $d_{i_1 i_2} =\sqrt{\sum_{j=1}^2 (x_{i_1j} -x_{i_2j})^2}\in\mathbb{R}^{N\times N}$를 생각하고 특이값 분해를 적용해 봅시다.
SVD.R
D <- data.matrix(dist(x))
SVD<- svd(D)
plot(SVD$u[,2:3])
그건 재미있어? 원이 재현되었습니다. 거리에 고쳐진 단계에서 「비선형 데이터」가 되어 버렸기 때문에, 원은 재현되지 않는 것이 아니었던 것일까요?
아니, 이것은 유클리드 거리이기 때문입니까? 제곱 매우 제곱근이니까 결국, 거의 선형의 의존성이니까. 그렇네요, 그럼, $d^2_{ij}$를 특이값 분해해 봅시다!
SVD2.R
SVD2 <- svd(D^2)
plot(SVD2$u[,2:3])
네. 역시 원이 재현되고 있습니다. 주성분 분석은 비선형 데이터를 다룰 수 없다는 것은 거짓말이었습니까?
아니, 이것이 원처럼 보이기 때문입니까? 좀 더 복잡하다면 안 되니?
3 정규 분포에 따른 난수의 주성분 분석
그렇네요, 그럼, 100개의 정규 난수를 늘어놓고, 유클리드 거리 행렬을 만들어 제곱하고 나서 특이값 분해를 해 봅시다. 과연 여기까지 하면 안되는 것은 아닌가?
normal.Rset.seed(0)
ran <- matrix(rnorm(200),ncol=2)
SVD0 <- svd(ran)
D2 <- data.matrix(dist(ran))
SVD3 <- svd(D2^2)
plot(SVD0$u[,1:2])
points(SVD3$u[,2],-SVD3$u[,3],col=2)
검정이 원래 데이터, 빨강이 「유클리드 거리 행렬을 만들어 제곱하고 나서 특이값 분해」의 결과입니다. 훌륭하게 재현하고 있습니까?
그래서 "주성분 분석이 비선형 데이터를 다룰 수 없다"는 것은 미신이라는 것을 잘 알았지요?
고마워요!
Reference
이 문제에 관하여(주성분 분석이 비선형 데이터 취급할 수 없다고 이상하게?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yh_Taguchi/items/2cbdab3a4e1f8eba8d9e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
set.seed(0)
ran <- matrix(rnorm(200),ncol=2)
SVD0 <- svd(ran)
D2 <- data.matrix(dist(ran))
SVD3 <- svd(D2^2)
plot(SVD0$u[,1:2])
points(SVD3$u[,2],-SVD3$u[,3],col=2)
Reference
이 문제에 관하여(주성분 분석이 비선형 데이터 취급할 수 없다고 이상하게?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yh_Taguchi/items/2cbdab3a4e1f8eba8d9e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)