t-SNE
t-SNE
t-Distributed Stochastic Neighbor Embedding의 약자
정의
비선형 알고리즘 중 하나로 고차원 데이터를 저차원으로 임베딩하는 데 사용됩니다. 데이터 포인트 간의 유사도를 보존하면서 고차원 공간에서의 상대적인 거리를 저차원 공간으로 보존하는 방법을 찾습니다.
사용
시각화, 분류, 군집화 등 다양한 데이터 분석 작업에 유용하게 사용됩니다.
작동 방식
- 고차원 공간에서 각 데이터 포인트들 간의 거리를 계산합니다.
- 이 거리는 유사도 매트릭스(Similarity Matrix)라는 이름으로도 불립니다.
- 저차원 공간에서 각 데이터 포인트들 간의 거리를 계산합니다.
- 처음에는 무작위 선택한 값들로 시작하며, 이후에는 경사 하강법(Gradient Descent)을 사용하여 계속 업데이트 됩니다.
- 고차원 공간과 저차원 공간에서 각각의 데이터 포인트들을 비교합니다.
- 두 공간에서의 데이터 포인트 간 거리 차이(고차원 공간에서의 거리 - 저차원 공간에서의 거리)를 최소화하는 방향으로 임베딩을 조정합니다.
- 이전 단계를 반복하여 저차원 공간에서의 임베딩을 최적화합니다.
특징
고차원 데이터를 저차원으로 표현하면서도 이상치(outlier)나 군집(cluster)을 잘 보존하는 특징이 있습니다.
한계
계산 복잡도가 높기 때문에 대규모 데이터셋에는 적용하기 어려울 수 있습니다.
초기값에 따라 결과가 달라질 수 있으며, 최적의 임베딩을 찾기 위해서는 여러번 실험해야 할 수 있습니다.
예시
신용카드사기탐지(Kaggle) 내용에 있는 코드
# TruncatedSVD
t0 = time.time()
X_reduced_svd = TruncatedSVD(n_components=2, algorithm='randomized', random_state=42).fit_transform(X.values)
t1 = time.time()
print("Truncated SVD took {:.2} s".format(t1 - t0))
print(X_reduced_svd)
Truncated SVD took 0.006 s
[[-0.25397344 -0.4026077 ]
[39.96986913 -5.54968943]
[-0.42670461 -0.47991786]
...
[-0.24530641 -0.29455811]
[24.33797738 -4.63517225]
[50.95163444 33.17574323]]