본문 바로가기

2019년 혁신성장 청년인재 집중양성(빅데이터)/[COURSERA] Machine Learning Stanford Uni

[week8] Principal Component Analysis

A. Principal Component Analysis Problem Formation

 

1. 차원 축소 중 하나가 PCA라는 방법이다. 위에 X표시 된 2차원의 데이터를 1차원의 데이터로 축소하기 위해서는 하나의 기준 점이 필요하게 된다. 

 

2. 평면 위에 여러 직선들이 가능하다. 빨강 선과 보라색 선이 보이 있다고 가정할 때 어떤 직선이 축소되기에 적절할까?

 

3. 정답은 빨강색 선이다. 왜냐하면, 데이터는 직선위로 수직으로 투영되며, 그 거리가 멀수록 비용은 커지게 된다. 즉 의미 변화, 데이터 손실이 많아진다는 뜻이다. 

 

 

 

1. 오 이거 선형회귀랑 똑같은거 아니야? 생각할 수 있지만, 둘의 오차를 구하는 방식이 다르다. 선형회귀는 모델의 예측값과 y값의 차이로서 비용함수를 산정하지만, PCA는 직교(최단거리)로 비용함수를 산정한다.

 

2. 즉 모델이 개입하는 것이 아니기 때문에, 그냥 모두 동등한 지위를 가지는 피쳐를 의미하는 것이다. y값이나 예측값이 아니라.

 

 

B. Pricipa Compoenet Analysis Algoritm

 

1. 차원축소를 하기 위해서는, 우리가 가지고 있는 m*n이라는 X데이터의 공분산 행렬이 필요하다.

 

 

2. 공분산 행렬은 시그마로 표현되며 공식은 위와 같다. 그리고 SVD혹은 eig를 이용하여 차원을 축소하는 것이다. eigen vector를 구하는 것은 정방행렬에서 밖에 못하지만 SVD는 정방행렬이지 않아도 고유값을 구하는 것이 가능하다.

 

3. 이렇게 구해진 가 피쳐(차원)의 고유값을 가지고 k개만을 선택하여 피쳐를 만들면 차원은 축소된다. 

 

 

1. 요약, 피쳐들을 평균 일반화 한 후, 공분산 행렬 시그마를 만든다.

 

2. 그 시그마를 svd로 분해 한 후, 나오는 행렬 U에서 k개만을 취한 후, 그 행렬의 전치행렬을 벡터 x에 곱하면, x의 차원은 축소된다.

 

3. 즉 벡터/행렬 X의 고유한 기저 벡터를 구하고, 그 중 몇 개의 기저백터 만으로 본래의 X를 복원하려하는 것이다.