차원을 왜 축소시키는가
Dimensionality reduction
선형대수를 사용하는 가장 큰 이유는 우리가 인지할 수 없는 다차원에 대하여 이해하고 설명하는데 있을 것 입니다. 지난 포스트까지 행렬을 이용해여 공간을 바꾸고, 벡터를 변형시켜보았습니다. 이제 4차원 이상도 이해할 수 있는 강력한 도구가 생긴것입니다.
Dimensionality reduction
차원을 축소시키기 위해 선형변환을 해왔지만, 오늘은 왜 축소시키는지에 대해 잠시 생각해보겠습니다. 왜 굳이 PCA나 T-SNE 등 여러방법을 동원해서 차원을 축소시키려하는 걸까요?
예를 한번 들어 보겠습니다. 우리는 공부를 하는 여러가지 이유가 있습니다.
그 이유중에는 '좋은 회사에 입사하고 싶어서','연봉을 더 받고싶어서','이직을 위해서','안정적인 직장을 얻고싶어서','자아실현을 하기 위해서', '공무원이 되고싶어서'등 이유가 수도 없이 많습니다.
이유(feature)는 수도없이 많지만 사실 본질적인 이유는 크게 하나로 말할 수 있을 것입니다.
'더 나은 삶을 위해서'
더 나은 삶을 위해서 우리는 좋은 회사에 들어가고 싶어하고, 혹은 새로운 시작을 하기도하고 많은 노력들을 합니다. 이 Feature는 다른 대부분의 Feature들을 반영할 것입니다.
Principal component analysis
우리는 '더 나은 삶을 위해서'라는 기준을 만들어 다른 모든 이유들을 투영시켜 표현할 것입니다.
그 선이 다른 모든 특징 들을 설명해 줄 것입니다 (explained_variance_ratio_).
결국 주성분분석을 하는 이유는 말그대로 '주'인 '성분'을 찾는 과정입니다.
이제 우리가 공부하는 용어로 바꾸어볼까요?
'더 나은 삶을 위해서'라는 Feture가 다른 모든 이유의 80%를 반영할 수 있다고 한다면,
'더 나은 삶을 위해서'라는 Feture = Principle Component 가 될 것이고,
explained_variance_ratio는 80%라고 할 수 있습니다.
혹은 '재미를 느끼기 위해서'라는 Feature도 두번째로 잘 반영하여 다른이유중에 15%를 설명할 수 있다고 한다면,
우리의 두번째 주성분은 이 Feature가 될 것입니다. explained_variance_ratio는 15%가 됩니다.
Scree Plot
Feature의 갯수에 따라 설명하는 분포를 나타낸 것이 Scree plot입니다.
수직축은 지난번에 배웠던 '고유값(Eigenvalue)'이 됩니다. 왜 고유값이 갑자기 나오는 걸까요? 우리는 앞서 행렬을 통해 공간을 바꾸었습니다. 그런데 변하지 않는 벡터가 있었죠. 그 것이 고유벡터였고, 그 값이 고유값입니다. 다시 생각해보면 고유벡터를 기준으로 공간이 변한 것입니다. 고유벡터의 고유값이 그 공간을 대신 설명해 주는 것이죠.
explained_variance_ratio는 그 고유값의 비율이 됩니다.
Visualization
2개의 주성분을 가지고 있다면 시각화를 시킬 수도 있습니다. 위의 Principle Component 1은 주성분 '더 나은 삶을 위해서', Principle Component 2는 '재미를 느끼기 위해서'가 되겠죠. (이해를 돕기위해 가져온 시각화 자료입니다. Kaggle에서 유방암에 관한 자료입니다.)
마치며
우리는 수많은 Feature들을 단 두개의 Feature만으로 95%를 설명할 수 있었습니다.
'좋은 회사에 입사하고 싶어서',
'연봉을 더 받고싶어서',
'이직을 위해서',
'안정적인 직장을 얻고싶어서',
'자아실현을 하기 위해서',
'공무원이 되고싶어서',
'친구들에게 무시당하기 싫어서’,
‘경쟁 상대를 이기기 위해서’,
‘부모님이나 선생님이 시켜서’,
'배우는 것이 즐거워서'등의 이유를
단 2개만으로 95%를 설명할 수 있습니다.
(물론 이해를 돕기위해 가정한 것입니다.)
'기본소양 > 선형대수학' 카테고리의 다른 글
파이썬으로 하는 선형대수학 (3. Span, Rank, Basis, Projection) (0) | 2021.01.18 |
---|---|
파이썬으로 하는 선형대수학 (1. 스칼라와 벡터 & 2. 매트릭스) (0) | 2021.01.18 |
[선형대수학] 공분산과 상관계수 ( 피어슨, 스피어만) (0) | 2021.01.14 |
[선형대수학] 고유값과 고유벡터, 벡터의 변환 (0) | 2021.01.14 |
[선형대수학] 벡터의 차원 (0) | 2021.01.13 |
댓글