01. 2분 안에 말하기

t-분포 확률적 임베딩(t-SNE, t-distributed stochastic neighbor embedding)은 고차원 데이터를 특히 2차원에 차원 축소하는 방법입니다. 주로 낮은 차원 공간의 시각화에 사용하며, 차원을 축소할 때는 비슷한 구조끼리 데이터를 정리한 상태이므로 데이터 구조를 이해하는 데 도움을 줍니다.

t-SNE 알고리즘은 두 단계에 걸쳐서 진행됩니다. 첫번째로, 각 데이터 쌍에 대해서 결합분포를 만듭니다. 이 분포는 비슷한 데이터는 선택될 확률이 매우 높지만 다른 데이터끼리는 선택될 확률이 매우 낮도록 설계됩니다. 따라서, 높은 차원 공간에서 비슷한 데이터 구조는 낮은 차원 공간에서 가깝게 대응하며, 비슷하지 않은 데이터 구조는 멀리 떨어져 대응됩니다.t-SNE 알고리즘은 고차원 공간에서의 점들의 유사성과 그에 해당하는 저차원 공간에서의 점들의 유사성을 계산합니다. 점들의 유사도는 (A를 중심으로 한 정규 분포에서 확률 밀도에 비례하여 이웃을 선택하면 포인트 A가 포인트 B를 이웃으로 선택한다는) 조건부 확률로 계산됩니다. 그리고 저 차원 공간에서 데이터 요소를 완벽하게 표현하기 위해 고차원 및 저차원 공간에서 이러한 조건부 확률 (또는 유사점) 간의 차이를 최소화하려고 시도합니다. 조건부 확률의 차이의 합을 최소화하기 위해 t-SNE는 gradient descent 방식을 사용하여 전체 데이터 포인트의 KL-divergence 합계를 최소화합니다.이러한 방식으로, t-SNE는 다차원 데이터를보다 낮은 차원 공간으로 매핑하고, 다수의 특징을 갖는 데이터 포인트의 유사성을 기반으로 점들의 클러스터를 식별함으로써 데이터에서 패턴을 발견합니다.

(t-SNE는 컴퓨터 보안, 음악 분석, 암 연구, 생물정보학, 생체신호처리 등 너른 분야에서 데이터의 시각화를 위해 사용되며, 인공 신경망의 상위 계층을 표현하는데 쓰이기도 합니다.)

02. 추가 학습 포인트

3차원 데이터를 오른쪽과 같이 2차원 데이터로 차원을 축소한 예시

t-SNE에서 낮은 차원에 임베딩 할 때, 정규 분포를 사용하지 않고 t-분포를 사용합니다.그 이유는 앞에서 다루었듯이 t-분포가 heavy-tailed distribution임을 이용하기 위해서 입니다. 즉, t-분포는 일반적인 정규분포보다 끝단의 값이 두터운 분포를 가집니다.t-SNE가 전제하는 확률 분포는 정규 분포이지만 정규 분포는 꼬리가 두텁지 않아서 i번째 개체에서 적당히 떨어져 있는 이웃 j와 아주 많이 떨어져 있는 이웃 k가 선택될 확률이 크게 차이가 나지 않게 됩니다. 또한 높은 차원 공간에서는 분포의 중심에서 먼 부분의 데이터 비중이 높기 때문에 데이터 일부분의 정보를 고차원에서 유지하기가 어렵습니다.이러한 문제로 인하여 구분을 좀 더 잘하기 위해 정규 분포보다 꼬리가 두터운 t분포를 쓰게 되며 꼬리가 부분이 상대적으로 더 두텁게 degree of freedom = 1로 적용하여 사용합니다. 또한, t-분포도 마찬가지로 표본 평균, 표본 분산으로 정의되는 확률변수이기 때문에 표본의 수가 많아질수록 중심 극한 정리에 의해 결국에는 정규 분포로 수렴하게 됩니다. 이것은 t-SNE가 전제하는 확률 분포가 정규 분포인 점과 일맥상통 합니다.

: 한 확률 분포가 두 번째 예상 확률 분포와 어떻게 다른지 측정하는 척도-> t-SNE는 두가지 분포의 KL divergence를 최소화(입력 객체(고차원)들의 쌍으로 이루어진 유사성을 측정하는 분포, 저차원 점들의 쌍으로 유사성을 측정하는 분포)

**<장점>**1. 특징을 추출하거나, 데이터의 특징을 가시화하기에 아주 robust한 알고리즘이다.2. 기존 PCA (주성분 분석)와 같은 선형 변환은 데이터를 저차원으로 임베딩하여 가시화할 때 겹쳐서 뭉개지는 부분 발생하지만, unsupervised learning의 일종인 t-SNE를 사용한다면 문제점이 해소된다.3. 저차원 임베딩을 t 분포 기반으로하기 때문에 기존 SNE 방법과 같이 저차원 임베딩에서 정규분포(가우스 분포)를 사용했을 때 나타나는 crowding(특정 거리 이상부터는 학습에 반영이 되지 않는) 문제점이 해결된다.4. 다른 차원 축소 알고리즘에 비해 hyperparameter의 영향이 적고 이상치(outlier)에 둔감하다.

**<단점>**1. 차원 축소의 시간이 너무 오래걸린다.- 데이터 개수에 따른 연산량 증가- 높은 차원의 데이터를 순차적으로 차원 축소- 참고: 실제 구현 레벨에서는 Barnes hut t-SNE 라는 방법을 통해 더 계산 효율적인 구현 방식을 택한다. scikit-learn 의 t-sne 구현체는 이 방식을 활용한다.2. 매번 돌릴 때마다 다른 시각화 결과가 나온다.(training 과 prediction 을 동시에 수행)→ 학습에 활용할 수 없게 됨 혹은 seed 고정으로 결과값 통일3. 저차원 임베딩 시 정보손실이 발생하여 데이터 왜곡의 가능성이 존재한다.4. t-sne 과정이 끝나면 input feature를 확인하기가 어렵다.

+) t-SNE 알고리즘 수행 절차 관련 수학적 설명참고 포스팅

03. 코드 활용 참고

scikit-learn에 있는 손글씨 데이터셋https://velog.io/@swan9405/머신러닝-T-SNE-T-distributed-Stochastic-Neighbor-Embedding**MNIST 데이터를 이용하여 시각화**https://gaussian37.github.io/ml-concept-t_sne/**sklearn.manifold.TSNE**https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

04. 참고 문헌

https://gaussian37.github.io/ml-concept-t_sne/https://ko.wikipedia.org/wiki/T-분포_확률적_임베딩https://kwonkai.tistory.com/65