k-NN обчислювальна складність


18

Яка часова складність алгоритму k -NN з наївно-підхідним пошуком (без kd дерева чи аналогів)?

Мене цікавить її часова складність, враховуючи також гіперпараметр k . Я знайшов суперечливі відповіді:

  1. O (nd + kn), де n - простота навчального набору і d - розмірність кожного зразка. [1]

  2. O (ndk), де знову n - кардинальність навчального набору і d - розмірність кожного зразка. [2]

[1] http://www.csd.uwo.ca/courses/CS9840a/Lecture2_knn.pdf (Паг. 18/20)

[2] http://www.cs.haifa.ac.il/~rita/ml_course/lectures/KNN.pdf (Pag. 18/31)

Відповіді:


20

Якщо припустимо, що є фіксованим (як це роблять обидві пов'язані лекції), то ваш алгоритмічний вибір визначатиме, чи приймає ваш обчислення час виконання O ( n d + k n ) або O ( n d k )kO(nd+kn)O(ndk) час виконання.

Спочатку розглянемо алгоритм виконання :O(nd+kn)

  • Ініціалізуйте для всіх спостережень i в навчальному наборіselectedi=0i
  • Для кожного навчального набору спостереження , обчислити d i s t i , відстань від нового спостереження до навчального набору iidistii
  • Для до k : перегляньте всі спостереження набору тренувань, вибравши індекс i з найменшим значенням d i s t i і для якого s e l e c t e d i = 0 . Виберіть це спостереження, встановивши s e l e c tj=1kidistiselectedi=0 .selectedi=1
  • Поверніть вибраних індексівk

Кожне обчислення відстані вимагає виконання часу виконання, тому другий крок вимагає виконання O ( n d ) часу виконання. Для кожного ітерату на третьому кроці ми виконуємо роботу O ( n ) , пробираючи спостереження через навчальний набір спостережень, тому загальний крок вимагає роботи O ( n k ) . Перший та четвертий кроки вимагають лише роботи O ( n ) , тому ми отримуємо O ( n d + k n )O(d)O(nd)O(n)O(nk)O(n)O(nd+kn) .

Тепер розглянемо алгоритм виконання :O(ndk)

  • Ініціалізуйте для всіх спостережень i в навчальному наборіselectedi=0i
  • Для до k : проведіть через усі спостереження набір тренувань і обчисліть відстань d між вибраним спостереженням та новим спостереженням. Виберіть індекс i з найменшим d значенням, для якого s e l e c t e d i = 0 . Виберіть це спостереження, встановивши s e l e c t e d i = 1 .j=1kdidselectedi=0selectedi=1
  • Поверніть k вибраних індексів

Для кожного ітерату на другому кроці ми обчислюємо відстань між новим спостереженням та кожним спостереженням набору тренувань, вимагаючи, щоб працював для ітерації, а отже O (O(nd)O(ndk) цілому.

Різниця між двома алгоритмами полягає в тому, що перший попередньо обчислює і зберігає відстані (вимагаючи додаткової пам'яті), а другий - ні. Однак, враховуючи, що ми вже зберігаємо весь навчальний набір, що вимагає O ( n d ) пам'яті, а також вектор s e l e c t e d , що вимагає O ( n )O(n)O(nd)selectedO(n) зберігання, зберігання двох алгоритмів є асимптотично те саме. Як результат, кращий асимптотичний час виконання робить перший алгоритм більш привабливим.k>1

Варто зауважити, що можна отримати час виконання за допомогою алгоритмічного вдосконалення:O(nd)

  • Для кожного навчального набору спостереження , обчислити d i s t i , відстань від нового спостереження до навчального набору iidistii
  • Запустіть алгоритм швидкого вибору, щоб обчислити найменшу відстань в O ( n ) часу виконанняkthO(n)
  • Повертайте всі індекси не більше, ніж обчислена найменша відстаньkth

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


1
Чудова відповідь, і мені особливо подобаються поради щодо використання quickselect.
usεr11852 повідомляє Відновити Монік

Ще одне запитання: для третього варіанту я вважаю, що часова складність повинна бути O (nd + k), оскільки ви все ще повинні обчислити найпоширенішу мітку серед k-найближчих сусідів, щоб дати прогноз, правда?
Даніель Лопес

knO(nd+k)O(nd)

Останній раз я вас заважаю : намагаючись визначити обчислювальну складність модифікованої версії k -NN, над якою я працюю, я отримую наступне: O (nd + nd / p) Де за визначенням n , d та p цілі числа більші, ніж нуль. Чи можу я спростити це до O (другого) ?
Даніель Лопес

@Daniel Yes, in that case O(nг)працює.
josliber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.