Проблема t-SNE полягає в тому, що він не зберігає відстаней і щільності. Це лише певною мірою зберігає найближчих сусідів. Різниця є тонкою, але впливає на алгоритм, заснований на щільності чи відстані.
Щоб побачити цей ефект, просто генеруйте багатоваріантну гауссова розподіл. Якщо ви візуалізуєте це, у вас з'явиться куля, яка є щільною і виходить набагато менш щільною назовні, з деякими скидниками, які можуть бути дійсно далеко.
Тепер запустіть t-SNE на цих даних. У вас зазвичай вийде коло досить рівномірної щільності. Якщо ви використовуєте низьке здивування, це може навіть мати деякі дивні візерунки. Але ти вже не можеш більше розрізнити людей, що вижили.
Тепер давайте зробити складніше. Давайте використаємо 250 балів у нормальному розподілі при (-2,0), а 750 балів у нормальному розподілі при (+2,0).
Це повинен бути простий набір даних, наприклад, з EM:
Якщо ми запустимо t-SNE зі здивуванням за замовчуванням 40, ми отримаємо незвичайну форму:
Непогано, але також не так просто кластеризувати, чи не так? Вам буде важко знайти алгоритм кластеризації, який працює тут саме так, як бажано. І навіть якщо ви попросите людей згрупувати ці дані, швидше за все, вони знайдуть тут набагато більше, ніж два кластери.
Якщо ми запустимо t-SNE з надто маленьким здивуванням, таким як 20, ми отримаємо більше цих шаблонів, які не існують:
Це буде кластеризуватися, наприклад, з DBSCAN, але це дасть чотири кластери. Тож будьте обережні, t-SNE може створювати "підроблені" зразки!
Оптимальне здивування виглядає десь близько 80 для цього набору даних; але я не думаю, що цей параметр повинен працювати для кожного іншого набору даних.
Тепер це візуально приємно, але не краще для аналізу . Людський анотатор, швидше за все, може вибрати розріз і отримати гідний результат; k-означає, однак, не вдасться навіть у цьому дуже простому сценарії ! Ви вже можете бачити, що інформація про щільність втрачається , всі дані, здається, живуть в області майже однакової щільності. Якби ми замість цього ще більше збільшили здивування, рівномірність збільшилася б, а розмежування знову зменшиться.
На закінчення використовуйте t-SNE для візуалізації (і спробуйте різні параметри, щоб отримати щось візуально приємне!), А краще не запускайте кластеризацію після цього , зокрема не використовуйте алгоритми на основі відстані чи щільності, оскільки ця інформація була навмисно (!) загублений. Підходи на основі графіка сусідства можуть бути нормальними, але тоді вам не потрібно заздалегідь запускати t-SNE заздалегідь, просто скористайтеся сусідами негайно (адже t-SNE намагається зберегти цей nn-графік значною мірою недоторканим).
Більше прикладів
Ці приклади були підготовлені для презентації паперу (але не може бути знайдений в роботі все ж, як я зробив цей експеримент пізніше)
Еріх Шуберт та Майкл Герц.
Внутрішня т-стохастична сусіда, що вбудовується для візуалізації та виявлення зовнішності - засіб проти прокляття розмірності?
В: Матеріали 10-ї Міжнародної конференції з пошуку та застосування подібності (SISAP), Мюнхен, Німеччина. 2017 рік
По-перше, ми маємо ці вхідні дані:
Як ви здогадуєтесь, це походить від малюнка «розфарбуй мене» для дітей.
Якщо ми запустимо це через SNE ( НЕ t-SNE , а попередник):
Ого, наша риба стала зовсім морським монстром! Оскільки розмір ядра вибирається локально, ми втрачаємо велику частину інформації про щільність.
Але ви будете дуже здивовані випуском t-SNE:
Я фактично спробував дві реалізації (ELKI та sklearn реалізації), і обидві дали такий результат. Деякі роз'єднані фрагменти, але кожен виглядає дещо узгоджується з вихідними даними.
Два важливих моменти для пояснення цього:
SGD покладається на ітераційну процедуру уточнення і може застрягти в місцевих оптимах. Зокрема, це ускладнює алгоритму "перевернути" частину даних, які він відображає, оскільки для цього потрібні точки переміщення через інші, які повинні бути окремими. Отже, якщо деякі частини риби є дзеркальними, а інші - не дзеркальними, можливо, це не вдається виправити.
t-SNE використовує розподіл t в проектованому просторі. На відміну від розподілу Гаусса, використовуваного звичайним SNE, це означає, що більшість точок відштовхуються одна від одної , оскільки вони мають 0 спорідненість у вхідному домені (Гаусс отримує нуль швидко), але> 0 спорідненість у вихідному домені. Іноді (як у MNIST) це робить кращу візуалізацію. Зокрема, це може допомогти "розділити" набір даних трохи більше, ніж у вхідному домені. Це додаткове відштовхування також часто викликає вказівки на більш рівномірне використання площі, що також може бути бажаним. Але ось у цьому прикладі відштовхуючі ефекти насправді викликають поділ фрагментів риби.
Ми можемо допомогти (у цьому наборі даних про іграшки ) першим випуском, використовуючи оригінальні координати в якості початкового розміщення, а не випадкові координати (як це зазвичай використовується в t-SNE). Цього разу зображення є sklearn замість ELKI, оскільки версія sklearn вже мала параметр для передачі початкових координат:
Як бачите, навіть при "ідеальному" початковому розміщенні, t-SNE "розіб'є" рибу в ряді місць, які були спочатку з'єднані, оскільки відштовхування Student-t у вихідному домені сильніше, ніж спорідненість Гауса у введенні простір.
Як бачите, t-SNE (і SNE теж!) - цікаві методи візуалізації , але з ними потрібно ретельно поводитися. Я б краще не застосовував k-засоби на результат! тому що результат буде сильно спотворений, і ні відстані, ні щільність не збереглися добре. Натомість скоріше використовуйте його для візуалізації.