Table of Contents
728x90
t-SNE(t-Distributed Stochastic Neighbor Embedding)은 고차원 데이터의 시각화를 위해 사용되는 차원 축소 기법입니다. 특히 데이터의 복잡한 구조와 클러스터를 저차원(주로 2차원 또는 3차원)으로 시각화하는 데 매우 효과적입니다.
t-SNE의 주요 개념
- 지역적 구조 보존:
- t-SNE는 고차원 데이터의 지역적 구조를 저차원 공간에서도 보존하려고 합니다. 즉, 고차원 공간에서 가까운 데이터 포인트들이 저차원 공간에서도 가깝게 유지되도록 합니다.
- 확률 분포:
- 고차원 공간에서 데이터 포인트 쌍 간의 유사도를 확률 분포로 변환합니다. 저차원 공간에서도 동일한 방식으로 확률 분포를 생성하여 두 분포 간의 차이를 최소화하는 방식으로 차원을 축소합니다.
- 쿨백-라이블러 발산 (KL Divergence):
- 고차원과 저차원 분포 간의 차이를 측정하기 위해 쿨백-라이블러 발산을 사용합니다. 이 차이를 최소화하는 방향으로 저차원 임베딩을 최적화합니다.
t-SNE의 장점
- 비선형 구조 캡처:
- t-SNE는 비선형 구조를 잘 캡처할 수 있어 복잡한 데이터의 패턴과 클러스터를 효과적으로 시각화할 수 있습니다.
- 직관적 시각화:
- 고차원 데이터의 클러스터링 구조를 2차원 또는 3차원으로 직관적으로 시각화할 수 있어 데이터의 잠재적 구조를 쉽게 파악할 수 있습니다.
t-SNE의 단점
- 시간 복잡도:
- t-SNE는 계산 비용이 매우 높기 때문에 대규모 데이터셋에서는 실행 시간이 길어질 수 있습니다.
- 해석의 어려움:
- 저차원 공간에서의 거리는 원래의 고차원 공간에서의 실제 거리를 정확히 반영하지 않습니다. 이는 저차원 시각화 결과를 해석하는 데 어려움을 줄 수 있습니다.
- 파라미터 민감성:
- t-SNE는 여러 하이퍼파라미터(예: 퍼플렉서티, 학습률 등)에 민감하며, 이러한 파라미터 값을 잘못 설정하면 결과가 크게 달라질 수 있습니다.
t-SNE 적용 예제
다음은 Python의 scikit-learn 라이브러리를 사용하여 t-SNE를 적용하는 예제입니다. 여기서는 Iris 데이터셋을 사용하여 시각화를 수행합니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import TSNE
# 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target
# 데이터 표준화
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
# t-SNE 적용
tsne = TSNE(n_components=2, random_state=0)
X_tsne = tsne.fit_transform(X_std)
# t-SNE 결과 시각화 (2D)
plt.figure(figsize=(8, 6))
for label, color, marker in zip(np.unique(y), ['r', 'g', 'b'], ['o', '^', 's']):
plt.scatter(X_tsne[y == label, 0], X_tsne[y == label, 1], label=iris.target_names[label], color=color, marker=marker, edgecolor='k')
plt.xlabel('첫 번째 t-SNE 주성분')
plt.ylabel('두 번째 t-SNE 주성분')
plt.legend()
plt.title('t-SNE를 사용한 Iris 데이터셋의 2D 시각화')
plt.show()
t-SNE의 주요 파라미터
- n_components:
- 차원 축소 후의 목표 차원 수를 지정합니다. 보통 2차원 또는 3차원으로 설정합니다.
- perplexity:
- 데이터의 지역적 구조를 얼마나 고려할지를 결정하는 파라미터입니다. 일반적으로 5에서 50 사이의 값을 사용합니다.
- learning_rate:
- 최적화 과정에서 학습률을 설정합니다. 보통 10에서 1000 사이의 값을 사용하며, 기본값은 200입니다.
- n_iter:
- 최적화를 수행할 최대 반복 횟수를 설정합니다. 기본값은 1000입니다.
결론
t-SNE는 고차원 데이터의 복잡한 구조를 저차원으로 효과적으로 시각화할 수 있는 강력한 도구입니다. 데이터의 클러스터링 패턴을 시각적으로 확인하고, 데이터의 숨겨진 구조를 파악하는 데 유용합니다. 그러나 계산 비용과 파라미터 설정에 주의해야 하며, 다른 차원 축소 기법과 함께 사용하여 최적의 결과를 도출하는 것이 좋습니다.
'ML' 카테고리의 다른 글
tsfresh, sktime, darts, gluonts, prophet: which is the best performance? (0) | 2024.06.09 |
---|---|
Feature Selection (1) | 2024.06.08 |
차원의 저주 Curse of Dimensionality, 주성분 분석 PCA (1) | 2024.06.02 |
데이터 어노테이션(data annotation) (1) | 2024.06.02 |
로지스틱 회귀(Logistic Regression) (1) | 2024.06.02 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 손실함수
- cnn
- 오블완
- 티스토리챌린지
- clustering
- Hugging Face
- git
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- recursion #재귀 #자료구조 # 알고리즘
- nlp
- LLM
- Python
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- PEFT
- English
- LIST
- t5
- speaking
- Lora
- 해시
- Github
- RAG
- 코딩테스트
- 파이썬
- 리스트
- Array
- Transformer
- Numpy
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- classification
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함