티스토리 뷰

대표적인 머신러닝(기계학습) 분야는 아래 그림과 같이 지도학습, 비지도학습, 강화학습으로 나뉘며

본 글에서는 비지도학습 중 차원축소를 알아보기로 한다.

 

머신러닝 (기계학습) 분야

 

▼ 지도학습 - 회귀, 분류 알아보기

[머신러닝] 머신러닝 심화 : 지도학습 - 회귀(Regression)

[머신러닝] 머신러닝 심화 : 지도학습 - 분류(Classification)

 

▼ 비지도학습 - 클러스터링 알아보기

[머신러닝] 머신러닝 심화 : 비지도 학습(Unsupervised-Learning) - 클러스터링

 

▼ 비지도학습 - 의사결정 나무 알아보기

[머신러닝] 머신러닝 심화 - 의사결정 나무 (Decision Tree)

 


 

차원축소(Dimensionality Reduction)

차원축소는 고차원의 데이터를 저차원으로 압축하는 알고리즘이다. 

고차원 데이터는 차원의 저주가 발생할 수 있기 때문에 차원의 저주를 막고 모델 학습 속도와 성능을 향상시키기 위해 차원 축소가 활용된다.

*차원의 저주
: 차원이 높을수록 학습에 필요한 데이터 개수도 증가하는데, 적은 개수로 진행할 때 과적합이 일어날 수 있다.

대표적인 차원 축소 알고리즘으로 주성분 분석t-SNE가 있다.

 

 

주성분 분석(Principle Component Analysis, PCA)

주성분 분석은 원본 데이터의 분포나 특징(데이터간의 거리)을 잘 유지하면서 차원을 축소한다.

고차원 데이터를 가장 잘 설명할 수 있는, 즉 원본데이터와의 차이(오차)를 최소화하는 축인 주성분(Principle Component)을 찾는다.

 

[Python] 사이킷런 함수/라이브러리로 PCA 구현 

from sklearn.decomposition import PCA : 사이킷런의 주성분 분석(PCA) 모델을 불러오기
PCA(n_components): n_components 개수로 차원을 축소하는 주성분 분석 정의
[Model].transform(data): data를 차원 축소시킨 결과 데이터를 반환

 


 

t-SNE(t-Stochastic Neighborhood Embedding)

t-SNE는 고차원에 있는 데이터간의 거리를 최대한 유지하면서 차원을 축소하는 알고리즘이다.

계산할 때마다 값이 계속 바뀌어 예측을 위한 학습 데이터에서는 사용할 수 없고 시각화에 활용된다.

각 데이터와 다른 데이터간의 유사도(거리)를 계산 (우: 계산 결과)
유사도 확률분포에 맞춰 데이터를 이동 (우: 결과)

 

[Python] 사이킷런 함수/라이브러리로 t-SNE 구현 

from sklearn.manifold import TSNE : 사이킷런의 t-SNE 모델을 불러오기
TSNE(n_components): n_components 개수로 차원을 축소하는 모델 정의
[Model].fit_transform(data): data를 학습시키면서 차원 축소 시킨 결과 데이터를 반환

 

 

 

 

※ 엘리스 <머신러닝 심화> 를 듣고 이해한 바를 요약한 것으로 사실과 다른 방향이 있을 수 있음
댓글