๋ฐ์ํ
์ด๋ฒ์ t-SNE (t-Distributed Stochastic Neighbor Embedding)์ ๋ฐํ์ฌ ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
t-SNE๋ ๊ณ ์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฐจ์ ๊ณต๊ฐ์ ํจ๊ณผ์ ์ผ๋ก ์๊ฐํํ๊ธฐ ์ํด ๊ฐ๋ฐ๋ ๋น์ ํ ์ฐจ์ ์ถ์ ๊ธฐ๋ฒ์ ๋๋ค. ์ฃผ๋ก ๊ณ ์ฐจ์ ๋ฐ์ดํฐ์ ํด๋ฌ์คํฐ๋ง ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ์ง์ญ์ ์ ์ฌ์ฑ์ ๋ณด์กดํ๋ ๋ฐ ๊ฐ๋ ฅํ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
t-SNE์ ํน์ง
t-SNE์ ํน์ง์ ์ด๋ ํ ์ ๋ค์ด ์์๊น์?
- ๋น์ ํ ์ฐจ์ ์ถ์: t-SNE๋ ๊ณ ์ฐจ์ ๋ฐ์ดํฐ์ ๋น์ ํ ๊ตฌ์กฐ๋ฅผ ์ ์ฐจ์์์ ๋ณด์กดํ๋ ๋ฐ ํนํ๋์ด ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๊ฐ ์ ํ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง์ง ์๋ ๊ฒฝ์ฐ์๋ ์ ํฉํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ง์ญ์ ์ ์ฌ์ฑ ๋ณด์กด: t-SNE๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ์ง์ญ์ ์ ์ฌ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์ด๋ ํด๋ฌ์คํฐ ๋ด์ ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ด ์ ์ฐจ์ ๊ณต๊ฐ์์๋ ๊ฐ๊น๊ฒ ๋ฐฐ์น๋๋๋ก ํฉ๋๋ค.
- ํ๋ฅ ๊ธฐ๋ฐ ์ ๊ทผ: t-SNE๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ํ๋ฅ ๋ก ๋ณํํ์ฌ ์ฐจ์์ ์ถ์ํฉ๋๋ค. ์ด๋ ๊ณ ์ฐจ์ ๊ณต๊ฐ์์ ๊ฐ๊น์ด ๋ฐ์ดํฐ ํฌ์ธํธ๋ค์ด ์ ์ฐจ์ ๊ณต๊ฐ์์๋ ๊ฐ๊น์ด ๋ฐฐ์น๋๋๋ก ์ ๋ํฉ๋๋ค.
- KL ๋ฐ์ฐ ์ต์ํ: t-SNE๋ ๊ณ ์ฐจ์๊ณผ ์ ์ฐจ์ ๊ฐ์ ํ๋ฅ ๋ถํฌ ์ฐจ์ด๋ฅผ KL ๋ฐ์ฐ(Kullback-Leibler Divergence)์ ํตํด ์ต์ํํ์ฌ ์ต์ ์ ์ ์ฐจ์ ์๋ฒ ๋ฉ์ ํ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณด์กดํฉ๋๋ค.
t-SNE์ ๊ธฐ๋ณธ ์๋ฆฌ
t-SNE์ 3๊ฐ์ง์ ๊ธฐ๋ณธ ์๋ฆฌ๊ฐ ์์ต๋๋ค.
๊ณ ์ฐจ์ ๊ณต๊ฐ์์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๋ฐ ํ๋ฅ ๋ณํ
- ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ณ , ์ด ๊ฑฐ๋ฆฌ๋ฅผ ํ๋ฅ ๋ก ๋ณํํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๊น์ด ์ด์ ๊ฐ์ ์ ์ฌ์ฑ์ ํ๋ฅ ๋ก ํํํฉ๋๋ค.
์ ์ฐจ์ ๊ณต๊ฐ์์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๋ฐ ํ๋ฅ ๋ณํ
- ์ด๊ธฐํ๋ ์ ์ฐจ์ ๊ณต๊ฐ์์์ ๊ฑฐ๋ฆฌ๋ ํ๋ฅ ๋ก ๋ณํํ์ฌ, ๊ณ ์ฐจ์ ๊ณต๊ฐ์ ํ๋ฅ ๊ณผ ๋น๊ตํฉ๋๋ค. ์ ์ฐจ์ ๊ณต๊ฐ์์์ ๋ฐฐ์น๋ ์ด ํ๋ฅ ์ ๋ฐํ์ผ๋ก ์กฐ์ ๋ฉ๋๋ค.
ํ๋ฅ ๋ถํฌ ๊ฐ์ ์ฐจ์ด ์ต์ํ
- ๊ณ ์ฐจ์ ๊ณต๊ฐ๊ณผ ์ ์ฐจ์ ๊ณต๊ฐ์ ํ๋ฅ ๋ถํฌ ๊ฐ์ ์ฐจ์ด๋ฅผ KL ๋ฐ์ฐ์ ์ฌ์ฉํด ์ต์ํํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ ์ฐจ์ ๊ณต๊ฐ์์์ ๋ฐ์ดํฐ ํฌ์ธํธ ๋ฐฐ์น๊ฐ ์ต์ ํ๋ฉ๋๋ค.
t-SNE์ ์ฅ, ๋จ์ & ๊ฐ์ ๋ฐฉ๋ฒ
t-SNE์ ์ฅ์
- ๊ณ ์ฐจ์ ๋ฐ์ดํฐ ์๊ฐํ: t-SNE๋ ๊ณ ์ฐจ์ ๋ฐ์ดํฐ์ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ 2์ฐจ์ ๋๋ 3์ฐจ์์ผ๋ก ํจ๊ณผ์ ์ผ๋ก ์๊ฐํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ํด๋ฌ์คํฐ ๊ตฌ์กฐ๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค.
- ์ง์ญ์ ์ ์ฌ์ฑ ๋ณด์กด: ๋ฐ์ดํฐ ํฌ์ธํธ ๊ฐ์ ์ง์ญ์ ์ ์ฌ์ฑ์ ์ ์ ์งํ์ฌ, ์ ์ฐจ์ ๊ณต๊ฐ์์ ํด๋ฌ์คํฐ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ํํํ ์ ์์ต๋๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ ์ ํ ์ฒ๋ฆฌ: t-SNE๋ ์ด๋ฏธ์ง, ํ ์คํธ, ์ ์ ์ ๋ฐ์ดํฐ ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ ๋ฐ์ดํฐ์ ํน์ฑ์ ์ ๋ฐ์ํฉ๋๋ค.
t-SNE์ ๋จ์
- ์๊ฐ ๋ณต์ก๋: t-SNE๋ ํฐ ๋ฐ์ดํฐ์ ์์๋ ๊ณ์ฐ ๋น์ฉ์ด ๋์ ์คํ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ํนํ ๋ฐ์ดํฐ์ ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ด ๋ฌธ์ ๊ฐ ์ฌ๊ฐํด์ง๋๋ค.
- ๋งค๊ฐ๋ณ์ ๋ฏผ๊ฐ์ฑ: t-SNE๋ perplexity์ ํ์ต๋ฅ ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์์ ๋ฏผ๊ฐํฉ๋๋ค. ์ ์ ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฒ์ ์คํ์ด ํ์ํ ์ ์์ต๋๋ค.
- ํด์์ ์ด๋ ค์: t-SNE์ ๊ฒฐ๊ณผ๋ ์ ์ฐจ์ ๊ณต๊ฐ์์ ์ด๋ป๊ฒ ํด์๋์ด์ผ ํ๋์ง ๋ช ํํ์ง ์์ ์ ์์ต๋๋ค. ํนํ, ์ ์ฐจ์ ์๋ฒ ๋ฉ์ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๋ฐ ์ด๋ ค์์ด ์์ ์ ์์ต๋๋ค.
t-SNE์ ๊ฐ์ ๋ฐฉ๋ฒ
- ๋งค๊ฐ๋ณ์ ์ต์ ํ
- perplexity, ํ์ต๋ฅ ๋ฑ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ ํํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก perplexity๋ ๋ฐ์ดํฐ ํฌ์ธํธ ์์ 1/10์์ 1/5 ์ฌ์ด์ ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ถ์ฒ๋ฉ๋๋ค.
- ๋๊ท๋ชจ ๋ฐ์ดํฐ์
์ฒ๋ฆฌ
- Barnes-Hut t-SNE์ ๊ฐ์ ๋ณํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์๋ ํจ์จ์ ์ผ๋ก ์๋ํ ์ ์์ต๋๋ค. ์ด ๋ณํ์ t-SNE์ ๊ณ์ฐ ๋ณต์ก์ฑ์ ์ค์ด๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค.
- ์ฐจ์ ์ถ์ ์ ์ ์ฒ๋ฆฌ
- ๋ ธ์ด์ฆ๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, ์ฌ์ ์ PCA์ ๊ฐ์ ๊ธฐ๋ฒ์ผ๋ก ์ฐจ์์ ์ถ์ํ ํ t-SNE๋ฅผ ์ ์ฉํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด๋ t-SNE๊ฐ ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ์ ๋ณต์ก์ฑ์ ์ค์ด๋ ๋ฐ ๋์์ ์ค๋๋ค.
t-SNE Example Code
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
# Iris ๋ฐ์ดํฐ์
๋ก๋
iris = load_iris()
X = iris.data
y = iris.target
# ๋ฐ์ดํฐ ํ์คํ
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# t-SNE ์ ์ฉ
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)
# t-SNE ๊ฒฐ๊ณผ ์๊ฐํ
plt.figure(figsize=(10, 7))
for target in np.unique(y):
plt.scatter(X_tsne[y == target, 0], X_tsne[y == target, 1], label=iris.target_names[target])
plt.xlabel('t-SNE Component 1')
plt.ylabel('t-SNE Component 2')
plt.title('t-SNE of Iris Dataset')
plt.legend()
plt.show()
๋ฐ์ํ
'๐ Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] Emsemble Methods (์์๋ธ ๊ธฐ๋ฒ) (0) | 2024.08.23 |
---|---|
[ML] ์ฐ๊ด ๊ท์น ํ์ต (Association Rule Learning) (0) | 2024.08.22 |
[ML] Isomap (์์ด์๋งต) (0) | 2024.08.20 |
[ML] Principal Component Analysis (PCA - ์ฃผ์ฑ๋ถ ๋ถ์) (0) | 2024.08.18 |
[ML] DBSCAN (Density-Based Spatial Clustering of Applications with Noise) (0) | 2024.08.18 |