Коли я повинен рухатися за межі k найближчого сусіда


9

Для багатьох проектів машинного навчання, які ми виконуємо, ми починаємо з класифікатора k Найближчий сусід. Це ідеальний стартовий класифікатор, оскільки ми зазвичай маємо достатньо часу для обчислення всіх відстаней, а кількість параметрів обмежена (k, метрика відстані та зважування)

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


Це суто академічно чи його слід використовувати у промисловості?
Д-р Роб Ланг

1
Більшість наших додатків розміщені в галузі (тому слід пам’яті та час обчислення - проблеми)

Відповіді:


3

k-NN узагальнюється в дуже обмежувальному сенсі. Він просто використовує пріори гладкості (або припущення про безперервність). З цього припущення випливає, що шаблони, близькі до простору зображень, швидше за все, належать до одного класу. K-NN не може бути відновлена ​​жодна функціональна закономірність розподілу шаблонів.

Таким чином, для цього потрібні репрезентативні навчальні зразки, які можуть бути надзвичайно великими, особливо у випадках сильно розмірних просторів. Гірше, що ці зразки можуть бути недоступними. Отже, він не може навчитись інваріантів. Якщо шаблони можуть бути піддані деяким перетворенням без зміни їх міток, а навчальний зразок не містить зразків, трансформованих усіма допустимими способами, k-NN ніколи не розпізнає трансформовані шаблони, які не були представлені під час тренування. Це справедливо, наприклад, для зміщених або повернутих зображень, якщо вони не представлені в якійсь інваріантній формі перед запуском k-NN. k-NN не може навіть абстрагуватися від неактуальних особливостей.

Наступний дещо штучний приклад - наступний. Уявіть, що шаблон, що належить до різних класів, розподіляється періодично (наприклад, відповідно до sine - якщо він менше 0, то шаблони належать до одного класу, а він більший, то шаблони належать до іншого класу). Навчальний набір обмежений. Отже, він буде розташований у кінцевій області. Поза межами цієї області похибка розпізнавання становитиме 50%. Можна уявити логістичну регресію з періодичними базисними функціями, які будуть працювати набагато краще в цьому випадку. Інші методи зможуть дізнатися інші закономірності розподілу шаблонів та добре екстраполювати.

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


Дякую за вашу відповідь (і дякую BartoszKP за спробу вдосконалити). Це правда, що knn не може знайти шаблони, які потребують перетворення (якщо ви не почнете використовувати дивну (і неправильну) метрику відстані). Це хороший привід спробувати інший класифікатор, я вважаю, що svm - це очевидний вибір. Я недостатньо знайомий з svm, щоб сказати, але хіба це не вимагатиме конкретних знань про шаблон, який ви шукаєте для визначення ядра?

Так. Вибір ядра буде залежати від шаблонів. Ядро Гаусса матиме властивості, аналогічні методу k-NN. Інші стандартні ядра можуть здатися також невідповідними. Однак, принаймні, можна спробувати їх використовувати.

Як випливає з @ Necro0x0Der, будь-яке вдосконалення за цими лініями залежатиме від того, як закономірність (на прикладі синусоїди, періодичність) є природною для параметризації. Тобто параметризація (вибір ядра) визначає структуру (ефективно, метрику) простору представлення. Якщо ви можете певними способами визначити (можливо, освіченим відгадуванням) якусь відповідну структуру, то спробуйте параметризувати шаблон відповідно. Зверніть увагу, що врешті-решт це дозволяє вашому класифікатору легко знаходити певні типи відповідних функцій.

3

Якщо вас обмежуватиме обчислювальна складність, дерева рішень (Quinal, 1986) важко перемогти (особливо коли рамка пропонує пряме перетворення DT-моделі в купу ifтверджень - наприклад, Accord.NET ).

Для даних високих розмірів поняття відстані, на якій базується k-NN, стає нікчемним (Kriegel, Kröger, Zimek, 2009) (також: стаття у Вікіпедії ). Тож інші класифікатори, такі як SVM (Corter, Vapnik, 1995) або Random Forests (Breiman, 2001) , можуть мати кращі результати.

Список літератури:


Високий розмір, звичайно, не є фіксованою межею, в більшості випадків наші особливості досить виразні, що працює на відстані. Звичайно, це може бути важливим моментом. Можливо, я мав би уточнити на прикладі. Скажімо, у нас є класифікатор, який має точність 93%, це прийнятно, але тепер ми можемо або спробувати вдосконалити класифікатор, або знайти нові функції. Все залежить від нових можливих функцій та даних, але я шукав рекомендації щодо цього рішення.

@Rhand Мені здається, що це рішення на рівні управління проектом. Якщо поточне рішення прийнятне, навіщо повозитися з ним? Це марна трата часу. Якщо це не прийнятно, точніше визначте, що ви хочете вдосконалити (швидкість, точність тощо).
BartoszKP

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

Ну, це з іншого боку - дуже широке питання. Немає загальних правил, згідно з якими класифікатор X кращий за Y. Вам слід просто спробувати деяку кількість класифікаторів, а потім виконати перехресну перевірку, наприклад, для вибору моделі .
BartoszKP

3

kNN корисний для великих зразків даних

Однак його недоліками є:

  1. Пов'язаний за значенням k.
  2. Складність обчислень
  3. Обмеження пам'яті
  4. Бути контрольованим алгоритмом навчання
  5. Легко обдурить недоречні атрибути.
  6. Точність прогнозування може швидко погіршуватися, коли кількість атрибутів збільшується.

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


Я не дивлюся на кластеризацію, а на класифікацію

@Rhand сюди ми йдемо, дякуємо за замітку iliasfl
Iancovici
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.