Machine Learning

t-sne

뚜둔뚜둔 2019. 7. 18. 10:58

차원축소, 시각화 도구: t - SNE (Stochastic Neighbor Embedding)

 

MNIST t-SNE Visualization, Source: https://www.flickr.com/photos/kylemcdonald/26620503329

 

 

 

 SNE 
(Stochastic Neighbor Embedding)
고차원 공간에서 유클리드 거리( Euclidean distance)를 데이터 포인트의 유사성을 표현하는 조건부 확률(conditional probability)로 변환하는 방법

 

t-SNE

  • 끝단이 퍼지는 다른 분포를 이용
    • 고차원 공간: 가우스 분포 유사도로 변환
    • 저차원 공간: 자유도 1의 분포 유사도로 변환
  • 적당히 떨어진 점을 맵에서 더 멀리 배치 가능
  • 데이터 점과 닮지 않은 점 사이의 인력을 제거 가능

장점

  1. 데이터 점 사이의 거리가 큰 것을 유사하지 않은 점으로 모델링
  2. 데이터 점 사이의 거리가 작은 것을 유사한 점으로 모델링
  3. Cost ft'n 의 최적화가 용이 (사전 매개 변수 탐색이 필요 없음)

학습을 보다 효과적으로 하기 위한 두가지 기법

  1. Early Compression
    • 최적화 시작할 때 맵상의 점을 밀집하도록 함
    • 비용 함수로 L2 norm regularization항을 추가
    • 클러스터가 예쁘게 분리되는 것을 도와줌
  2. Early exaggeration
    • 최적화 시작 시에 pij에 적당한 숫자(4)를 적용함.
    • qij은 매우 작기 때문에 pij에 대응하기 위해 크게 움직임
    • 이에 따라 맵점이 널리 퍼지도록 만듬
    • 클러스터가 Global한 구조를 쉽게 찾을 수 있음
  3. 학습효율을 높이기 위해 둘 중 어떤 것이라도 사용 할 수 있음
import pandas as pd
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
from future.utils import iteritems
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

A = np.random.normal(scale=1, size=(100, 3))
B = np.array([x for x in np.random.normal(scale=5, size=(500,3)) if np.linalg.norm(x) > 7])
C = np.random.normal(scale=1, size=(100, 3))

# synthetic dataset
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(A[:, 0], A[:, 1], A[:, 2])
ax.scatter(B[:, 0], B[:, 1], B[:, 2])

 

 

 

반응형

'Machine Learning' 카테고리의 다른 글

[Book][doit_2]분산 학습  (0) 2022.02.06
NLP 를 위한 CNN  (0) 2020.07.14
Word2Vec  (0) 2020.07.13
Bert  (0) 2020.07.13
Confusion Matrix _ PYCM  (0) 2019.07.18