더북(TheBook)

5.3.2 t-SNE를 사용한 데이터 시각화

비선형 차원 축소에 대해 소개하고 몇 가지 도전 과제를 논의했으니 복잡한 데이터셋을 2차원 또는 3차원으로 시각화하는 데 자주 사용되는 t-SNE 예제를 살펴보겠습니다.

간단히 말해, t-SNE는 고차원(원본) 특성 공간에서 샘플 쌍의 거리를 기반으로 데이터 포인트를 모델링합니다. 그다음 새로운 저차원 공간에서 원본 공간에 있는 쌍 거리의 확률 분포에 가까운 쌍 거리의 확률 분포를 찾습니다. 즉, t-SNE는 원본 공간의 쌍 거리가 유지되도록 데이터 포인트를 저차원 공간에 임베딩하는 방법을 학습합니다. 이 방법에 대한 자세한 내용은 논문13에서 확인할 수 있습니다. 하지만 이 논문 제목에서 알 수 있듯이 t-SNE는 시각화를 위한 기법이므로 투영을 위해 전체 데이터셋이 필요합니다. (PCA와 달리 투영 행렬을 사용하지 않고) 데이터 포인트를 직접 투영하기 때문에 새로운 데이터 포인트에 t-SNE를 적용할 수 없습니다.

다음 코드는 64차원 데이터셋에 t-SNE를 적용하는 간단한 데모를 보여 줍니다. 먼저 저해상도 손 글씨 숫자(숫자 0~9) 데이터셋을 사이킷런으로부터 로드합니다.

>>> from sklearn.datasets import load_digits
>>> digits = load_digits()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.