본문 바로가기
Archive/TIL

[TIL] 0706 아침 스터디 / t-SNE

by 다람이도토리 2022. 7. 6.
추가 참고자료
https://gaussian37.github.io/ml-concept-t_sne/
https://lovit.github.io/nlp/representation/2018/09/28/tsne/
https://velog.io/@swan9405/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-T-SNE-T-distributed-Stochastic-Neighbor-Embedding

PCA -> t-SNE
PCA는 차원축소를 하면서, 축소된 데이터들이 "어떤 군집에 속하는지?"에 대답하기 어렵다.
이를 해결하기 위해, t-SNE를 활용.

t-SNE란? (t-distributed stochastic neighbor embedding) 

* 고차원 데이터 -> 저차원(주로 2차원?)으로 축소할 수 있는 방법,  낮은 차원 공간으로 시각화 하는데에 이용 가능.!

t-SNE의 간략한 과정

(1) 한 점을 선택 후, 다른 점까지의 거리를 측정한다.
(2) t-분포의 가운데에, 선택한 점을 놓고 기준점으로 둔다.
(3) 기준점에서 상대점까지의  측정 거리를 기준으로 t-분포의 값을 선택한다. (유사도)
(4) 유사도가 가까운 값끼리 그룹화.

조금 더 수학적으로 보기.

유사도의 계산에서 t분포를 활용할 수 있을 것이다.

기준점에서, 다른 점까지의 euclidean 거리를 계산 후, 

를 계산한다. 그런데 이것들의 합으로 모든 점들의 위의 값을 각각 나눠주면 , 확률 형태가 된다.!

* 그런데, 이럴거면 왜 정규분포를 쓰지 않고 t-분포를 쓰는가?

- t-분포는 정규분포 대비, 끝단의 값이 더 두터운 분포를 가짐.
-> 거리가 멀리 떨어진 데이터의 구분을 더 명확하게 하기 위해 (즉, 유사도가 낮을수록 더 멀리 보내기) 
t분포를 사용한다. (특히 이를 위해 자유도를 1로 두고 계산하면 좋다.)

* scikit-learn에 이것이 이미 잘 되어 있다. 감사하자.