제목에서 알 수 있듯이 치수 축소는 항상 일부 정보가 손실됩니까? 예를 들어 PCA를 고려하십시오. 내가 가진 데이터가 매우 드문 경우 “더 나은 인코딩”을 찾을 수 있다고 가정하고 (어쨌든 데이터의 순위와 관련이 있습니까?) 손실되지 않습니다.
답변
차원 축소가 항상 정보를 잃는 것은 아닙니다 . 경우에 따라 정보를 버리지 않고 저 차원 공간에서 데이터를 다시 나타낼 수 있습니다.
각 측정 값이 2 차 공변량과 연관된 데이터가 있다고 가정합니다. 예를 들어, 일부 이미 터를 기준으로 및 위치 의 조밀 한 격자에서 신호 품질 (컬러 화이트 = 양호, 블랙 = 불량으로 표시)를 측정 했다고 가정합니다. 이 경우 데이터는 왼쪽 그림 [* 1]과 유사 할 수 있습니다.x y
Qx
y
적어도 피상적으로 2 차원 데이터 인 입니다. 그러나, 우리 는 선험적 (기본 물리학에 기초한)을 알거나 그것이 원점으로부터의 거리에만 의존한다고 가정 할 수 있습니다 : r = . (일부 탐색 적 분석은 기본 현상조차도 잘 이해하지 못하는 경우이 결론으로 이어질 수 있습니다). 그런 다음 대신 로 데이터를 다시 작성할 수있어 차원을 단일 차원으로 효과적으로 줄일 수 있습니다. 데이터가 방사형 대칭 인 경우에만 손실이 발생하지 않지만 이는 많은 물리적 현상에 대한 합리적인 가정입니다.√
Q(x,y)Q(r)Q(x,y)
x2+y2Q(r)
Q(x,y)
이 변환 은 비선형 (제곱근과 두 개의 제곱이 있습니다!)이므로 PCA에서 수행하는 차원 축소와는 약간 다릅니다. 정보를 잃지 않고 치수를 제거하는 방법에 대한 예입니다.
Q(x,y)→Q(r)다른 예를 들어, 일부 데이터에 대해 단일 값 분해를 수행한다고 가정합니다 (SVD는 주요 구성 요소 분석의 근본 원인이며 종종 기본 구성 요소 분석). SVD는 데이터 행렬 가져 와서 되도록 3 개의 행렬로 인수 분해 합니다. U와 V의 열은 각각 왼쪽 및 오른쪽 특이 벡터로, 대한 직교 정규 염기 세트를 형성합니다 . 의 대각선 요소 (즉, 는 특이 값으로, 및 의 해당 열 ( 의 나머지 열에 의해 형성된 번째 기준 세트 에 효과적으로 가중치 가M = U S V T M S S i , i ) i U V S N x N N x N S U V M Q ( x , y )
MM=USVT
M
S
Si,i)
i
U
V
S
0입니다). 자체로,이 (사실, 지금 3가 당신에게 어떤 차원 축소를 제공하지 않습니다 대신 하나의 행렬 당신이 시작 매트릭스). 그러나 때때로 일부 대각선 요소 는 0입니다. 이것은 와 의 해당 염기가 을 재구성하는 데 필요하지 않으므로 제거 할 수 있음을 의미합니다. 예를 들어
NxNNxN
S
U
V
M
Q(x,y)
위의 행렬에는 10,000 개의 요소가 포함되어 있습니다 (즉, 100×100). SVD를 수행 할 때 한 쌍의 특이 벡터는 0이 아닌 값 [* 2]을 가지므로 원래 행렬을 두 개의 100 요소 벡터 (200 계수)의 곱으로 나타낼 수 있습니다. 실제로 조금 더 잘 할 수 있습니다 [* 3]).
일부 응용 프로그램의 경우 유용한 정보가 높은 특이 값 (SVD) 또는로드 (PCA)를 가진 주요 구성 요소에 의해 캡처된다는 것을 알고 있습니다. 이 경우 유용한 신호가 아닌 성가신 잡음을 포함한다는 이론에서 0이 아닌 경우에도 작은 로딩을 갖는 단일 벡터 /베이스 / 주성분을 버릴 수 있습니다. 때때로 사람들은 부하에 관계없이 모양에 따라 특정 구성 요소를 거부하는 것을 보았습니다 (예 : 알려진 추가 노이즈 소스와 유사). 당신이 이것을 정보의 상실이라고 생각하는지 확실하지 않습니다.
PCA의 정보 이론적 최적성에 대한 깔끔한 결과가 있습니다. 신호가 가우시안이고 가우시안 가산 노이즈로 손상된 경우 PCA는 신호와 차원 축소 버전 사이의 상호 정보를 최대화 할 수 있습니다 (잡음이 동일 유사 공분산 구조를 갖는다 고 가정).
각주 :
- 이것은 치즈가 아닌 완전히 비 물리적 인 모델입니다. 죄송합니다!
- 부동 소수점 부정확성으로 인해 이러한 값 중 일부는 0이 아닙니다.
- 추가 검사 에서이 특별한 경우 두 개의 특이 벡터는 중심에 대해 동일하고 대칭이므로 실제로 50 개의 계수로 전체 행렬을 나타낼 수 있습니다. 첫 번째 단계는 SVD 프로세스에서 자동으로 빠집니다. 두 번째는 약간의 검사와 믿음의 도약이 필요합니다. (PCA 점수와 관련하여이 점을 생각하려면 점수 행렬은 원래 SVD 분해에서 에 불과 하며 0에 대한 비슷한 주장은 전혀 기여하지 않습니다).
US
답변
귀하의 질문에 대한 질문은 “정보를 만드는 것”입니다. 좋은 질문입니다.
문법 기술 :
PCA는 항상 정보를 잃습니까? 아니. 그것은 않는다 때때로 정보가 손실? Youbetcha. 컴포넌트에서 원본 데이터를 재구성 할 수 있습니다. 항상 정보를 잃어버린 경우에는 불가능합니다.
데이터의 차원을 줄이는 데 사용할 때 중요한 정보를 잃지 않기 때문에 유용합니다. 데이터를 잃어 버리면 종종 더 높은 빈도의 데이터이며 덜 중요합니다. 대규모의 일반적인 추세는 더 큰 고유 값과 관련된 구성 요소에서 캡처됩니다.
답변
n×p
가장 간단한 경우, 하나의 차원이 다른 차원의 선형 조합 인 경우 정보를 잃지 않고 차원을 한 차원 씩 줄일 수 있습니다. 필요한 경우 남겨진 차원에서 삭제 된 차원을 다시 만들 수 있기 때문입니다.
x3이 x1과 x2의 정확한 선형 조합 인이 3 차원 경우를 고려하십시오. x3이 다른 두 가지와 관련되어 있음은 분명하지만 원래 데이터를 눈으로 보는 것은 분명하지 않습니다.
그러나 주요 구성 요소를 보면 세 번째는 0입니다 (숫자 오류 이내).
처음 두 개의 주요 구성 요소의 줄거리는 X2에 대하여 X1의 줄거리와 같은, 그냥 회전 (확인, 분명 내가 의미하지, 나는 나중에 더 설명하려고합니다) :
우리는 차원을 하나 줄 였지만 모든 정보를 합리적인 정의로 유지했습니다.
이것은 자연스럽게 설명하기가 더 복잡해 지지만 선형 치수 축소를 넘어 확장됩니다. 요점은 일부 차원이 다른 차원의 조합의 함수가 아닌 전체적인 대답은 “아니오”입니다.
R 코드 :
library(GGally)
n <- 10^3
dat <- data.frame(x1=runif(n, 0, 3), x2=rnorm(n))
dat$x3 <- with(dat, x1 + x2)
ggpairs(dat)
pc <- princomp(dat)
plot(pc)
par(mfrow=c(1,2))
with(dat, plot(dat$x1, dat$x2, col="red", main="Original data", bty="l"))
with(pc, plot(scores[,1], scores[,2], col="blue", main="Scores from principal components(\n(rotated)", bty="l"))