꺼내먹는지식 준
머신러닝 정리 4.5(6) - PCA 본문
들어가며
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차원으로 표현 가능하다!