스트리밍 데이터 용 t-SNE 버전이 있습니까?


19

t-SNE 와 Barnes-Hut 근사에 대한 나의 이해는 모든 힘 상호 작용이 동시에 계산되고 각 점이 2d (또는 낮은 차원) 맵에서 조정될 수 있도록 모든 데이터 점이 필요하다는 것입니다.

스트리밍 데이터를 효율적으로 처리 할 수있는 t-sne 버전이 있습니까? 따라서 관측치가 한 번에 하나씩 도착하면 2d 맵에서 가장 좋은 위치를 찾아서 새 관측치를 배치하거나 2d 맵에서 모든 점을 지속적으로 업데이트하여 새 관측치를 설명합니다.

이것은 심지어 의미가 있거나 t-sne 설정에 반대 되는가?


Barnes-Hut 근사법은 t-SNE를 확장 성이 뛰어나게 만듭니다 (적어도 100 000 줄로 사용할 수 있습니다, 시도했습니다). R에서 호출 할 수 있습니다 : cran.r-project.org/web/packages/Rtsne/index.html
RUser4512

고마워! 이 답변 섹션에 답변하시면 귀하의 답변에 투표하게되어 기쁩니다.
Tom

3
신경 ntwork로 구현 된 파라 메트릭 버전은 여기를 참조하십시오. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

답변:


15

몇 주 전에 Andrej Karpathy가 제공 한 CS231n 강의의 YouTube 비디오에 정확히 같은 질문이 있었고이를 게시했습니다. 다음은 내가 게시 한 질문과 Andrej의 답변입니다.

https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx

큐:

저 차원 피쳐 공간을 생성하기 위해 t-SNE에 전체 이미지 배치 (또는 일반적으로 데이터)가 필요합니까? PCA를 사용하면 데이터 일괄 처리에 저 차원 피쳐 공간을 작성한 다음 "재교육"할 필요없이 동일한 데이터 공간에 새 데이터 포인트를 투영 할 수 있습니다. t-SNE도 마찬가지입니까?

나는 scikit-learn이 매니 폴드 클래스의 일부로 t-SNE를 가지고 있음을 알았지 만 그 모듈에는 PCA와 같은 transform () 메소드가 없습니다. 따라서 적어도 sklearn에서는 이것이 불가능한 것처럼 보입니다.

내 질문은 이것으로 요약됩니다. 새로운 이미지로 시각화를 지속적으로 업데이트하려는 스트리밍 또는 온라인 상황에서 t-SNE를 어떻게 적용 하시겠습니까? 아마도 새로운 이미지마다 전체 배치에 알고리즘을 적용하고 싶지 않을 것입니다.

ㅏ:

+ Evan Zamir 예 t-SNE에서는 가능하지만 일반적인 t-SNE 구현에서는 즉시 지원되지 않을 수 있습니다. 일반적으로 각 점의 위치는 최적화의 매개 변수이지만 위치를 통해 high-D-> low-D (예 : 신경망) 및 backprop에서 매핑을 만들 수도 있습니다. 그런 다음 포함 기능으로 끝나고 새로운 점을 투영 할 수 있습니다. 따라서 이것을 원칙적으로 방해하는 것은 없지만 일부 구현은 덜 빈번한 사용 사례이므로 지원하지 않을 수 있습니다.


11

스트리밍 데이터를 처리 할 때 기록의 모든 포인트를 단일 t-SNE 맵에 포함하지 않아도됩니다. 대안으로, 다음과 같은 간단한 단계를 수행하여 온라인 임베딩 을 수행 할 수 있습니다 .

  1. 각 관심 패턴이 윈도우 지속 시간에 적어도 두 번 나타날 정도로 충분히 긴 지속 시간 T의 시간 창을 선택하십시오.

  2. T보다 훨씬 작은 시간 단계 dt를 사용하여 데이터가 스트리밍 될 때 창을 스크롤합니다. 창의 각 위치에 대해 시간 창에 데이터 포인트를 포함하는 t-SNE를 계산합니다.

  3. 이전의 결과로 각각의 임베드를 시드하십시오. t-SNE에서, 저 차원 공간에서 데이터 포인트의 초기 좌표를 선택해야합니다. 우리의 경우 T보다 훨씬 작은 dt를 선택하기 때문에 두 개의 연속 된 임베딩이 대부분의 데이터 포인트를 공유합니다. 모든 공유 데이터 포인트 에 대해 현재 임베딩의 초기 좌표와 이전 임베딩의 최종 좌표를 일치시킵니다 . 이 단계는 유사한 패턴이 연속적인 임베딩에서 일관되게 표현되도록합니다. ( python 의 sklearn 구현 에서 seed 매개 변수는 "init"입니다. 기본적으로 sklearn 구현은 점의 초기 위치를 임의로 설정합니다)

참고 1 : 관심있는 패턴이 주어진 시간 창에 적어도 한 번 나타나도록하여 데이터 세트를 통해 창을 슬라이드 할 때 표현의 메모리가 손실되지 않도록하는 것이 중요합니다. 실제로 t-SNE는 일반적으로 고유 한 솔루션으로 수렴되지 않고 로컬 최소값으로 만 수렴되므로 메모리가 손실되면 두 가지 삽입 방식으로 유사한 패턴이 매우 다른 방식으로 표현 될 수 있습니다.

참고 2 :이 방법은 시간이 지남에 따라 느리게 진화하는 패턴을 추적하려는 비 정적 시계열을 처리 할 때 특히 관련이 있습니다. 실제로, 각각의 임베딩은 여기에서 계산되는 작은 시간 창에 구체적으로 영향을 미쳐, 가장 좋은 방식으로 일시적으로 로컬 구조를 캡처합니다 (반드시 전체 비 정적 데이터 세트의 전체 임베딩).

참고 3 :이 방법에서는 다음 임베딩을 시드하기 위해 이전 임베딩의 결과가 필요하므로 연속 임베딩을 병렬화 할 수 없습니다. 그러나 시드 (즉, 점의 초기 좌표)는 대부분의 점 (성공한 임베딩 사이의 모든 공유 점)에 대해 잘 선택되므로 일반적으로 임베딩은 몇 번의 반복만으로 매우 빠르게 수렴됩니다.

비 정적 시계열에이 방법을 적용한 예는이 기사 ( ICLR 2016, 온라인 t-SNE를 사용하여 변화하는 세계에서 안정적인 표현 학습 : 송 버드의 개념 증명 )를 참조하십시오. 송 버드의 개발 과정에서 음절의 출현을 추적합니다.


2
커뮤니티에 오신 것을 환영합니다. 자기 표절 은 시원하지 않습니다. 나는 당신의 첫 번째 게시물을 참조 하십시오 . 물론, 우리는 여러 답변에 대해 동일한 근거를 사용할 수 있으며, 문구를 한두 개 복사하여 붙여 넣거나 이전 답변에 직접 연결할 수도 있습니다. 그럼에도 불구하고, 첫 번째 문장이 변경된 이전 답변의 사본으로 게시물을 낮추지 마십시오. 그것은 CV의 내용의 질을 낮추고 당신에 의해 열악한 스포츠맨 정신을 보여줍니다.
usεr11852는 Reinstate Monic

5
@ usεr11852 다른 스레드가이 스레드와 중복되므로 문제가 발생했습니다. 따라서 다른 쪽을 닫고 이것을 하나로 합치고 불필요한 답변을 삭제했습니다. 일반적으로 Stéphane은 두 개의 스레드로 정확히 동일한 답글을 게시 할 수 있다고 생각 될 때마다 그 중 하나를 복제본으로 표시하여 결합 할 수 있도록하십시오.
whuber

2
@ usεr11852 좋습니다. 중복 답변으로 죄송합니다. 새로운 기고자이므로 아직 모범 사례를 모릅니다.
Stéphane Deny

1
@whuber 질문을 병합하고 감사합니다!
Stéphane Deny

1
결과적으로 2 개의 공감 율을 잃어버린 것 같습니다. 운이 없었어. +1 :) CV에 오신 것을 환영합니다.
amoeba는

7

최근에 게시 된 A-tSNE라는 변형이 있습니다.이 변형은 관심 영역 또는 사용자 입력을 기준으로 새 데이터 및 정제 클러스터를 동적으로 추가하는 것을 지원합니다. 아래 링크 된 논문은 이에 대한 좋은 예가 있습니다.

인용 : arXiv : 1512.01655

점진적 비주얼 분석을위한 대략적이고 사용자 조정 가능한 tSNE Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

요약:

Progressive Visual Analytics는 시각화 및 중간 결과와의 상호 작용을 통해 기존 분석 기술의 상호 작용 성을 향상시키는 것을 목표로합니다. 데이터 분석을위한 주요 방법 중 하나는 효율적으로 시각화하고 분석 할 수있는 2D 임베딩을 생성하는 차원 축소입니다. t- 분산 스토캐스틱 이웃 임베딩 (tSNE)은 여러 고차원 데이터의 시각화에 적합합니다. tSNE는 의미있는 중간 결과를 생성 할 수 있지만 Progressive Visual Analytics에서 응용 프로그램을 제한하는 초기화 속도가 느립니다. 우리는 대화식 데이터 탐색을 가능하게하기 위해 속도와 정확성을 절충하는 제어 가능한 tSNE 근사 (A-tSNE)를 소개합니다. 실시간 시각화 기술을 제공합니다. 밀도 기반 솔루션과 근사도를 검사하는 매직 렌즈를 포함합니다. 이 피드백을 통해 사용자는 분석 중 로컬 세분화를 결정하고 근사화 수준을 조정할 수 있습니다. 우리는 실제 연구 시나리오와 대화식 데이터 분석의 효과를 설명하기 위해 고차원 스트림의 실시간 분석을 위해 여러 데이터 세트로 기술을 시연합니다.


사이트에 오신 것을 환영합니다. 우리는 질문과 답변의 형태로 고품질 통계 정보의 영구 저장소를 구축하려고합니다. 따라서 우리는 linkrot으로 인해 링크 전용 답변에주의를 기울입니다. 링크가 종료 된 경우 링크에 정보를 요약하고 요약하여 게시 할 수 있습니까?
gung-Monica Monica 복원

6

Barnes-Hut 근사법은 t-SNE를 확장 성이 뛰어나게 만듭니다 (적어도 100 000 줄로 사용할 수 있습니다, 시도했습니다). R : Rtsne 에서 전화 할 수 있습니다.

영형(로그())영형(2)


1
250K 밀도의 1K 라인으로 사용했습니다. 실제로 꽤 좋았지 만 메모리에 묶여 있습니다.
블라디미르 Chupakhin

2

Barnes-Hut 근사법은 이제 버전 0.17.0부터 scikit-learn의 기본 방법입니다.

기본적으로 그라디언트 계산 알고리즘은 O (NlogN) 시간으로 실행되는 Barnes-Hut 근사값을 사용합니다. method = 'exact'는 O (N ^ 2) 시간에 느리지 만 정확한 알고리즘에서 실행됩니다. 가장 가까운 이웃 오류가 3 % 이상이어야하는 경우 정확한 알고리즘을 사용해야합니다. 그러나 정확한 방법은 수백만 개의 예제로 확장 할 수 없습니다. 버전 0.17의 새로운 기능 : Barnes-Hut를 통한 대략적인 최적화 방법.


이것은 문제를 다루지 않습니다. BH는 더 빠르지 만 스트리밍을 지원하지 않습니다. 어쩌면 당신은 이것이이 답변 에 대한 의견이라고 생각했을 것 입니다.
merv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.