← Back to Blog

[Data Analysis] t-SNE

artificial intelligence > machine learning

2026-07-042 min read

#ai #machine-learning #data-analysis #tsne

t-SNE 목적

PCA와 목적이 다르다.

PCA는 다음을 목표로 한다.

전체 데이터 구조 유지

t-SNE는 다음을 목표로 한다.

고차원 공간 이웃 관계 최대한 유지

즉, 절대적인 거리보다 가까운 데이터끼리 가까운 위치를 유지하는 것이 목적이다.


거리 대신 확률 사용

고차원 데이터는 다음과 같이 둔다.

xi,  xjx_i,\;x_j

두 데이터 사이의 거리를 계산한다.

xixj2\|x_i-x_j\|^2

하지만 거리를 그대로 사용하지 않는다.

가우시안 분포를 이용한다.

pji=exp(xixj22σi2)kiexp(xixk22σi2)p_{j|i} = \frac{ \exp\left( -\frac{\|x_i-x_j\|^2}{2\sigma_i^2} \right) }{ \sum_{k\neq i} \exp\left( -\frac{\|x_i-x_k\|^2}{2\sigma_i^2} \right) }

이는 다음을 의미한다.

ii 기준 jj가 이웃일 확률

거리가 가까울수록 확률이 증가한다.

거리가 멀수록 확률이 감소한다.


대칭 확률

조건부 확률을 그대로 사용하지 않는다.

대칭화를 수행한다.

Pij=pij+pji2NP_{ij} = \frac{p_{i|j}+p_{j|i}}{2N}

고차원 공간의 이웃 관계가 완성된다.


저차원 공간 생성

2차원 좌표를 다음과 같이 둔다.

yiy_i

랜덤 초기화한다.

이번에는 Gaussian을 사용하지 않는다.

Student-t 분포를 사용한다.

Qij=(1+yiyj2)1kl(1+ykyl2)1Q_{ij} = \frac{ (1+\|y_i-y_j\|^2)^{-1} }{ \sum_{k\neq l} (1+\|y_k-y_l\|^2)^{-1} }

Student-t 사용하는 이유

Gaussian을 사용하면 Crowding Problem이 발생한다.

고차원 공간에서는 멀리 떨어질 공간이 충분하다.

하지만 2차원 공간에서는 모든 점이 중심으로 몰리기 쉽다.

Student-t 분포는 꼬리(Heavy Tail)가 길다.

따라서 멀리 있는 데이터 간 반발력(Repulsive Force)을 유지할 수 있다.

그 결과 클러스터 분리 효과가 향상된다.


목적 함수

고차원 확률을 다음과 같이 둔다.

PP

저차원 확률을 다음과 같이 둔다.

QQ

목표는 두 확률분포를 최대한 비슷하게 만드는 것이다.

이를 위해 KL Divergence를 사용한다.

KL(PQ)=ijPijlogPijQijKL(P\|Q) = \sum_{i\neq j} P_{ij} \log \frac{P_{ij}}{Q_{ij}}

최종 목적은 다음과 같다.

minYKL(PQ)\min_Y KL(P\|Q)

Gradient Descent

닫힌 해(Closed-form Solution)는 존재하지 않는다.

Gradient를 계산한다.

Lyi=4j(PijQij)yiyj1+yiyj2\frac{\partial L}{\partial y_i} = 4 \sum_j (P_{ij}-Q_{ij}) \frac{y_i-y_j} {1+\|y_i-y_j\|^2}

다음과 같이 반복 업데이트한다.

yiyiηLyiy_i \leftarrow y_i - \eta \frac{\partial L}{\partial y_i}

수렴 시까지 반복한다.


PCA와 차이

PCA는 다음과 같다.

선형 변환 기반 차원 축소.

공분산 행렬의 고유값 문제를 해결한다.

t-SNE는 다음과 같다.

비선형 최적화 기반 차원 축소.

고차원과 저차원의 이웃 관계를 확률분포로 표현한다.

두 확률분포의 차이인

KL(PQ)KL(P\|Q)

최소화하여 최종 임베딩을 생성한다.