Applied unsupervised learning with python 책을 기반으로 작성된 글입니다.
1) 차원 축소란 무엇인가?
1.1) 차원이란?
- 차원은 데이터 샘플과 관련된 치수, 형상 또는 변수의 수를 말한다.
- 스프레드시트의 열의 수로 생각하면 편하다.
1.2) 차원 축소
- 차원 축소는 해결 중인 문제 또는 데이터 셋의 종류에 따라 제공된 정보를 잃지 않으면서도 차원은 줄이고자 한다.
- 차원 축소를 사용하면 불필요한 노이즈를 상당 부분 제거할 수 있고, 이는 데이터에 적용하는 알고리즘 성능을 높여주고 데이터의 크기를 줄여줘서 하드웨어 요구 사항을 낮추는 데 기여할 수 있다.
2) 차원 축소가 적용되는 사례
a. 사전 처리/ 기능 엔지어링 : 가장 일반적인 사례 가운데 하나는 사전 처리 또는 머신 러닝 솔류션의 개발 단계에서의 초기 기능 구현 단계로, PCA을 통해 가장 중요한 정보 구성 요소를 데이터에서 분리하고 이를 모델에 제공해 가장 관련성이 높은 정보만 제공하게 된다.
b. 노이즈 감소 : 차원 축소는 효과적인 노이즈 감소/ 필터링 기법으로도 사용할 수 있다. 예를 들면 아래 그림처럼 왼쪽 사진의 중요한 요소들이 오른쪽 사진으로도 보아도 눈에 보이는 것을 확인할 수 있다.
c. 신뢰 가능한 인공 데이터셋 생성 : PCA가 데이터셋을 정보의 구성 요소로 나눔에 따라 우리는 각 구성 요소의 영향을 조사하거나 고윳값 사이의 비율을 조정해 새로운 데이터셋 샘플을 만들 수 있고 이러한 데이터의 모야을 통계적 형태 모델링이라고 한다.
d. 재무 모델링 / 위험 분석 : 차원 축소는 다수의 개별 시장 지표 또는 신호를 더 적은 수의 구성 요소로 통합할 수 있으므로 금융 산업에 유용한 더 빠르고 효율적인 도구를 제공할 수 있다. 마찬가지로 위험도가 높은 제품이나 회사를 찾아내기 위해 사용된다.
3) 차원 저주
- 일반적으로 특징 공간에 많은 수의 차원을 가진 데이터를 갖고 작업해야 할 때 흔히 사용하며, 데이터 셋에 둘러싼 공간이 넓고 밀도가 낮아진 데이터 셋을 보고 차원 저주라고 한다.
3.1) 차원 축소를 하는 이유
- 데이터 셋의 밀도 문제를 해결하지 않고선 아무리 추가 기능에 관한 feature 정보를 얻을 수 있더라고 통계적인 상관관계를 만들기가 어려워서 성능을 개선하지 못한다. 하지만 차원 축소를 하면 유용한 정보는 유지하면서도 밀도에 따른 부정적인 영향을 최소화를 시켜 모델의 성능을 개선하는데 강력하게 만든다.
4) 차원 축소 기법 개요
4.1) 차원 축소는?
- 유용한 정보는 유지하면서 데이터세의 밀도를 관리하는 것이므로 차원 축소는 일반적으로 분류 단계 전에 사용되는 중요한 사전 처리 단계를 차지한다.
4.2) 차원 축소 기법
a. 데이터 밀도를 높이기 위해 더 높은 차원 공간의 데이터를 낮은 차원의 공간으로 저정하는 형상 투영 프로세스를 사용해 작업을 한다.
4.3) 차원 축소에 고려 해야할점
- 항상 낮은 차원의 공간으로 투명해 발생하는 정보 손실의 균형을 유지하도록 노력해야한다.
5) 차원 축소와 비지도 학습
5.1) 차원 축소 기법들
a. 선형 판별 분석(LDA, Linear Discriminant Analysis) : 차원 축소 뿐만 아니라 분류에도 사용할 수 있는 꽤 편리한 기법이다.
b. 음수 미포함 행렬 분해(NNMF, Non-negative matrix factorization) : 다양한 차원 축소 기법처럼 데이터셋의 특징 수를 줄이기 위해 사용되며 선형 대수의 특성을 활용한다.
c. 특이값 분해(SVD, Singular Value Decomposition) : PCA와 관련 깊으며 행렬을 분해하는 과정이다.
d. 독립 성분 분석(ICA, Independent Component Analysis) : 주성분을 이용한다는 점에서 PCA와 비슷하지만 데이터의 독립적인 축을 찾는다.
6) PCA
- 차원 축소의 기법 중 하나이다.
- 데이터를 일련의 구성 요소(데이터 내에서 표현되는 정보)로 분리해 데이터 셋의 밀도 문제를 개선할 수 있다.
6.1) PCA를 알아보기 전에 기초 통계개념 알아보기
a. 평균 : 단순히 모든 값을 더한 후 집합의 수로 나눈 값
b. 표준 편차 : 평균에 근접한 데이터의 양을 측정한것으로 데이터 집합에서 데이터 집합 약68%의 값들이 평균에서 양쪽 1 표준편차 범위에 존재한다. 또한 분산은 표준 편차의 제곱을 한 값이다.
c. 공분산 : 2개의 확률 변수의 상관정도를 나타내는 값이며, 확률 변수 X의 증감에 따른 확률 변수 Y의 증감의 경향에 대한 측도이다.
Cov(X, Y) = E[(X - E(X))(Y - E(Y))] = E(XY) - E(X)E(Y)
* Cov(X,Y ) > 0 : X ↑⇒Y ↑ ex) X :height, Y :weight
* Cov(X,Y ) < 0 : X ↑⇒Y ↓ ex) X :age, Y : eyesight
* Cov(X,Y ) = 0 : no relationship ex) X :age, Y : eye size
d. 공분산 행렬 : 각 데이터의 분산과 공분산을 이용해 만드는 행렬
'비지도 학습 (Unsupervised Learning) > Applied Unsupervised Learning with Pytho' 카테고리의 다른 글
장바구니 분석( Apriori 알고리즘 ) (0) | 2020.02.05 |
---|---|
7장 토픽 모델링(LDA) (0) | 2020.01.11 |
3장 이웃 접근과 DBSCAN (0) | 2020.01.06 |
2장 계층적 클러스터링(Hierarchical Clustering) (0) | 2019.12.28 |