Кластеризація на виході t-SNE


77

У мене є додаток, де було б зручно кластерувати шумний набір даних, перш ніж шукати ефекти підгруп у кластерах. Я спершу подивився на PCA, але для отримання 90% варіабельності потрібно ~ 30 компонентів, тому кластеризація лише на декількох комп'ютерах викине багато інформації.

Потім я спробував t-SNE (вперше), який надає мені дивну форму в двох вимірах, яка дуже піддається кластеризації за допомогою k-засобів. Більше того, використання випадкових лісів на даних із призначенням кластеру, оскільки результат показує, що кластери мають досить розумну інтерпретацію з огляду на контекст проблеми з точки зору змінних, що складають необроблені дані.

Але якщо я збираюся звітувати про ці кластери, як їх описати? Кластери К-значень на основних компонентах виявляють людей, які знаходяться поруч один з одним з точки зору похідних змінних, що складають X% дисперсії в наборі даних. Яке еквівалентне твердження можна зробити щодо кластерів t-SNE?

Можливо, щось до цього:

t-SNE виявляє приблизну суміжність у глибокому багатовимірному колекторі, тому кластери на низькомірному представленні просторового простору максимізують "ймовірність", що суміжні особи не опиняться в одному кластері

Чи може хтось запропонувати кращу розмитість, ніж це?


1
Я б подумав, що хитрість полягає в описі кластерів на основі оригінальних змінних, а не змінних у скороченому просторі.
Тім

1
Правильно, але відсутній стислий, інтуїтивний опис того, з якою метою алгоритм призначення кластеру мінімізує, я можу бути відкритим для звинувачення у виборі алгоритму кластеризації, який полегшує отримання бажаних результатів.
generic_user

1
Деякі застереження та приємні візуальні відомості про t-SNE також дивіться на distill.pub/2016/misread-tsne
Том Вензелерз,

Відповіді:


94

Проблема t-SNE полягає в тому, що він не зберігає відстаней і щільності. Це лише певною мірою зберігає найближчих сусідів. Різниця є тонкою, але впливає на алгоритм, заснований на щільності чи відстані.

Щоб побачити цей ефект, просто генеруйте багатоваріантну гауссова розподіл. Якщо ви візуалізуєте це, у вас з'явиться куля, яка є щільною і виходить набагато менш щільною назовні, з деякими скидниками, які можуть бути дійсно далеко.

Тепер запустіть t-SNE на цих даних. У вас зазвичай вийде коло досить рівномірної щільності. Якщо ви використовуєте низьке здивування, це може навіть мати деякі дивні візерунки. Але ти вже не можеш більше розрізнити людей, що вижили.

Тепер давайте зробити складніше. Давайте використаємо 250 балів у нормальному розподілі при (-2,0), а 750 балів у нормальному розподілі при (+2,0).

Вхідні дані

Це повинен бути простий набір даних, наприклад, з EM:

EM кластеризації

Якщо ми запустимо t-SNE зі здивуванням за замовчуванням 40, ми отримаємо незвичайну форму:

t-SNE p = 40

Непогано, але також не так просто кластеризувати, чи не так? Вам буде важко знайти алгоритм кластеризації, який працює тут саме так, як бажано. І навіть якщо ви попросите людей згрупувати ці дані, швидше за все, вони знайдуть тут набагато більше, ніж два кластери.

Якщо ми запустимо t-SNE з надто маленьким здивуванням, таким як 20, ми отримаємо більше цих шаблонів, які не існують:

t-SNE p = 20

Це буде кластеризуватися, наприклад, з DBSCAN, але це дасть чотири кластери. Тож будьте обережні, t-SNE може створювати "підроблені" зразки!

Оптимальне здивування виглядає десь близько 80 для цього набору даних; але я не думаю, що цей параметр повинен працювати для кожного іншого набору даних.

t-SNE p = 80

Тепер це візуально приємно, але не краще для аналізу . Людський анотатор, швидше за все, може вибрати розріз і отримати гідний результат; k-означає, однак, не вдасться навіть у цьому дуже простому сценарії ! Ви вже можете бачити, що інформація про щільність втрачається , всі дані, здається, живуть в області майже однакової щільності. Якби ми замість цього ще більше збільшили здивування, рівномірність збільшилася б, а розмежування знову зменшиться.

На закінчення використовуйте t-SNE для візуалізації (і спробуйте різні параметри, щоб отримати щось візуально приємне!), А краще не запускайте кластеризацію після цього , зокрема не використовуйте алгоритми на основі відстані чи щільності, оскільки ця інформація була навмисно (!) загублений. Підходи на основі графіка сусідства можуть бути нормальними, але тоді вам не потрібно заздалегідь запускати t-SNE заздалегідь, просто скористайтеся сусідами негайно (адже t-SNE намагається зберегти цей nn-графік значною мірою недоторканим).

Більше прикладів

Ці приклади були підготовлені для презентації паперу (але не може бути знайдений в роботі все ж, як я зробив цей експеримент пізніше)

Еріх Шуберт та Майкл Герц.
Внутрішня т-стохастична сусіда, що вбудовується для візуалізації та виявлення зовнішності - засіб проти прокляття розмірності?
В: Матеріали 10-ї Міжнародної конференції з пошуку та застосування подібності (SISAP), Мюнхен, Німеччина. 2017 рік

По-перше, ми маємо ці вхідні дані:

Риба

Як ви здогадуєтесь, це походить від малюнка «розфарбуй мене» для дітей.

Якщо ми запустимо це через SNE ( НЕ t-SNE , а попередник):

SNE риба

Ого, наша риба стала зовсім морським монстром! Оскільки розмір ядра вибирається локально, ми втрачаємо велику частину інформації про щільність.

Але ви будете дуже здивовані випуском t-SNE:

t-SNE риба

Я фактично спробував дві реалізації (ELKI та sklearn реалізації), і обидві дали такий результат. Деякі роз'єднані фрагменти, але кожен виглядає дещо узгоджується з вихідними даними.

Два важливих моменти для пояснення цього:

  1. SGD покладається на ітераційну процедуру уточнення і може застрягти в місцевих оптимах. Зокрема, це ускладнює алгоритму "перевернути" частину даних, які він відображає, оскільки для цього потрібні точки переміщення через інші, які повинні бути окремими. Отже, якщо деякі частини риби є дзеркальними, а інші - не дзеркальними, можливо, це не вдається виправити.

  2. t-SNE використовує розподіл t в проектованому просторі. На відміну від розподілу Гаусса, використовуваного звичайним SNE, це означає, що більшість точок відштовхуються одна від одної , оскільки вони мають 0 спорідненість у вхідному домені (Гаусс отримує нуль швидко), але> 0 спорідненість у вихідному домені. Іноді (як у MNIST) це робить кращу візуалізацію. Зокрема, це може допомогти "розділити" набір даних трохи більше, ніж у вхідному домені. Це додаткове відштовхування також часто викликає вказівки на більш рівномірне використання площі, що також може бути бажаним. Але ось у цьому прикладі відштовхуючі ефекти насправді викликають поділ фрагментів риби.

Ми можемо допомогти (у цьому наборі даних про іграшки ) першим випуском, використовуючи оригінальні координати в якості початкового розміщення, а не випадкові координати (як це зазвичай використовується в t-SNE). Цього разу зображення є sklearn замість ELKI, оскільки версія sklearn вже мала параметр для передачі початкових координат:

Риба, t-SNE, з оригінальними координатами як ініціалізація

Як бачите, навіть при "ідеальному" початковому розміщенні, t-SNE "розіб'є" рибу в ряді місць, які були спочатку з'єднані, оскільки відштовхування Student-t у вихідному домені сильніше, ніж спорідненість Гауса у введенні простір.

Як бачите, t-SNE (і SNE теж!) - цікаві методи візуалізації , але з ними потрібно ретельно поводитися. Я б краще не застосовував k-засоби на результат! тому що результат буде сильно спотворений, і ні відстані, ні щільність не збереглися добре. Натомість скоріше використовуйте його для візуалізації.


1
Дякую за відповідь. Я можу уявити методи адаптивного кластеризації на основі сусідства, але чи є якісь конкретні добре розроблені методи, які ви могли б порекомендувати?
generic_user

1
CHAMAELEON - це, мабуть, найбільш цитується, але, здається, є лише двійковий доступ для основного кроку. Ідея звучить приємно, але ви швидко відчуєте ті самі ефекти, які t-SNE робить видимими. Такі, як схильність до "збивання", як це видно з p = 20, проблеми з хабами та анти-хабами тощо.
Еріх Шуберт

2
@AlexR: Perplexity використовується для обчислення подібності у просторовому просторі, який t-sne намагається співставити у 2D. Зміна здивування означає зміну подібності, тому я не бачу, наскільки порівняння отриманих розбіжностей KL може бути значимим.
амеба

1
@AlexR. "Тільки умовна ймовірність простору нижнього розміру залежить від здивування" - це твердження неправильне. Заплутаність використовується для вибору сигм, необхідних для рівняння (1), тому вона впливає на умову. проб. у повному просторі.
амеба

1
Деякі застереження та приємні візуальні відомості про t-SNE також дивіться на distill.pub/2016/misread-tsne
Том Вензелерз,

34

Я хотів би висловити дещо протилежну думку щодо добре аргументованої (+1) та високообоснованої відповіді від @ErichSchubert. Еріх не рекомендує кластеризувати на виході t-SNE, і показує кілька прикладів іграшок, де це може ввести в оману. Його пропозиція - замість цього застосувати кластеризацію до вихідних даних.

використовуйте t-SNE для візуалізації (і спробуйте різні параметри, щоб отримати щось візуально приємне!), а краще не запускайте кластеризацію після цього, зокрема не використовуйте алгоритми на основі відстані чи щільності, оскільки ці відомості були навмисно (!) втрачені.

Я добре знаю, як способи виходу t-SNE можуть вводити в оману (див. Https://distill.pub/2016/misread-tsne/ ), і я погоджуюся, що це може принести дивні результати в деяких ситуаціях.

Але розглянемо деякі реальні об'ємні дані.

Візьміть дані MNIST : 70000 одноцифрових зображень. Ми знаємо, що в даних є 10 класів. Ці класи виглядають добре відокремленими від людського спостерігача. Однак кластеризація даних MNIST у 10 кластерів є дуже складною проблемою. Я не знаю жодного алгоритму кластеризації, який би правильно кластеризував дані в 10 кластерів; що ще важливіше, я не знаю жодного евристичного кластеризації, який би вказував на те, що в даних є 10 (не більше і не менше) кластерів. Я впевнений, що більшість поширених підходів цього не змогли б вказати.

Але давайте замість цього зробимо t-SNE. (Можна знайти багато фігур t-SNE, застосованих до MNIST в Інтернеті, але вони часто є неоптимальними. На мій досвід, потрібно досить довго запускати перебільшення, щоб отримати хороші результати. Нижче я використовую perplexity=50, max_iter=2000, early_exag_coeff=12, stop_lying_iter=1000). Ось що я отримую, зліва без маркування, а праворуч кольоровий відповідно до основної істини:

MNIST t-SNE

Я б стверджував, що незазначене представлення t-SNE пропонує 10 кластерів. Застосування хорошого алгоритму кластеризації на основі щільності, такого як HDBSCAN з ретельно підібраними параметрами, дозволить класифікувати ці 2D дані в 10 кластерів.

Якщо хтось буде сумніватися, що лівий сюжет дійсно пропонує 10 кластерів, ось що я отримую з фокусом "пізнього перебільшення", де я додатково запускаю max_iter=200ітерації exaggeration=4(цей трюк запропонований у цій чудовій статті: https://arxiv.org /abs/1712.09005 ):

MNIST t-SNE з пізнім перебільшенням

Тепер має бути дуже очевидно, що існує 10 кластерів.

Я закликаю всіх, хто вважає, що кластеризація після t-SNE є поганою ідеєю показати алгоритм кластеризації, який би досяг порівняно хорошого результату.

А тепер ще більше реальних даних.

У випадку MNIST ми знаємо основну правду. Розглянемо тепер деякі дані з невідомою первинною правдою. Кластеризація та t-SNE звичайно використовуються для опису мінливості клітин у даних одноклітинної РНК-послідовності. Наприклад, Шехар та ін. У 2016 році намагалися визначити кластери серед 27000 клітин сітківки (в геному миші є близько 20 к генів, тому розмірність даних в принципі близько 20 к; проте, зазвичай, починається зі зменшення розмірності з PCA до 50 або більше). Вони роблять t-SNE і окремо роблять кластеризацію (складний трубопровід кластеризації з подальшим об'єднанням кластерів тощо). Кінцевий результат виглядає приємно:

введіть тут опис зображення

Причина, яка виглядає настільки приємно, полягає в тому, що t-SNE створює чітко окремі кластери, а алгоритм кластеризації дає точно такі ж кластери. Приємно.

Однак якщо ви подивитесь на додатки, то побачите, що автори спробували багато різних підходів кластеризації. Багато з них виглядають жахливо на сюжеті t-SNE, оскільки, наприклад, великий центральний кластер розпадається на багато підкластерів:

введіть тут опис зображення

То що ви вірите: вихід улюбленого алгоритму кластеризації разом з вашим улюбленим евристичним для визначення кількості кластерів або те, що ви бачите на графіку t-SNE? Якщо чесно, незважаючи на всі недоліки t-SNE, я схильний більше вірити t-SNE. Або в будь-якому випадку я не бачу, чому я повинен менше вірити .


2
І на останньому прикладі, чи не по суті те, що @ErichSchubert зауважив вище: ви можете отримати візуально "приємні" результати - це, очевидно, неправильно? Як з недоумкуванням 20? Що tSNE любить розділяти частини (як у риби), які не були розділені? Тож чи знаєте ви, що кластери, які ви бачите, справді є окремими кластерами? Мені не подобається ця "чорна скринька" там. Так, ми схильні вірити таким сюжетам більше, але що робити, якщо вони помиляються?
Аноні-Мус

1
Ну, tSNE заснований на NN. Згоди з цим слід очікувати. tSNE - хороший вибір для візуалізації NN. Хоча схожість добре не зберігає, тому її потрібно трактувати обережно, наскільки я розумію. Розрив в tSNE не означає великої відстані.
Аноні-Мус

1
+1 Цікаво, як працює UMAP порівняно з t-SNE.
Пол

1
@Paul: автор стверджує, що перевагу UMAP з точки зору часу на обчислення є. У наборі даних MNIST я вважаю, що UMAP генерує краще вбудовування, ніж t-SNE, але не впевнений в інших наборах даних. Наскільки мені відомо, нещодавно існує версія CUDA t-SNE, яка набагато швидша за попередню найшвидшу t-SNE, але я не зміг встановити та протестувати.
SiXUlm

1
@SiXUlm github.com/KlugerLab/FIt-SNE працює набагато швидше, ніж Barnes-Hut t-SNE і часто швидше, ніж UMAP. Крім того, у багатьох випадках можна домогтися дуже подібного вбудовування з t-SNE, використовуючи деякі додаткові настройки, наприклад, на MNIST t-SNE з невеликим перебільшенням отримує майже те саме, що і UMAP, див. Приклад ноутбука Python у сховищі FIt-SNE.
амеба

6

Я думаю, що з великим здивуванням t-SNE може реконструювати глобальну топологію, як зазначено в https://distill.pub/2016/misread-tsne/ .

З зображення риби я відібрав 4000 балів для t-SNE. З великим здивуванням (2000 р.) Зображення риби було практично реконструйоване.

Ось оригінальне зображення. Оригінальне зображення

Ось зображення, реконструйоване t-SNE з недоумкуванням = 2000. t-SNE реконструйоване зображення (здивування = 2000)


8
Якщо ви обираєте такі великі невдачі, це вже насправді не tNE. Кожна точка є приблизно щоденним сусідом. Це вже не місцеве. Так, 2d-зображення потім можна приблизно реконструювати, оскільки це 2d. Але взагалі не робити всю справу простіше.
Аноні-Мус

1
На мою думку, tSNE з великим здивуванням може реконструювати глобальну топологію. 2d зображення - приклад, тому що його внутрішня розмірність становить 2. Реальне застосування tSNE повинне вибрати належне здивування відповідно до мети, щоб зафіксувати локальні чи глобальні характеристики.
renxwise

1
Невдачі цього високого значення означають, що ви використовуєте занадто велике «ядро», і ефективно просто використовуєте відстані. Потім, ймовірно, вироджується до приблизного і дуже дорогого MDS. Просто використовуйте MDS тоді. SNE / tSNE справді слід використовувати з невеликими неприємностями та місцевими районами.
Еріх Шуберт

3
Саме так. Коли здивування досить велике, tSNE справді наближається до MDS, що ілюструє, що tSNE також може захоплювати глобальну структуру. Таким чином, твердження про те, що tSNE може захоплювати лише локальні структури, є невірними. На відміну від MDS, tSNE може балансувати між локальними та глобальними структурами за допомогою вибору здивування. Очевидно, що вибір недоумкувань залежить від набору даних.
renxwise

Чи є якесь правило для вибору правдоподібного здивування?
Catbuilts

5

На основі математичних даних, які ми маємо, цей метод технічно міг би зберегти відстані! чому ви всі ігноруєте цю функцію! t -SNE перетворює великомірні евклідові відстані між зразками в умовні ймовірності, що представляють подібність. Я спробував t -SNE з більш ніж 11000 зразками (в контексті геноміки) паралельно з різними алгоритмами кластеризації консенсусу, включаючи спектральне кластеризацію, Affinity і, що важливо, з кластеризацією GMM (що є алгоритмом кластеризації на основі щільності!). В результаті я виявив дуже хороший узгоджений результат між двома підходами ( t-SNE проти алгоритмів кластеризації консенсусу). Я вважаю, що інтеграція t-SNE з алгоритмами кластеризації консенсусу може дати найкращі докази існуючих локальних та глобальних структур даних.


Чи є параметри, які впливатимуть на ймовірність t-SNE зберегти відстані?
Кіт Хугітт

Це не консенсусні алгоритми кластеризації. Консенсусна кластеризація - це тип ансамблевого навчання, який агрегує результати повторення алгоритму кластеризації з деякими варіаціями параметрів або вхідних даних, щоб отримати остаточний результат кластеризації. Ви можете використовувати консенсусні підходи до кластеризації за допомогою спектральної кластеризації чи GMM або взагалі будь-який алгоритм кластеризації, але моя думка у вашій термінології трохи відсутня, це все :)
Крістофер Джон,

1

Ви можете спробувати алгоритм кластеризації DBSCAN. Крім того, зусилля tne має бути приблизно такого ж розміру, як і найменший очікуваний кластер.


0

Особисто я це переживав один раз, але не з t-SNE або PCA. Мої вихідні дані знаходяться в 15-мірному просторі. Використовуючи UMAP для зменшення його до 2D та 3D вбудовування, я отримав 2 ідеально і візуально відокремлених кластера на двовимірних та тривимірних ділянках. Занадто добре, щоб бути правдою. Але коли я "переглянув" початкові дані з діаграми збереження, я зрозумів, що є набагато більше "значущих" кластерів, а не лише 2.

Кластеризація на виході методики зменшення розмірів повинна виконуватися з великою обережністю, інакше будь-яка інтерпретація може бути дуже оманливою або помилковою, оскільки зменшення розмірності неодмінно призведе до втрати функції (можливо, галасливі чи справжні функції, але апріорі ми не робимо ' знаю, який). На мою думку, ви можете довіряти / інтерпретувати кластери, якщо:

  • Кластери в прогнозованих даних відповідають / підтверджують деяку класифікацію, визначену апріорі (подумайте про набір даних MNIST, де кластери прогнозованих даних дуже добре збігаються з класифікацією цифр) та / або

  • Ви можете підтвердити наявність цих кластерів у вихідних даних, використовуючи інші методи, наприклад діаграми стійкості. Підрахунок лише кількості підключених компонентів можна зробити за досить розумну кількість часу.


Чому (ви) довіряєте "схемі стійкості" більше, ніж UMAP? Я не думаю, що дивлячись на діаграму збереження можна описати як "перегляд оригінальних даних" ...
amoeba

Ви праві. Діаграма стійкості показує лише деякі характеристики вихідних даних, найчастіше, з'єднаних компонентів, одновимірних отворів та набагато більш рідкісних, 2 або більше розмірних отворів через дороге обчислення. Тому я мав би сказати, що я можу лише частково "подивитися" на вихідні дані, переглянувши відповідну діаграму збереження. Але я можу довіряти тому, що я спостерігаю з цієї діаграми постійності, оскільки вона безпосередньо побудована з вихідних даних.
SiXUlm

На відміну від цього, використовуючи UMAP або будь-які інші методи зменшення розмірів, ми працюємо лише з проектованою / модифікованою версією вихідних даних. Як вказується найбільш голосований відповідь, кластеризація може бути різною для різних варіантів вибору параметрів.
SiXUlm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.