위키북스의 파이썬 머신러닝 완벽 가이드 책을 토대로 공부한 내용입니다.
차원 축소는 매우 많은 feature로 구성된 다차원 dataset의 차원을 축소해 새로운 차원의 dataset을 생성하는 것이다. 일반적으로 차원이 증가할수록 데이터 포인트 간의 거리가 기하급수적으로 멀어지게 되고, 희소(sparse)한 구조를 가지게 된다. 즉, 데이터가 넓게 분포되어 있어 지역적으로 밀도가 적게 분포되어 있는 구조를 말한다. 수백 개 이상의 feature로 구성된 dataset의 경우 상대적으로 적은 차원에서 학습된 모델보다 예측 신뢰도가 떨어지며, 많은 feature를 가진 경우 개별 feature 간에 상관관계가 높을 가능성이 크다.
일반적으로 회귀 문제에서는 각각의 feature가 서로 독립이라고 가정한다. 하지만 실제 데이터에선 어떤 두 feature가 같이 증가하거나 감소하는 것과 같이 높은 상관관계를 가지게 되면 가정에 위배되어 모델의 예측 성능에 부정적인 영향을 미치게 된다. 이렇게 입력 변수 간의 상관관계가 높을 경우 이로 인해 모델의 예측 성능이 떨어지는 현상을 다중 공선성(Multicollinearity) 문제라고 부르고, 다차원의 dataset에선 다중 공선성 문제가 발생할 가능성이 크다.
그리고 매우 많은 다차원의 feature를 차원 축소해 feature 수를 줄이면 더 직관적으로 데이터를 해석할 수 있다. 또한 차원 축소를 할 경우 학습 데이터의 크기가 줄어들어서 학습에 필요한 처리 능력도 줄일 수 있다.
차원 축소는 피처 선택(feature selection)과 피처 추출(feature extraction)으로 나눌 수 있다. 피처 선택이란 특정 feature에 종속성이 강한 붎필요한 feature는 아예 제거하고, 데이터의 특성을 잘 나타내는 주요 feature만 선택하는 것이다. 피처 추출은 기존 feature를 저차원의 중요 feature로 압축해서 추출하는 것이다. 이렇게 새로 추출된 중요 특성은 기존 feature와는 완전히 다른 값이 된다.
피처 추출은 기존 feature를 단순 압축이 아닌, feature를 함축적으로 더 잘 설명할 수 있는 또 다른 공간으로 매핑해 추출하는 것이다. 여러 가지 feature로 되어 있는 dataset이라면 이를 더 함축적인 요약 특성으로 추출할 수 있다. 이러한 함축적인 특성 추출은 기존 feature가 전혀 인지하지 어려웠던 잠재적인 요소(Latent Factor)를 추출하는 것을 의미한다. PCA, SVD, NMF는 잠재적인 요소를 찾는 대표적인 차원 축소 알고리즘이다. 매우 많은 의미를 가지는 이미지나 텍스트에서 차원 축소를 통해 잠재적인 의미를 찾아 주는 데 이러한 알고리즘들이 잘 활용되고 있다.
매우 많은 픽셀로 이루어진 이미지 데이터에서 잠재된 특성을 feature로 도출해 함축적 형태의 이미지 변환과 압축을 수행할 수 있다. 이렇게 변환된 이미지는 원본 이미지보다 훨씬 적은 차원이기 때문에 과적합 영향력이 작아져서 오히려 원본 데이터로 예측하는 것보다 예측 성능을 더 끌어 올릴 수 있다. 이미지 자체에 가지고 있는 차원의 수가 너무 크기 때문에 비슷한 이미지라도 약간의 픽셀 수 차이 땜문에 잘못된 예측으로 이어질 수 있다.
텍스트 데이터에선 텍스트 문서의 숨겨진 의미를 추출하는 것으로 사용된다. 문서는 많은 단어로 구성되어 있고, 문서를 만드는 사람은 어떤 의미나 의도를 가지고 문서를 작성하면서 단어를 사용하게 된다. 일반적으로 사람들은 문서를 읽으면서 이 문서가 어떤 의미나 의도를 가지고 작성되었는지 쉽게 인지할 수 있다. 차원 축소 알고리즘은 문서 내 단어들의 구성에서 숨겨져 있는 시맨틱(Semantic) 의미나 토픽(Topic)을 잠재 요소로 간주하고 이를 찾아낼 수 있다. SVD나 NMF는 이러한 시맨틱 토픽 모델링을 위한 기반 알고리즘으로 사용된다.