Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HEngine и KNN 
:(
    Опции темы
mrgloom
Дата 25.2.2014, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



появилась такая статья HEngine

но там используются бинарные векторы, а что если у нас есть обычные численные векторы и мы хотим осуществить поиск ближайшего соседа?
Т.е. как преобразовать из численного вектора в бинарный?


варианты:
1. на основании набора векторов, по каждой ячейке(числовой позиции например вектор vec={2 3 7} 3 позиции) вычислять среднее или медиану и соответственно если больше то 1, если меньше то 0.
2. кластеризовать вектора, взять k центров и смотреть расстояние до центров, если меньше dist то 1, если больше то 0 (соответственно тут мы получим сокращение размерности). непонятно правда как выбирать k и dist, в предельных случаях будем иметь пустой или очень разреженный вектор или всё в единицах ,а можно сначала заполнить новые вектора длины k расстояниями dist и сделать как в пункте 1.

п.с. это похоже получается хэш-функция?

но если так делать, то уже точное соответствие не найдешь, т.к. идёт потеря информации.


п.с. как раз еще есть LSH 


есть так же развитой проект FLANN , но он так же Approximate Nearest Neighbors.


Это сообщение отредактировал(а) mrgloom - 25.2.2014, 17:26
PM MAIL   Вверх
Mirkes
Дата 4.3.2014, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Довольно забавный подход. Первый вопрос - какая у Вас задача.
Исходя из задачи выбирают расстояние. KNN необычайно чувствителен к выбору расстояния. Расстояние Хеминга пригодно только для качественных (категорийных) работ. В простейшем варианте - для бинарных данных. Если Вы работаете с действительными числами, то используйте другие расстояния - квадрат Эвклидова, расстояние Минковского, Манхеттенское и т.д и т.п. Их сотни описаны в литературе.
Но увидев один метод подсчета чего-то очень быстро сводить свою задачу к этому чему-то несколько странно. 


--------------------
Mirkes
PM MAIL   Вверх
mrgloom
Дата 4.3.2014, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



что значит качественных (категорийных) ?

У меня есть набор векторов интов, типа vec={12,1,2,4,23}  (только большей  размерности примерно 1к)
Я использую стандартно евклидово расстояние(l2 distance).

выше я предлагал свести вектор интов к бинарному вектору(по идее будет потеря информации).

п.с. да я не силён в матане простанства, нормы и т.д.


Это сообщение отредактировал(а) mrgloom - 4.3.2014, 17:28
PM MAIL   Вверх
Mirkes
Дата 5.3.2014, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(mrgloom @  4.3.2014,  17:26 Найти цитируемый пост)
что значит качественных (категорийных) ?

Это значит имеет несколько (мало) различных значений. Типичные примеры: пол, образование в анкете (среднее, среднее специальное, высшее).

При преобразовании векторов из целых к бинарным может происходить потеря информации, а может не происходить.

Сформулируйте задачу, что вы делаете с этими многомерными векторами?


--------------------
Mirkes
PM MAIL   Вверх
mrgloom
Дата 6.3.2014, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



решаю задачу нахождения ближайшего соседа
http://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

PM MAIL   Вверх
Mirkes
Дата 6.3.2014, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Я хорошо знаю задачу нахождения ближайшего соседа и KNN
Однако KNN это инструмент и не более. А какова задача?

Поясняю. Пусть у нас МНОГО точек и нам нужно находить ближайших соседей для новых точек. В этом случае применяются специальные методы индексации точек для быстрого поиска соседей. Если множество базовых точек регулярно обновляется, это уже другая задача.

Теперь по поводу 1000 мерных векторов. Есть хорошая статья о применимости KNN в этой ситуации: Beyer, K.; Goldstein, J.; Ramakrishnan, R.; Shaft, U. (1999). "When is “Nearest Neighbor” Meaningful?". Proc. 7th International Conference on Database Theory - ICDT'99. LNCS 1540: 217–235. doi:10.1007/3-540-49257-7_15. ISBN 978-3-540-65452-0

Кроме того, Вы так и не сформулировали задачу smile 
Зачем Вам ближайшие соседи?
Или это  просто самоцель?


--------------------
Mirkes
PM MAIL   Вверх
mrgloom
Дата 6.3.2014, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



задача: поиск похожих объектов в базе, типа CBIR

Цитата

усть у нас МНОГО точек и нам нужно находить ближайших соседей для новых точек.

изначально, да.

Цитата

 Если множество базовых точек регулярно обновляется, это уже другая задача.

оно может обновляться, но не по 1 точке, а групами точек, я так понимаю, просто при очередном добавлении придётся перестраивать индекс.


Цитата

 "When is “Nearest Neighbor” Meaningful?"

http://en.wikipedia.org/wiki/Curse_of_dimensionality
что то такое читал
PM MAIL   Вверх
Mirkes
Дата 6.3.2014, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(mrgloom @  6.3.2014,  15:18 Найти цитируемый пост)
задача: поиск похожих объектов в базе, типа CBIR


Вот с таким я не работал, так что посоветовать ничего не могу.

Насчет проклятия размерности - с ним очень даже можно бороться путем уменьшения пространства признаков (dimension reduction, feature selection).

Однако все эти методы сильно зависят от конкретной задачи (набора признаков) и потребуют большого числа экспериментов для определения нужного поднабора признаков.

Желаю удачи.


--------------------
Mirkes
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0785 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.