차원축소, 시각화 도구: t - SNE (Stochastic Neighbor Embedding)
SNE
(Stochastic Neighbor Embedding)
고차원 공간에서 유클리드 거리( Euclidean distance)를 데이터 포인트의 유사성을 표현하는 조건부 확률(conditional probability)로 변환하는 방법
t-SNE
- 끝단이 퍼지는 다른 분포를 이용
- 고차원 공간: 가우스 분포 유사도로 변환
- 저차원 공간: 자유도 1의 분포 유사도로 변환
- 적당히 떨어진 점을 맵에서 더 멀리 배치 가능
- 데이터 점과 닮지 않은 점 사이의 인력을 제거 가능
장점
- 데이터 점 사이의 거리가 큰 것을 유사하지 않은 점으로 모델링
- 데이터 점 사이의 거리가 작은 것을 유사한 점으로 모델링
- Cost ft'n 의 최적화가 용이 (사전 매개 변수 탐색이 필요 없음)
학습을 보다 효과적으로 하기 위한 두가지 기법
- Early Compression
- 최적화 시작할 때 맵상의 점을 밀집하도록 함
- 비용 함수로 L2 norm regularization항을 추가
- 클러스터가 예쁘게 분리되는 것을 도와줌
- Early exaggeration
- 최적화 시작 시에 pij에 적당한 숫자(4)를 적용함.
- qij은 매우 작기 때문에 pij에 대응하기 위해 크게 움직임
- 이에 따라 맵점이 널리 퍼지도록 만듬
- 클러스터가 Global한 구조를 쉽게 찾을 수 있음
- 학습효율을 높이기 위해 둘 중 어떤 것이라도 사용 할 수 있음
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 |