Какой алгоритм кластеризации подходит для кластеризации географических местоположений?
Я занимаюсь разработкой приложения, которое работает аналогично Tinder. Я предполагаю, что Tinder группирует самые близкие результаты, запустив алгоритм кластеризации. В моем приложении необходимо аналогичным образом сгруппировать данные на основе географического положения. Возможно, мне придется запустить кластеризацию на основе многих входных данных, поэтому она должна быть эффективной. Пожалуйста, предложите подходящий алгоритм для этого.
2 ответа
Нет причин группировать или кластеризовать для случая использования, подобного Tinder:
- это слишком дорого
- это слишком статично
- это не добавляет ценности (вы не можете просто представить кластер пользователю)
То, что вы хотите использовать, это поиск сходства. Найдите других пользователей, которые а) находятся поблизости, б) недавно в сети, в) имеют общие интересы, г) недавно не показывались.
Для тех, кто ищет подобное решение, есть хороший ответ о быстрых алгоритмах поиска сходства по квору https://www.quora.com/What-are-some-fast-similarity-search-algorithms-and-data-structures-for-high-dimensional-vectors/answer/Raghavendran-Balu?srid=hYuT
Я нашел R-дерево наиболее подходящим для моего приложения. Есть хороший проект GitHub для R-дерева https://github.com/davidmoten/rtree