Linear transform의 머신러닝 응용 중 하나인 PCA에 대해 알아보자.

아래의 점들을 가장 잘 설명하는 선을 그어보고, 이를 1차원의 공간으로 선형 변환시켜 보자.

PCA가 하는 역할은 해당 dataset을 손실하지 않는 중복된 열을 제거하여 차원 축소를 하는 것이다.

기존에 보았던 Non-singular matrix의 경우 linear transform 이후의 상황은 아래 그림과 같았다.

만약 아래와 같은 Singular matrix, Redundant한 matrix일 때의 상황은 어떨까?

만약 0의 값만 갖는 Singular matrix라면?


Determinant는 선형 변환된 공간 상의 벡터들로 만들 수 있는 area(면적)으로 정의내릴 수 있다.

아래와 같은 Singular matrix는 기저 벡터가 하나 존재하므로, 이를 가지고 만들 수 있는 평행 사변형은 무척 얇다.


정리하면, Determinant는 기존 unit 벡터가 linear transform되어 만들어진 기저 벡터들로 이루어진 평행 사변형의 면적이다!

그렇다면 Determinant가 음수 값을 가질 때에는 어떻게 될까?


이를 해석하는 일은 기존 벡터와의 clockwise / Counter-clockwise 방향을 보고 결정할 수 있다.

두 행렬의 determinant 곱은 최종 행렬의 determinant와 같다.






Quiz

Solution


기하학적으로 표현해 보자.


사실 위의 matrix는 앞서 보았던 matrix들의 inverse matrix(역행렬)이었다.


어떻게 이런 일이 가능할까?

또 한가지 흥미로운 점은 가 정의된다는 점이다.

Bases는 평행 사변형을 이루는 네 점이 중요한게 아니라 평행 사변형을 이루는 두 벡터가 중요한 개념이다.


Bases란 어떠한 점을 해당 벡터들로 움직여 표현할 수 있는 한 쌍의 벡터 모음을 말한다.



그렇다면 어떤 벡터 쌍이 basis가 아닐까?


Span이란 해당 벡터들의 선형 결합으로 표현할 수 있는 전체 집합을 의미한다.


Basis가 아닌 두 벡터의 선형 조합으로는 1차원 직선으로만 전체 집합을 표현할 수 있다.


아래의 두 벡터 쌍은 basis가 아니다.

아래의 벡터 하나는 어떤가? basis인가?

정리하자면 이렇다.



아래 그림과 같이 기존에 우리가 했던 방식을 보자.

다음과 같이 해당 matrix에 (1. 0)과 (1, 1)을 곱하면 마찬가지로 선형 변환이 일어난다.

수치를 따져보면 기존 basis 벡터에 가로 방향으로 2만큼, 세로 방향으로 3만큼 곱해서 표현한 벡터로 변환되어 나온다.

(3, 2)인 점 또한 기존의 basis로 표현하면 왼쪽과 같은 경로로 이어진다.

아래와 같은 두 행렬의 공간을 비교해보자.

이 말은 두 matrix의 공간이 무수히 많은 (x, y)로 이루어진 전체 점들에 대하여 같은 정답을 내포하고 있음을 의미한다.

또 다른 예제를 보자.

따라서 두 행렬의 차를 선형 변환한 정답은 영벡터를 이룬다.

Eigenvalue의 계산은 다음과 같이 한다.




아래는 3x3 matix의 eigenvalue가 3개일 때의 예시다.




이번에는 3x3 matrix의 eigenvalue 개수가 중복되어 2개일 때의 상황을 보자.




그러나 위의 첫 번째 열벡터의 마지막 항이 4로만 변경되었을 때의 상황을 보자.
마찬가지로 값이 4일 때는 위에서 찾은 eigenvector와 동일했으나 가 2일 때의 eigenvectors의 상황은 달라졌다.
이번에는 어떠한 값을 찾아도 방향이 모두 동일한 vector만 나올 수 있었고, 그 결과 전체 eigenvectors의 개수는 2개로 한정되었다.




요약하자먼 이렇다.

Dimensionality Reduction이란, data samples(행)과 features(열)로 이루어진 table의 columns 개수를 줄이는 작업이다.

이러한 작업을 하는 이유는 크게 두 가지다.


아래와 같은 점들을 2차원 좌표 평면에 나타내보자.

1차원 직선으로의 투영 이후 (1, 1)의 위치는 바뀌지 않았다.
그러나 (1, 1)의 좌표는 현재 2차원 공간에서의 점 표현이므로 원점으로부터의 거리(segment)가 얼마인지를 계산해보면 다.
이를 계산하는 방법은 를 계산하는 것과 같다.


계산 과정을 살펴보자.
먼저, data인 (1, 1) 벡터와 위의 점 (1, 1) 벡터를 dot product하면 가 나온다.
이를 더해서 좌표에 표현하면 길이가 인 하나의 선분이 그려진다.
그리고 는 다름 아닌 곱해지는 벡터의 2-Norm 값과 같다.



같은 방법으로 모든 점을 투영하면 아래와 같은 파란색 점들이 직선에 그려진다.
각각의 값을 계산해보면, 각 점들이 1차원 점 하나씩으로만 표현된다.
직선을 눕혀 수직선으로 각 점을 표현하면, 원점으로부터 얼마나 떨어졌는지에 대한 값이 1차원 점 하나로만 표현이 가능해짐을 의미한다.



Projection 로직은 다음과 같다.

맞춰주고 싶은 차원에 따라 행렬 의 column 차원이 결정된다.
결론적으로 data point가 담겨있는 행렬 를 공간으로 mapping하는 것이다.
공간의 차원이 원래의 차원보다 작다면 차원 축소, 크다면 차원 확장 개념이 될 수도 있다.



위 data point들을 원점으로 이동시킨 형태는 다음과 같다.

축과 축으로 data point들을 각각 projection 내려보자.



이번에는 직선에 projection 내려 보자.



이번에는 직선에 projection 내려 보자.



여러가지 방법으로 projection 내리는 것이 가능하지만, 기존 데이터 분포 양상을 가장 잘 보존하는 직선은 아래와 같은 빨간색 직선이다.



"Preserving more spread, preserving more information"

차원 축소를 하면 dataset을 쉽게 관리할 수 있고 시각화하기 편하다.

Statistics에서 다루는 Mean(평균)과 Variance(분산)에 대해 알아보자.

Variance는 data의 spread 정도다.


수식으로는 로 표현한다.
아래와 같은 table이 있다고 하면 의 합을 (전체 데이터 개수 - 1)로 나누었다고 생각하면 된다.
이 아닌 로 나눠주는 이유는 불편추정량을 고려한 estimation이라고 생각하면 된다.

Variance의 정의는 "(평균으로부터 떨어진 거리)의 제곱의 평균"이라 할 수 있다.


아래 두 데이터 분포를 다르게 설명할 수 있는 방법은 Covariance에 있다.


아래와 같은 세 가지 분포에 대하여 covariance를 정의하면 다음과 같다.



이제 PCA의 전체적인 과정에 대해 알아보자.
PCA는 아래의 모든 개념을 combine한다.

x축, y축, xy축(?)의 Variance를 계산하여 Matrix 원소 자리에 집어 넣었다.



Covariance는 x와 y에 대한 차이의 곱이 항상 같기 때문에 Symmetric Matrix를 구성한다.

두 번째 eigenvalue는 첫 번째 eigenvalue보다 작아서 영향력이 작다.


2차원 평면의 data points를 1차원 수직선에 projection한다는 것은 어떤 의미일까?



어떻게 eigenvalues와 eignevectors가 의미를 갖는 것일까?

두 점 뿐만 아니라 원을 구성하는 단위 벡터들로 선형 변환 이후의 점들을 표현해보자.


Covariance 행렬의 가장 큰 eigenvector와 이 벡터의 수직한 두 번째 eigenvector를 찾아보자.
11 scale의 (2, 1), 1 scale의 (-1, 2) 벡터가 나왔다.
"Everythin is just stretches"

각 벡터의 scale은 벡터의 2-Norm 값과 동일하다.
아래 그림에서는 stretch가 5인 벡터와 stretch가 9.85인 벡터의 예시를 추가적으로 나타내었다.



PCA의 전체적인 과정에 대해 정리해보자.


