Vấn đề với t-SNE là nó không bảo toàn khoảng cách cũng như mật độ. Nó chỉ ở một mức độ nào đó bảo tồn hàng xóm gần nhất. Sự khác biệt là tinh tế, nhưng ảnh hưởng đến bất kỳ thuật toán dựa trên mật độ hoặc khoảng cách.
Để thấy hiệu ứng này, chỉ cần tạo một phân phối Gaussian đa biến. Nếu bạn hình dung điều này, bạn sẽ có một quả bóng dày đặc và ít đậm đặc hơn bên ngoài, với một số ngoại lệ có thể thực sự rất xa.
Bây giờ hãy chạy t-SNE trên dữ liệu này. Bạn thường sẽ có được một vòng tròn có mật độ khá đồng đều. Nếu bạn sử dụng một sự bối rối thấp, nó thậm chí có thể có một số mẫu kỳ lạ trong đó. Nhưng bạn không thể thực sự phân biệt các ngoại lệ nữa.
Bây giờ hãy làm cho mọi thứ phức tạp hơn. Hãy sử dụng 250 điểm trong phân phối bình thường tại (-2,0) và 750 điểm trong phân phối bình thường tại (+2,0).
Đây được coi là một tập dữ liệu dễ dàng, ví dụ với EM:
Nếu chúng ta chạy t-SNE với độ nhiễu mặc định là 40, chúng ta sẽ có một mẫu có hình dạng kỳ lạ:
Không tệ, nhưng cũng không dễ để phân cụm, phải không? Bạn sẽ có một thời gian khó khăn để tìm một thuật toán phân cụm hoạt động ở đây chính xác như mong muốn. Và ngay cả khi bạn yêu cầu con người phân cụm dữ liệu này, rất có thể họ sẽ tìm thấy nhiều hơn 2 cụm ở đây.
Nếu chúng tôi chạy t-SNE với độ lúng túng quá nhỏ như 20, chúng tôi sẽ nhận được nhiều hơn những mẫu không tồn tại:
Điều này sẽ co cụm, ví dụ với DBSCAN, nhưng nó sẽ mang lại bốn cụm. Vì vậy, hãy cẩn thận, t-SNE có thể tạo ra các mẫu "giả"!
Sự bối rối tối ưu dường như ở đâu đó khoảng 80 cho tập dữ liệu này; nhưng tôi không nghĩ rằng tham số này sẽ hoạt động cho mọi tập dữ liệu khác.
Bây giờ điều này là trực quan dễ chịu, nhưng không tốt hơn để phân tích . Một chú thích con người có thể có khả năng chọn một vết cắt và nhận được một kết quả tốt; k-mean tuy nhiên sẽ thất bại ngay cả trong kịch bản rất rất dễ dàng này ! Bạn có thể thấy rằng thông tin mật độ bị mất , tất cả dữ liệu dường như sống trong khu vực có mật độ gần như nhau. Thay vào đó, nếu chúng ta tăng thêm sự bối rối, tính đồng nhất sẽ tăng lên và sự phân tách sẽ giảm trở lại.
Để kết luận, hãy sử dụng t-SNE để trực quan hóa (và thử các tham số khác nhau để có được thứ gì đó trực quan dễ chịu!), Nhưng không chạy phân cụm sau đó , đặc biệt không sử dụng thuật toán dựa trên khoảng cách hoặc mật độ, vì thông tin này là cố ý (!) mất đi. Các cách tiếp cận dựa trên biểu đồ lân cận có thể tốt, nhưng trước tiên bạn không cần chạy t-SNE trước, chỉ cần sử dụng hàng xóm ngay lập tức (vì t-SNE cố gắng giữ nguyên biểu đồ nn này).
Thêm ví dụ
Những ví dụ này đã được chuẩn bị cho việc trình bày bài báo (nhưng chưa thể tìm thấy trong bài báo, như tôi đã làm thí nghiệm này sau)
Erich Schubert và Michael Gertz.
Sự xâm nhập của hàng xóm t-Stochastic nhúng để hình dung và phát hiện ngoại lệ - Một biện pháp chống lại lời nguyền của chiều không?
Trong: Thủ tục tố tụng của Hội nghị quốc tế lần thứ 10 về Tìm kiếm và Ứng dụng Tương tự (SISAP), Munich, Đức. 2017
Đầu tiên, chúng tôi có dữ liệu đầu vào này:
Như bạn có thể đoán, điều này được bắt nguồn từ một hình ảnh "tô màu tôi" cho trẻ em.
Nếu chúng tôi chạy nó thông qua SNE ( KHÔNG phải t-SNE , mà là người tiền nhiệm):
Wow, cá của chúng tôi đã trở thành một con quái vật biển! Bởi vì kích thước hạt nhân được chọn cục bộ, chúng tôi mất nhiều thông tin mật độ.
Nhưng bạn sẽ thực sự ngạc nhiên bởi đầu ra của t-SNE:
Tôi thực sự đã thử hai triển khai (ELKI và triển khai sklearn) và cả hai đều tạo ra kết quả như vậy. Một số đoạn bị ngắt kết nối, nhưng mỗi đoạn trông có vẻ phù hợp với dữ liệu gốc.
Hai điểm quan trọng để giải thích điều này:
SGD dựa vào một quy trình sàng lọc lặp lại, và có thể bị mắc kẹt trong tối ưu cục bộ. Đặc biệt, điều này làm cho thuật toán khó có thể "lật" một phần dữ liệu mà nó đã nhân đôi, vì điều này sẽ yêu cầu các điểm di chuyển qua các phần khác được cho là tách biệt. Vì vậy, nếu một số bộ phận của cá được nhân đôi và các bộ phận khác không được nhân đôi, nó có thể không thể khắc phục điều này.
t-SNE sử dụng phân phối t trong không gian chiếu. Trái ngược với phân phối Gaussian được sử dụng bởi SNE thông thường, điều này có nghĩa là hầu hết các điểm sẽ đẩy nhau , bởi vì chúng có 0 ái lực trong miền đầu vào (Gaussian nhanh chóng bằng 0), nhưng> 0 ái lực trong miền đầu ra. Đôi khi (như trong MNIST) điều này làm cho trực quan đẹp hơn. Cụ thể, nó có thể giúp "phân tách" dữ liệu được đặt nhiều hơn một chút so với trong miền đầu vào. Sự đẩy lùi bổ sung này cũng thường khiến các điểm sử dụng đồng đều hơn khu vực, điều này cũng có thể được mong muốn. Nhưng ở đây trong ví dụ này, các hiệu ứng đẩy lùi thực sự khiến các mảnh cá bị tách ra.
Chúng tôi có thể giúp (trên bộ dữ liệu đồ chơi này ) vấn đề đầu tiên bằng cách sử dụng tọa độ ban đầu làm vị trí ban đầu, thay vì tọa độ ngẫu nhiên (như thường được sử dụng với t-SNE). Lần này, hình ảnh là sklearn thay vì ELKI, vì phiên bản sklearn đã có một tham số để truyền tọa độ ban đầu:
Như bạn có thể thấy, ngay cả với vị trí ban đầu "hoàn hảo", t-SNE sẽ "phá vỡ" cá ở một số nơi được kết nối ban đầu vì lực đẩy của Student-t trong miền đầu ra mạnh hơn ái lực Gaussian trong đầu vào không gian.
Như bạn có thể thấy, t-SNE (và SNE cũng vậy!) Là những kỹ thuật trực quan thú vị , nhưng chúng cần được xử lý cẩn thận. Tôi thà không áp dụng phương tiện k trên kết quả! bởi vì kết quả sẽ bị biến dạng nặng nề, và cả khoảng cách và mật độ đều không được bảo tồn tốt. Thay vào đó, thay vì sử dụng nó để trực quan hóa.