как уменьшить временную сложность кластеризации при встраивании doc2ve c? - PullRequest
1 голос
/ 10 июля 2020

У меня есть набор векторов по 300 измерений каждый, как часть встраивания doc2ve c. Каждый вектор - это представление статьи. Моя цель - отбросить повторяющиеся статьи. Я думал запустить кластеризацию DBSCAN по моему набору данных, а затем для каждой метки кластера отбросить дубликаты. Я выбрал DBSCAN, потому что он иерархический, и он может принимать косинусное расстояние как метри c, что, на мой взгляд, имеет больше смысла, чем евклидово расстояние для обнаружения сходства документов.

Проблема в том, что если я выберу косинусное расстояние, тогда sklearn Реализация DBSCAN не позволяет использовать в качестве алгоритма 'ball_tree' и 'kd_tree', поэтому я остаюсь с 'brute', который, как я предполагаю, имеет сложность O (n ^ 2) при запуске для всех векторов.

Если go я не использую маршрут кластеризации, я вижу два варианта. Вычислите подобие, используя метод most_similar для всех векторов, либо в vanilla doc2ve c, либо через индекс раздражения. Согласно , этот do c vanilla doc2ve c имеет линейную сложность для запроса на подобие, тогда как раздражение дает сублинейную временную сложность. Я хотел бы знать, какой из них будет лучшим выбором с учетом моего варианта использования? Есть ли лучший подход, который мне не хватает?

...