-
차원 축소 (Dimension Reduction)아가개발자/머신러닝 2020. 12. 7. 03:06
차원 축소
주로 데이터 전처리과정에서 사용되며 고차원의 데이터를 저차원으로 줄이는 과정이다.
고차원의 데이터를 왜 저차원으로 축소시키는 걸까? 차원 축소가 왜 필요할까?
예를 들어, 넷플릭스에서 데이터 분석을 하고자 한다. 여기서 넷플릭스 사용자와 넷플릭스에 있는 많은 컨텐츠들을 데이터를 매트릭스로 표현하여 활용하기에는 너무나도 큰 매트릭스가 될 것이다.
또한, 차원이 증가하면 데이터는 차원의 저주에 빠지게 된다.
차원의 저주란 차원이 증가할 때 동일한 정보량을 표현하기 위해 필요한 데이터의 수는 지수적으로 증가한다는 의미이다.
즉, 쉽게 말해 1D 데이터를 표현하기 위한 데이터가 50%가 있었다면 이 데이터를 가지고 2D 데이터를 만들면 해당 데이터는 2D 데이터에 25%밖에 표현하지 못한다는 것이다.
이렇게 학습 데이터 수가 차원의 수보다 적어져(ex. 데이터 1000개, 변수 3000개) 모델의 성능이 저하되는 현상이 발생하게 된다.
이론 적으로 차원이 증가하면 모델의 성능이 높아져야 한다. 하지만 이는 모든 변수가 서로 독립적일 때의 이야기이며 모든 변수에는 상관관계가 있으며 노이즈가 존재한다. 그렇기 때문에 모델의 성능을 최대로 해주는 변수의 일부 셋을 찾아 차원을 축소 시켜주어야 한다.
차원 축소 방법
- 변수 선택 → 유의미한 변수만 선택하는 방법
이 방법은 선택한 변수에 대한 해석이 용이하지만 변수 간의 상관관계를 고려하기에 어려움이 있다.
변수 선택 방법에서도 비지도 학습과 지도학습으로 나누어 진다.
- 변수 추출 → 예측 변수의 변환(변환 함수)을 통해서 새로운 변수를 추출하는 방법
이 방법은 선형 결합을 통해 변수 간의 상관관계를 고려할 수 있으며 변수의 개수를 많이 줄일 수 있다. 하지만 추출된 변수에 대한 해석이 어렵다.
변수 추출방법에는 선형과 비선형 방법으로 나누어 진다. 선형 방법에는 분산을 최대화 시키는 PCA(Principal component analysis)와 분포를 최대화 시키는 MDS(Multidimensional scaling) 방법론이 있다.
'아가개발자 > 머신러닝' 카테고리의 다른 글
군집화 (Clustering) (0) 2020.12.06 서포트 벡터 머신(SVM) 실습 (0) 2020.12.05 서포트 벡터 머신 (Linear SVM / Non-linear SVM) (0) 2020.12.04 서포트 벡터 머신 (SVM) (0) 2020.12.03 의사결정나무 - Decision Tree (0) 2020.10.20