/ EXITEM, TIL

t-SNE

t-SNE

t-Distributed Stochastic Neighbor Embedding의 약자

정의

비선형 알고리즘 중 하나로 고차원 데이터를 저차원으로 임베딩하는 데 사용됩니다. 데이터 포인트 간의 유사도를 보존하면서 고차원 공간에서의 상대적인 거리를 저차원 공간으로 보존하는 방법을 찾습니다.

사용

시각화, 분류, 군집화 등 다양한 데이터 분석 작업에 유용하게 사용됩니다.

작동 방식

  1. 고차원 공간에서 각 데이터 포인트들 간의 거리를 계산합니다.
    • 이 거리는 유사도 매트릭스(Similarity Matrix)라는 이름으로도 불립니다.
  2. 저차원 공간에서 각 데이터 포인트들 간의 거리를 계산합니다.
    • 처음에는 무작위 선택한 값들로 시작하며, 이후에는 경사 하강법(Gradient Descent)을 사용하여 계속 업데이트 됩니다.
  3. 고차원 공간과 저차원 공간에서 각각의 데이터 포인트들을 비교합니다.
    • 두 공간에서의 데이터 포인트 간 거리 차이(고차원 공간에서의 거리 - 저차원 공간에서의 거리)를 최소화하는 방향으로 임베딩을 조정합니다.
  4. 이전 단계를 반복하여 저차원 공간에서의 임베딩을 최적화합니다.

특징

고차원 데이터를 저차원으로 표현하면서도 이상치(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]]