t-SNE와 UMAP
고차원 데이터의 이웃 구조를 2차원 지도로 시각화
고객 한 명을 설명하는 변수가 50개라고 가정해 보겠습니다. 구매 빈도, 평균 구매액, 브랜드 선호도, 만족도, 가격 민감도 등 다양한 정보가 함께 들어 있습니다. 이런 데이터를 표만으로 살펴보면 고객들이 어떤 유형으로 나뉘는지 한눈에 파악하기 어렵습니다. 그렇다고 변수 50개를 사람이 직접 비교하기도 쉽지 않습니다. t-SNE와 UMAP은 고차원 데이터를 2차원이나 3차원 공간에 배치해 데이터의 구조를 시각적으로 살펴볼 수 있도록 돕는 차원 축소 기법입니다. 이 장에서는 두 방법의 원리, 주요 설정값, 결과 해석과 주의점을 알아봅니다.
고차원 데이터를 왜 시각화할까?
고차원 데이터에서는 여러 변수의 조합으로 만들어지는 패턴이 중요합니다. 두 고객의 구매 행동이 비슷한지 판단하려면 한두 개의 변수만으로는 부족할 수 있습니다. 예를 들어 고객 데이터에 구매 빈도, 평균 구매액, 브랜드 충성도, 가격 민감도, 할인 행사 반응, 제품 만족도, 재구매 의향, 추천 의향 같은 변수가 있다고 가정해 보겠습니다. 실제로는 이보다 더 많은 변수를 동시에 살펴볼 수 있습니다.
t-SNE와 UMAP은 이런 변수들을 활용해 각 관측값을 점으로 표현하고, 비슷한 관측값이 상대적으로 가까이 배치되도록 저차원 공간을 구성합니다.
그림 1의 왼쪽처럼 각 관측값이 많은 변수로 설명되어 있으면 전체적인 패턴을 직관적으로 파악하기 어렵습니다. 오른쪽처럼 각 관측값을 점으로 나타내면 가까이 모이는 데이터와 상대적으로 떨어지는 데이터를 탐색할 수 있습니다. 중요한 점은 이 그림이 정답을 알려 주는 것이 아니라는 것입니다. 시각화는 데이터의 패턴을 탐색하는 도구이며, 눈에 보이는 군집이 실제로 존재하는 집단인지는 별도로 검토해야 합니다.
t-SNE란?
t-SNE(t-distributed Stochastic Neighbor Embedding)는 고차원 공간에서 서로 가까운 관측값들의 관계를 저차원 공간에서도 최대한 보존하도록 배치하는 시각화 기법입니다. 핵심은 각 데이터 주변에 어떤 관측값들이 가까이 있는지를 보존하는 것입니다. 예를 들어 구매 행동이 비슷한 고객들이 있다면, t-SNE 결과에서도 이 고객들이 가까이 모이도록 배치하는 것을 목표로 합니다.
그림 2는 모의 고객 180명마다 원래 50차원에서 가장 가까운 이웃 10명을 찾은 뒤, 2차원 지도에서도 이웃 10명 안에 남은 비율을 비교한 것입니다. 분산을 최대한 보존하는 PCA는 22%에 그쳤지만, 이웃 관계를 보존하도록 만든 t-SNE는 40%, UMAP은 36%였습니다. 50차원을 2차원으로 줄이므로 완벽하게 보존할 수는 없지만, 두 방법은 "가까운 점끼리는 가깝게"라는 목표에 더 충실합니다.
고차원 데이터의 국소적인 이웃 관계를 시각화하는 데 유용합니다.
복잡한 비선형 구조를 탐색할 수 있습니다.
여러 덩어리가 보일 수 있지만, 그 덩어리가 반드시 실제 군집을 의미하지는 않습니다.
점과 점 사이의 전역적인 거리나 군집 간 간격을 정량적으로 해석하는 데는 주의가 필요합니다.
t-SNE는 특히 복잡한 데이터에서 비슷한 관측값들이 어떤 형태로 모이는지 탐색할 때 활용할 수 있습니다.
UMAP이란?
UMAP(Uniform Manifold Approximation and Projection) 역시 고차원 데이터의 구조를 저차원으로 표현하는 기법입니다. UMAP은 데이터의 이웃 관계를 바탕으로 저차원 표현을 구성하며, 국소적인 구조뿐 아니라 데이터의 전체적인 구조도 어느 정도 반영하도록 설계되어 있습니다. 다만 실제로 전역적인 거리를 얼마나 신뢰할 수 있는지는 데이터와 설정에 따라 달라집니다.
- 고차원 데이터의 이웃 관계와 구조를 시각화합니다.
- 데이터가 복잡하고 비선형적인 패턴을 가질 때 활용할 수 있습니다.
- n_neighbors와 min_dist 같은 설정에 따라 결과가 달라집니다.
- 구현과 데이터 크기에 따라 t-SNE보다 계산 효율이 좋은 경우가 많습니다.
UMAP도 군집을 자동으로 확정해 주는 분석은 아닙니다. 시각화에서 발견한 패턴은 원래 변수와 함께 확인해야 합니다.
t-SNE와 UMAP은 무엇이 다를까?
그림 3는 같은 모의 고객 180명을 세 방법으로 그린 결과입니다. 색은 데이터를 만들 때 정한 정답 유형이며 분석에는 쓰지 않았습니다. PCA에서는 세 유형이 겹쳐 있지만, t-SNE와 UMAP에서는 유형별로 뚜렷하게 모입니다. 같은 데이터인데도 방법에 따라 덩어리의 모양과 간격이 꽤 다르다는 점도 함께 볼 수 있습니다.
| 구분 | t-SNE | UMAP |
|---|---|---|
| 주요 목적 | 국소적인 이웃 관계 시각화 | 이웃 관계를 중심으로 데이터 구조 시각화 |
| 주요 특징 | 가까운 관측값의 관계를 강조 | 국소적 구조와 일부 전역적 구조를 함께 반영하도록 설계 |
| 주요 설정 | perplexity | n_neighbors, min_dist |
| 계산 효율 | 데이터 크기와 구현에 따라 달라짐 | 많은 상황에서 비교적 효율적 |
| 결과 해석 | 군집 내부의 패턴 탐색에 유용 | 군집과 데이터 구조를 탐색하는 데 유용 |
| 주의점 | 군집 간 거리와 크기를 과도하게 해석하지 않기 | 군집 간 거리와 크기를 과도하게 해석하지 않기 |
두 방법 모두 결과가 설정에 민감할 수 있습니다. 따라서 한 번 생성된 그림만 보고 데이터에 대한 결론을 확정하는 것은 바람직하지 않습니다.
주요 설정값은 어떤 역할을 할까?
t-SNE: perplexity
perplexity는 각 관측값의 이웃 관계를 구성할 때 고려하는 이웃 규모와 관련된 설정입니다. 상대적으로 작은 값은 더 좁은 범위의 국소 구조에 집중하고, 큰 값은 더 넓은 범위의 이웃 관계를 반영하는 경향이 있습니다.
그림 4에서 perplexity 2는 이웃을 아주 좁게 보기 때문에 같은 유형 안에서도 작은 조각으로 잘게 쪼개집니다. 30과 100에서는 세 덩어리가 분명하지만, 덩어리 사이의 배치는 서로 다릅니다. perplexity는 단순히 실제 이웃 수를 지정하는 값은 아닙니다. 데이터 크기에 맞는 값을 선택하고, 여러 설정에서 결과가 얼마나 안정적인지 비교하는 것이 좋습니다.
UMAP: n_neighbors와 min_dist
n_neighbors는 각 관측값의 근처 구조를 파악할 때 고려하는 이웃 수입니다. 작은 값은 세밀한 국소 구조를, 큰 값은 보다 넓은 범위의 구조를 반영하는 경향이 있습니다. min_dist는 저차원 공간에서 점들이 얼마나 가까이 모일 수 있는지에 영향을 줍니다. 작은 값은 점들이 더 조밀하게 모인 형태를, 큰 값은 상대적으로 덜 조밀한 배치를 만들 수 있습니다.
그림 5의 아래 두 칸을 보면 min_dist 0.0에서는 점들이 작은 덩어리로 빽빽하게 뭉치고, 0.9에서는 같은 덩어리가 넓게 퍼집니다. 데이터는 그대로인데 덩어리의 "크기"가 설정에 따라 달라진 것입니다. 이 값들은 시각화 결과에 영향을 주지만, 그 자체가 실제 군집 수나 군집의 존재를 결정하는 것은 아닙니다.
결과를 어떻게 해석할까?
가상의 고객 데이터에서 UMAP을 실행해 다음과 같은 패턴을 발견했다고 가정해 보겠습니다.
그림 6처럼 점들이 여러 덩어리로 모여 있다면 다음과 같은 질문을 할 수 있습니다.
각 덩어리에 속한 고객들은 실제로 어떤 특성을 공유하는가?
구매 빈도나 평균 구매액 같은 원래 변수에서도 차이가 나타나는가?
t-SNE와 UMAP의 설정을 바꾸어도 비슷한 구조가 유지되는가?
다른 표본이나 다른 기간의 데이터에서도 같은 패턴이 관찰되는가?
그림 6의 오른쪽은 질문 ②를 확인한 결과입니다. 덩어리 ①은 구매 관련 변수의 평균이 2.11로 높고, 덩어리 ②는 할인 반응 변수의 평균이 2.17로 높으며, 덩어리 ③은 구매 관련 변수가 중간(1.18) 수준입니다. 이처럼 한 덩어리에 속한 고객들이 실제로 높은 구매 빈도와 높은 재구매 의향을 보인다면, 해당 집단의 특징을 추가로 분석할 근거가 될 수 있습니다.
변수 50개로 측정한 고객 180명을 UMAP(n_neighbors = 15, min_dist = 0.1)으로 시각화한 결과 세 개의 덩어리가 관찰되었으며, perplexity 30의 t-SNE에서도 비슷한 구조가 유지되었다. 덩어리 ①은 구매 관련 변수의 평균이 2.11로 다른 덩어리(0.05, 1.18)보다 높았다. 다만 이는 탐색적 시각화 결과이므로, 고객 유형의 수와 경계는 군집분석과 다른 표본에서의 재현으로 추가 검토할 예정이다.
그러나 시각화에서 덩어리가 보인다는 사실만으로 고객 유형이 세 개라고 결론 내릴 수는 없습니다. 실제 집단을 구분하려면 클러스터링 분석이나 원래 변수의 비교 등 추가 검토가 필요합니다. 군집을 찾고 그 수를 정하는 방법은 「군집분석 가이드」에서 다룹니다.
PCA · MDS와는 어떻게 다를까?
세 방법 모두 데이터를 저차원 공간에 표현할 수 있지만, 무엇을 보존하려고 하는지가 다릅니다.
| 방법 | 출발점 | 주로 보존하려는 것 | 적합한 활용 |
|---|---|---|---|
| PCA | 원래 변수들의 분산 구조 | 가능한 한 많은 분산 | 주요 변수를 요약하고 전체적인 변동을 파악 |
| MDS | 대상 간 거리 또는 비유사성 | 입력된 거리 관계 | 브랜드나 제품 사이의 인식상 거리 표현 |
| t-SNE | 고차원 데이터의 이웃 관계 | 국소적인 이웃 관계 | 복잡한 데이터의 국소적 패턴 탐색 |
| UMAP | 고차원 데이터의 이웃 구조 | 국소적 구조와 일부 전체 구조 | 대규모 데이터의 패턴 탐색과 시각화 |
여러 설문 문항을 소수의 요약 지표로 바꾸려면 PCA (05장)
브랜드 사이의 유사성을 지도로 나타내려면 MDS (09장)
수십 개 변수의 고객 데이터에서 가까운 관측값들의 패턴을 보려면 t-SNE · UMAP
사용 시 주의할 점
- 축의 의미: 시각화의 X축과 Y축은 일반적으로 직접 해석할 수 있는 원래 변수가 아닙니다.
- 군집의 존재: 점들이 나뉘어 보여도 실제 집단이 존재한다고 단정할 수 없습니다.
- 군집 간 거리: 서로 다른 덩어리가 멀리 떨어져 있다고 해서 그 거리가 실제 차이의 크기를 정확히 나타내는 것은 아닙니다.
- 설정값의 영향: 파라미터와 초기화 등에 따라 그림이 달라질 수 있으므로 여러 설정을 비교해야 합니다.
- 전처리: 변수의 측정 단위, 스케일, 결측값, 이상치와 거리 계산 방식이 결과에 영향을 줄 수 있습니다.
- 재현성: 무작위 초기화가 사용되는 경우 시드와 설정을 기록하고 결과의 안정성을 확인하는 것이 좋습니다.
이 가운데 세 가지를 직접 확인해 보겠습니다.
그림 7의 왼쪽 실제 배치에서 파랑은 좁게, 주황은 넓게 퍼져 있고, 초록은 다른 두 무리보다 훨씬 멀리 떨어져 있습니다. 그런데 t-SNE 결과(오른쪽)에서는 세 덩어리의 퍼진 정도가 거의 같고, 덩어리 사이 간격도 비슷합니다. 덩어리의 크기와 간격을 실제 차이의 크기로 읽으면 안 되는 이유입니다.
그림 8는 아무런 구조가 없는 무작위 잡음(150명 × 변수 50개)입니다. PCA로는 하나의 구름으로 보이지만, 작은 perplexity의 t-SNE에서는 작은 덩어리들이 생긴 것처럼 보입니다. 덩어리가 보인다는 사실만으로 집단이 있다고 판단할 수 없는 이유입니다.
그림 9은 데이터와 설정이 같고 무작위 초기화만 다릅니다. 덩어리의 위치와 방향이 달라지므로, 결과를 보고할 때는 시드와 설정을 함께 기록하고 여러 번 실행해 핵심 구조가 유지되는지 확인합니다. 특히 t-SNE와 UMAP은 주로 탐색적 시각화에 사용됩니다. 결과 그림만으로 가설 검정이나 인과관계 분석을 대신할 수는 없습니다.
가까운 관측값을 가깝게 그려 고차원 데이터를 탐색합니다.
- t-SNE와 UMAP은 고차원 데이터를 2차원 또는 3차원으로 표현하는 비선형 차원 축소 기법입니다.
- t-SNE는 국소적인 이웃 관계를 시각화하는 데 강점이 있습니다.
- UMAP은 이웃 관계를 바탕으로 데이터 구조를 효율적으로 시각화하는 데 활용됩니다.
- 결과에 나타난 군집이나 거리는 원래 데이터와 함께 신중하게 해석해야 합니다.
- 시각화에서 발견한 패턴은 클러스터링이나 원래 변수 비교 등 추가 분석으로 검토할 수 있습니다.
다음은 11 다변량 이상치와 거리입니다. 여러 변수의 관계를 함께 고려해 일반적인 관측값과 다른 데이터를 찾는 방법으로, 한 변수만 보면 정상처럼 보이지만 여러 변수의 조합에서는 이례적인 관측값을 찾아내는 마할라노비스 거리(Mahalanobis distance)를 중심으로 살펴봅니다.
t-SNE와 UMAP은 고차원에서 가까운 관측값을 2차원에서도 가깝게 배치해 데이터의 구조를 탐색하게 해 줍니다. 결과는 perplexity, n_neighbors, min_dist와 초기화에 따라 달라지고, 덩어리의 크기와 간격은 실제 차이를 그대로 보여 주지 않습니다. 보이는 덩어리는 원래 변수, 여러 설정, 군집분석으로 확인해야 합니다.