꺼내먹는지식 준

머신러닝 정리 4.5(6) - PCA 본문

카테고리 없음

머신러닝 정리 4.5(6) - PCA

알 수 없는 사용자 2023. 2. 24. 21:12

들어가며 

 

feature의 개수가 1, 2개인 경우에는 시각적으로 표현하기가 쉽다. 

 

하지만 feature 개수가 많아지면 시각적으로 표현이 불가능하다. 

 

또한 feature 개수가 많아지면, 데이터를 학습의 sparsity 도 높아지고, 이로 인해 저장 공간, 학습 속도 이슈를 마주한다. 

 

직관적으로 생각해도 feature간 중요도 차이가 있다. 

 

이로 인해 차원 축소를 하게 되는데, 차원 축소는 feature 선택과 feature 추출 두가지 방식이 있다. 

 

이 중 feature 선택에 해당하는 PCA 를 간단하게 설명해본다. 

 

본 내용은 StatQuest 의 https://www.youtube.com/watch?v=FgakZw6K1QQ 영상을 직접적으로 참고하여 작성하였다. 

 


본문 

결과를 미리 보자면 다음과 같이 feature가 4개인 데이터가 주어졌을 때, PCA 를 통해 주성분 2개를 골라내고, 그 두개가 데이터를 얼마나 설명하는지 수치적으로 표현할 수 있다.

 

 

feature 가 두개인 데이터로 내용을 쉽게 살펴보자. 

 

 

 

먼저 각 feature 에 평균 값을 구하고, 평균값에 해당하는 좌표를 찾는다. 

 

 

 

그 좌표를 기준으로 데이터를 평행이동한다.

 

평행 이동한다해서 데이터의 특성이 망가지는 일은 없다. 

 

그 후 데이터를 가장 잘 설명하는 선을 찾는다. 

 

보통 데이터 샘플과 선과의 거리를 최소화 하기 위하여 'b' 를 작게 만들어야 한다고 생각하나, 

실제로는 계산의 편리함을 위하여 c 의 길이를 최대한으로 방식으로 한다. (c 가 길수록 b가 짧아진다.)

 

SS 를 최대화 하는 선을 찾자. 

 

데이터를 설명하는 해당 선을 Principle Component 1의 약자  PC1 이라 한다. 

 

 

PC 1 의 slope 가 0.25라는 의미는 x 좌표로 4만큼 갈 때, y 좌표로 1만큼 올라간다는 뜻이다. 

 

진한 글씨로 적힌 부분을 우리는 linear combination이라 한다. 

 

 

가장 긴 길이를 1 로 scale 길이들을 scale 한다. 

즉, 0.97 과 0.242의 선형 결합으로 한다. 

 

0.97과 0.242로 구성되는 unit vector 를 바로 Eigenvector, 혹은 Singular Vector라 한다. 

 

그리고 각 feature 의 비, 즉 0.97 : 0.242 를 Loading Scores 라 한다. 

 

그리고 SS 를 eigenvalue 라 한다. 

 

 

 

PC 1 에 perpendicular 한 vector를 PC2 라 한다. 

보통 feature가 2개 이상일 때는 perpendicular 하면서 동시에 SS 가 가장 긴 vector 가 PC2 이다. 

 

 

그 후 PC1이 x축이 되도록 회전한다. 

PC1 과 PC2 를 기준으로 새롭게 데이터를 시각화한다. 

 

 

SS (eigen value 즉, 선이 얼마나 데이터를 잘 표현하는가) 를 데이터 샘플 개수로 나눈 값을 variation이라 하고, 이 값을 기준으로 데이터를 얼마나 설명하는지 결정한다. 

 

 

데이터의 차원 수가 더 커져도 마찬가지다. 

예를 들어 feature 가 3개라면, PC1 에 perpendicular 하면서 SS 가 가장 긴 PC2, 

PC1, PC2 와 perpendicular 하면서 SS가 가장 긴 PC3 를 찾고, 

PC1, PC2, PC3 중 Variation이 가장 높은 2개를 선택 하고, PC1 을 x축이 되도록 회전한다. 

 

그럼 2차원으로 표현 가능하다! 

 

 

Comments