호빵이의 알고리즘

t-SNE 본문

공부/YM

t-SNE

남현경 2019. 11. 7. 16:02
데이터분석과 관련하여 가장 중요한 것은 데이터가 어떻게 생겼는지 탐색하는 과정입니다.

이 과정에 데이터의 특정 변수의 분포를 관찰할 수도 있고, 서로 상관관계가 있는 변수들이 어떻것이 있는지 살표보는 과정이 있을 수도 있다. 하지만, 최근에는 데이터셋이 갖고 있는 변수의 숫자가 늘어남에 따라서 몇몇 특정 변수의 분포를 살펴보는 것으로 데이터를 탐색한다고 말하기가 어려운 상황입니다. 고차원의 데이터로부터 핵심적인 정보를 추려내고 시각화 한 후에야 데이터가 어떤 특징을 갖고 있는지 탐색하는게 가능합니다. 이러한 문제점을 해결해 줄 수 있는 방법으로 고차원 데이터의 차원을 줄여서 시각화 하는 기술은 매우 중요합니다. 이러한 기술로 주성분분석(Principle Component Analysis, PCA)와 t-Distributed Stochastic Neibhbor Embedding 방법이 있습니다.

 

이번 글에서는 데이터 차원축소(dimesionality reduction)와 시각화(visualization) 방법론으로 널리 쓰이는 t-SNE(Stochastic Neighbor Embedding)에 대해 살펴보도록 하겠습니다.

 

csv 파일 읽기
1000개씩 읽어서 data_x에 저장
label 만들기
합치기

list에 효율적으로 넣는 방법을 아직 못 찾음 (여기서는 13개 데이터로 진행한 걸 잘라서 보여주는 것)

t-sne

3차원으로 보여주기 위해 n_components = 3으로 설정.

xs, ys, zs 중에 이번 데이터는 (xs, zs)가 더 잘 나와서 선택

 

t-SNE는 데이터 차원을 축소하는데 사용되는 기법입니다. 특히, 고차원의 데이터를 시각화 하는데 아주 유용하게 사용되는 방법입니다. t-SNE 알고리즘에 대한 자세한 설명은 링크되어 있는 논문을 통해서 공부해 보시기 바랍니다.

t-SNE는 원본 데이터를 가장 잘 표현할 수 있도록 데이터의 차원을 줄이는 방법입니다. t-SNE 알고리즘은 많은 계산이 요구되기 때문에, 1차적으로 차원을 축소한 후에 t-SNE 알고리즘에 데이터를 입력해야 하는 경우도 있을 것입니다. 또한, t-SNE 알고리즘은 N개의 데이터가 있을때 N^2 만큼 시간이 오래걸리기 때문에 실제 데이터를 분석하는데 있어서 제한적일 수 있습니다

 

시각화 결과를 보면 (PCA에 비해) 각 숫자들을 아주 잘 구분해 주는 것을 알 수 있다. 만약 분석에 사용되는 데이터 샘플의 숫자를 줄이지 않고, t-SNE를 이용하고 싶다면, PCA를 이용해서 원본 데이터를 50차원 정도로 줄인 후에 t-SNE를 적용하는 방법을 추천한다.

'공부 > YM' 카테고리의 다른 글

python 버전 맞추기  (0) 2019.11.05
[Ubuntu] Deep Learning 환경 설정  (0) 2019.04.08
[Ubuntu] Nvidia 드라이버 설치  (0) 2019.04.08
[Ubuntu] USB ERROR  (0) 2019.04.04