UMAP

jwKim·2023년 8월 10일
0

1. UMAP 개요

1-1. 차원의 저주와 차원 축소

데이터 세계에는 차원의 저주라는 말이 있는데, 차원의 수가 늘어날 수록 원본 데이터의 특성을 반영하기 위해 필요한 데이터가 기하급수적으로 많아진다는 것이다. 다시 말하면, 같은 수의 데이터라도 차원이 높아지면 그만큼 데이터가 갖는 의미가 떨어진다는 것이다.

차원의 저주가 데이터 차원이 높아서 발생하는 것이라면, 차원을 낮춰주면 차원의 저주를 피할 수 있지 않을까? 그래서 사용하는 것이 차원축소 이다.

대표적인 차원축소 알고리즘으로는 PCA, LDA, t_SNE 등이 있다. 이번 포스팅에서는 PCA와 t_SEN와 UMAP을 비교해보자.

1-2. manifold learning

UMAP은 대표적인 차원 축소 알고리즘이다. UMAP을 알기 위해서는 minifold learning을 알면 좋다.

manifold learning는 고차원 데이터를 데이터 공간에 나타내면, 그 데이터를 잘 아우르는 subspace가 있을 것이라고 가정하고, 그 subspace를 찾아가는 학습 방법이다. 다시 말해 이 방법을 통해 고차원 데이터를 저차원에서도 잘 표현할 수 있는 공간인 manifold를 찾는 것이 목적이다.

manifold learning을 하는 이유는 두 가지가 있다. 첫 번째로 앞서 설명한 대로 차원의 저주를 해결해야 하기 때문이다. 두 번째 이유는 데이터의 해석을 지원하기 위함이다. 아래 이미지를 보면, 고차원일 때 점A와 점B는 가까워 보인다. 그러나 실제로는 데이터가 둘둘 말린 형태여서 그 의미가 매우 다르다. 이런 경우 실제 의미를 외곡하는 문제가 발생할 수 있다.

2. UMAP

2-1. 장점

UMAP의 첫 번째 장점으로는 수행 속도가 빠르다는 점이다. 아래에서 조금 더 자세히 다루겠지만, 데이터를 저차원으로 이동할 때 크게크게 움직이기 때문에 다른 알고리즘(특히 t-SNE)과 비교했을 때 수행 속도가 빠르다. 빠른 속도 덕분에 큰 데이터셋에도 잘 돌아간다. 그리고 클러스터링 기법이므로 데이터 간의 유사성을 판단하거나 이상치를 판단할 때 유용하다.

2-2. 동작 방법

동작하는 방법은 참고한 유튜브 영상을 함께 보는 것이 좋다. 글씨만 읽는 것보다 눈으로 보는게 더 빠르고 직관적이므로 영상을 함께 보길 권한다.

이번에는 간단하게 인덱싱을 매겨 작성하겠다. 이 글과 영상을 함께 보면 좀 더 이해가 될 것 같다.

  1. 고차원 상태일 때 데이터 간의 거리 계산

  2. 하나의 데이터를 저차원 공간에 먼저 뿌리기

  3. 처음으로 뿌린 데이터와 가장 가까운 데이터부터 거리를 유지하면서 저차원 공간에 뿌림

  4. 완전 멀리 떨어져 있는 데이터는 저차원 공간에서도 그냥 멀리 떨어뜨려 놓음

  5. 2에서 뿌린 하나의 데이터에 대하여 저차원 공간에 유사도 점수를 계산
    -> 이 때 주요한 파라미터가 '이웃 데이터의 개수'임(이웃 데이터에는 자기 자신도 포함되어 있음! 예를 들어 number of neighbors = 4면, 하나의 데이터 포인트는 그 주변에 3개의 데이터만 가져도 됨) / 유사도 점수 계산하는 방법은 정확히 이해하지 못했으나, 가까운 데이터에 큰 값을 부여하고 전부 더했을 때 log_2(number, neighbors) 값이 되도록 설정함(이게 무슨 의미가 있지... 더 공부해서 추가해야겠다)

  6. 다른 데이터들에 대하여도 3~5 과정을 거친 후 유사도 점수를 모두 더함 -> 이렇게 저차원 공간에 뿌려진 최초 형태가 됨

  7. 근데 이 형태는 고차원 데이터일 때의 분포를 반영하지 못하므로 조정이 필요함 -> 무작위로 두 개의 점을 선택해서 이동함(이동하는 기준은 5에서 구한 유사도 점수)

위 과정을 간단히 이야기하자면, "고차원 데이터의 유사도 점수를 계산한 후 저차원으로 데이터를 옮긴다. 이 때 유사도 점수를 반영하게끔 데이터들의 위치를 옮긴다."가 되겠다.

2-3. 다른 알고리즘과의 비교

앞서 이야기한대로 PCA와 t-SNE를 비교해보자.

PCA는 데이터에서 두 변수가 데이터의 대부분을 설명할 때에만 제대로 작동한다. 데이터가 갖는 변수가 꼭 두 개일 필요는 없지만, 그 두 변수의 데이터 설명력이 매우 높아야 한다. 다시 말해 복잡한 데이터에 대해서는 제대로 작동하지 않는다는 것이다. 이에 비해 UMAP은 복잡한 데이터에 대해서도 잘 작동한다.

t-SNE는 UMAP과 매우 비슷한 컨셉으로 작동하지만 다른 점이 크게 두 가지가 있다. 첫 번째로, t-SNE는 저차원으로 옮길 때 최초의 데이터 분포가 랜덤이다. 따라서 t-SNE을 수행할 때마다 데이터의 분포가 달라진다. 그래서 seed 값을 고정해줘야 한다. 이에 반해 UMAP은 몇 번을 실행하더라도 그 분포는 달라지지 않는다. 두 번째로 t-SNE는 데이터를 이동할 때 매우 조금씩 움직인다. 그래서 수행 속도가 느리고, 대규모 데이터에는 사용할 수 없으며 주로 50차원 이하의 데이터에 대해서만 수행할 수 있다고 한다. 하지만 UMAP은 데이터를 한 번 이동할 때 적절한 위치로 바로 이동시키므로 수행 속도가 매우 빠르고 이에 따라 큰 데이터셋에도 적용할 수 있다.




참고한 사이트

0개의 댓글

관련 채용 정보