Có phiên bản nào của t-SNE để truyền dữ liệu không?


19

Sự hiểu biết của tôi về t-SNE và xấp xỉ Barnes-Hut là tất cả các điểm dữ liệu được yêu cầu để tất cả các tương tác lực có thể được tính toán cùng một lúc và mỗi điểm có thể được điều chỉnh trong bản đồ 2d (hoặc chiều thấp hơn).

Có phiên bản nào của t-sne có thể xử lý hiệu quả việc truyền dữ liệu không? Vì vậy, nếu các quan sát của tôi đến từng điểm một, nó sẽ tìm vị trí tốt nhất trên bản đồ 2d để đặt quan sát mới hoặc liên tục cập nhật tất cả các điểm trên bản đồ 2d để tính đến việc quan sát mới.

Điều này thậm chí sẽ có ý nghĩa hoặc nó đi ngược lại với thiết lập của t-sne.


Tính gần đúng của Barnes-Hut làm cho t-SNE có khả năng mở rộng cao (ít nhất, bạn có thể sử dụng nó với 100 000 dòng, tôi đã thử nó). Bạn có thể gọi nó từ R: cran.r-project.org/web/packages/Rtsne/index.html
RUser4512

Này cảm ơn nhé! Tôi rất vui khi bỏ phiếu cho câu trả lời của bạn nếu bạn đặt nó trong phần trả lời của phần này.
Tom

3
Xem ở đây cho một phiên bản tham số được thực hiện với một ntwork thần kinh. lvdmaaten.github.io/publications/ con /AISTATS_2009.pdf
eyaler

Câu trả lời:


15

Tôi đã có chính xác câu hỏi tương tự và đăng nó lên một video trên YouTube về bài giảng CS231n do Andrej Karpathy đưa ra vài tuần trước. Đây là câu hỏi tôi đã đăng theo câu trả lời của Andrej:

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

Q:

T-SNE có cần toàn bộ lô hình ảnh (hay nói chung hơn là dữ liệu) để tạo không gian tính năng chiều thấp không? Với PCA, bạn có thể tạo không gian tính năng chiều thấp trên một lô dữ liệu và sau đó chiếu các điểm dữ liệu mới lên cùng không gian đó mà không phải "đào tạo lại". Điều đó có đúng với t-SNE không?

Tôi hỏi bởi vì tôi nhận thấy rằng scikit-learn có t-SNE như là một phần của lớp đa tạp của nó, nhưng mô-đun đó không có phương thức biến đổi () như PCA. Vì vậy, ít nhất, trong sklearn, dường như điều này là không thể.

Câu hỏi của tôi sôi lên đến đây. Làm thế nào bạn sẽ áp dụng t-SNE trong một tình huống phát trực tuyến hoặc trực tuyến nơi bạn muốn liên tục cập nhật hình ảnh hóa với hình ảnh mới? Có lẽ, người ta sẽ không muốn áp dụng thuật toán trên toàn bộ lô cho mỗi hình ảnh mới.

A:

+ Evan Zamir có, điều này là có thể với t-SNE, nhưng có thể không được hỗ trợ ngoài hộp với việc triển khai t-SNE thông thường. Thông thường, vị trí của mỗi điểm là một tham số trong tối ưu hóa, nhưng bạn cũng có thể tạo ánh xạ từ high-D -> low-D (ví dụ: mạng nơ ron) và backprop qua các vị trí. Sau đó, bạn kết thúc với chức năng nhúng và có thể chiếu các điểm mới. Vì vậy, không có gì ngăn chặn điều này trên nguyên tắc, nhưng một số triển khai có thể không hỗ trợ vì đây là trường hợp sử dụng ít thường xuyên hơn.


11

Khi xử lý dữ liệu phát trực tuyến, bạn có thể không muốn / cần nhúng tất cả các điểm trong lịch sử vào một bản đồ t-SNE. Thay vào đó, bạn có thể thực hiện nhúng trực tuyến bằng cách thực hiện theo các bước đơn giản sau:

  1. chọn một cửa sổ thời gian T, đủ dài để mỗi mẫu quan tâm xuất hiện ít nhất một vài lần trong thời lượng cửa sổ.

  2. cuộn cửa sổ khi luồng dữ liệu vào, với dt bước thời gian nhỏ hơn nhiều so với T. Với mỗi vị trí của cửa sổ, hãy tính toán nhúng t-SNE của các điểm dữ liệu trong cửa sổ thời gian.

  3. gieo hạt giống với kết quả của lần trước. Trong t-SNE, người ta cần chọn tọa độ ban đầu của các điểm dữ liệu trong không gian chiều thấp. Trong trường hợp của chúng tôi, vì chúng tôi chọn dt nhỏ hơn nhiều so với T, hai nhúng liên tiếp chia sẻ hầu hết các điểm dữ liệu của chúng. Đối với tất cả các điểm dữ liệu được chia sẻ, khớp tọa độ ban đầu của chúng trong hiện tại nhúng với tọa độ cuối cùng của chúng trong lần nhúng trước . Bước này sẽ đảm bảo rằng các mẫu tương tự có một biểu diễn nhất quán trên các lần nhúng liên tiếp. (trong triển khai sklearn trong python, tham số seed là "init". Theo mặc định, việc triển khai sklearn đặt vị trí ban đầu của các điểm một cách ngẫu nhiên)

Lưu ý 1: Điều quan trọng là các mẫu quan tâm xuất hiện ít nhất một lần trong bất kỳ cửa sổ thời gian nhất định nào, để bộ nhớ của biểu diễn không bị mất khi cửa sổ trượt qua tập dữ liệu. Thật vậy, t-SNE thường không hội tụ đến một giải pháp duy nhất mà chỉ ở mức tối thiểu cục bộ, do đó, nếu bộ nhớ bị mất, một mô hình tương tự có thể được biểu diễn theo hai cách rất khác nhau theo hai cách nhúng.

Lưu ý 2: Phương pháp này đặc biệt phù hợp khi xử lý chuỗi thời gian không cố định, trong đó người ta muốn theo dõi các mẫu phát triển chậm theo thời gian. Thật vậy, mỗi lần nhúng đều ở đây được đặt riêng cho cửa sổ thời gian nhỏ mà nó được tính toán, đảm bảo rằng nó nắm bắt cấu trúc cục bộ theo thời gian theo cách tốt nhất (trái với việc nhúng toàn bộ dữ liệu không cố định).

Lưu ý 3: Trong phương pháp này, các lần nhúng liên tiếp không thể được song song, bởi vì người ta cần kết quả của lần nhúng trước để tạo hạt tiếp theo. Tuy nhiên, vì hạt giống (tức là tọa độ ban đầu của các điểm) được chọn tốt cho hầu hết các điểm (tất cả các điểm được chia sẻ giữa các lần nhúng thành công), nên việc nhúng thường hội tụ rất nhanh, chỉ trong một vài lần lặp.

Để biết ví dụ về việc áp dụng phương pháp này cho chuỗi thời gian không cố định, hãy xem bài viết này ( ICLR 2016, Học các biểu diễn ổn định trong một thế giới thay đổi với t-SNE: bằng chứng về khái niệm trong bài hát ), nơi nó được áp dụng thành công để theo dõi sự xuất hiện của các âm tiết trong suốt quá trình phát triển trong loài chim biết hót.


2
Chào mừng đến với cộng đồng. Tự đạo văn là không đẹp. Tôi tham khảo bài viết đầu tiên của bạn ở đây . Chắc chắn, chúng tôi có thể sử dụng cùng một lý do cho nhiều câu trả lời, có khả năng sao chép-dán một cụm từ hoặc hai hoặc chỉ liên kết trực tiếp đến các câu trả lời trước đó. Mặc dù vậy, những điều này đang được nói, đừng hạ thấp bài viết của bạn thành bản sao nguyên văn của các câu trả lời trước đó với câu đầu tiên đã thay đổi. Nó làm giảm chất lượng nội dung của CV và cho thấy khả năng thể thao học thuật kém của bạn.
usεr11852 nói Phục hồi Monic

5
@ usεr11852 Vấn đề được tạo ra bởi vì các luồng khác là một bản sao của chủ đề này. Do đó, tôi đã đóng cái kia, hợp nhất nó với cái này và xóa câu trả lời thừa. Nói chung, Stéphane, bất cứ khi nào bạn cảm thấy có cảm hứng để gửi chính xác cùng một câu trả lời trong hai chủ đề, vui lòng chỉ gắn cờ một trong số chúng là một bản sao để chúng tôi có thể kết hợp chúng.
whuber

2
@ usεr11852 OK, xin lỗi vì câu trả lời trùng lặp, tôi là người đóng góp mới vì vậy tôi chưa biết các thực tiễn tốt nhất.
Stéphane từ chối

1
@whuber Cảm ơn bạn đã hợp nhất các câu hỏi và cho những người đứng đầu!
Stéphane từ chối

1
Kết quả là bạn đã mất 2 lần upvote. Thật không may. +1 :) Chào mừng bạn đến với CV.
amip nói phục hồi Monica

7

Có một biến thể được xuất bản gần đây, được gọi là A-tSNE, hỗ trợ tự động thêm dữ liệu mới và các cụm tinh chỉnh dựa trên các khu vực quan tâm hoặc theo đầu vào của người dùng. Bài viết được liên kết dưới đây có một số ví dụ khá hay về điều này:

Trích dẫn: arXiv: 1512.01655

TSNE gần đúng và có thể điều khiển để phân tích hình ảnh tiến bộ Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

Tóm lược:

Phân tích trực quan tiến bộ nhằm cải thiện tính tương tác trong các kỹ thuật phân tích hiện có bằng phương pháp trực quan hóa cũng như tương tác với các kết quả trung gian. Một phương pháp chính để phân tích dữ liệu là giảm kích thước, ví dụ, để tạo ra các nhúng 2D có thể được hiển thị và phân tích hiệu quả. t-Phân phối Stochastic Neighbor Nhúng (tSNE) là một kỹ thuật rất phù hợp để trực quan hóa một số dữ liệu chiều cao. tSNE có thể tạo ra các kết quả trung gian có ý nghĩa nhưng bị khởi tạo chậm làm hạn chế ứng dụng của nó trong Phân tích hình ảnh tiến bộ. Chúng tôi giới thiệu một xấp xỉ tSNE có thể kiểm soát (A-tSNE), giúp giảm tốc độ và độ chính xác, để cho phép khám phá dữ liệu tương tác. Chúng tôi cung cấp các kỹ thuật trực quan thời gian thực, bao gồm một giải pháp dựa trên mật độ và một ống kính ma thuật để kiểm tra mức độ gần đúng. Với phản hồi này, người dùng có thể quyết định các sàng lọc cục bộ và chỉ đạo mức độ gần đúng trong quá trình phân tích. Chúng tôi chứng minh kỹ thuật của mình bằng một số bộ dữ liệu, trong kịch bản nghiên cứu trong thế giới thực và để phân tích thời gian thực các luồng chiều cao để minh họa hiệu quả của nó cho phân tích dữ liệu tương tác.


Chào mừng đến với trang web. Chúng tôi đang cố gắng xây dựng một kho lưu trữ thông tin thống kê chất lượng cao vĩnh viễn dưới dạng câu hỏi và câu trả lời. Vì vậy, chúng tôi cảnh giác với các câu trả lời chỉ liên kết, do linkrot. Bạn có thể đăng một trích dẫn đầy đủ và một bản tóm tắt các thông tin tại liên kết, trong trường hợp nó bị chết?
gung - Phục hồi Monica

6

Tính gần đúng của Barnes-Hut làm cho t-SNE có khả năng mở rộng cao (ít nhất, bạn có thể sử dụng nó với 100 000 dòng, tôi đã thử nó). Bạn có thể gọi nó từ R: Rtsne

O(nlog(n))O(n2)


1
Tôi đã sử dụng nó với các dòng 1K dày đặc 250K - thực sự khá tốt, nhưng nó bị ràng buộc bởi bộ nhớ.
Vladimir Chupakhin

2

Tính gần đúng của Barnes-Hut hiện là phương thức mặc định trong scikit-learn kể từ phiên bản 0.17.0:

Theo mặc định, thuật toán tính toán độ dốc sử dụng xấp xỉ Barnes-Hut chạy trong thời gian O (NlogN). phương thức = 'chính xác' sẽ chạy trên thuật toán chậm hơn, nhưng chính xác, trong thời gian O (N ^ 2). Thuật toán chính xác nên được sử dụng khi các lỗi lân cận gần nhất cần phải tốt hơn 3%. Tuy nhiên, phương pháp chính xác không thể mở rộng đến hàng triệu ví dụ. Mới trong phiên bản 0.17: Phương pháp tối ưu hóa gần đúng thông qua Barnes-Hut.


Điều này không giải quyết câu hỏi. BH, trong khi nhanh hơn, không hỗ trợ phát trực tuyến. Có lẽ bạn muốn nói điều này là một nhận xét về câu trả lời này .
merv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.