Я ищу пары векторов, которые имеют как минимум общих черт.L
Это просто внутреннее произведение векторов двоичных объектов. Когда внутреннее произведение больше, чем , пара будет иметь как минимум L общих элементов. Это должно быть относительно быстрое вычисление - по крайней мере, быстрее, чем евклидово расстояние, которое было бы расточительным и медленным для этих данных. Поскольку вы оговариваете, что ищете пары, это по сути означает, что вы должны выполнить вычисления для сравнения каждого вектора.L - 1L( N2)
Поиск точек, которые находятся близко друг к другу, действительно является проблемой кластеризации. Но первый шаг алгоритмов кластеризации, с которыми я знаком, - это вычисление парных расстояний или сходств. Я уверен, что кто-то разработал более эффективные альтернативы. Пункт о терминологии: наличие как минимум общих соседей выражается как сходство , а не расстояние! Внутренние продукты в этом случае являются ненормализованным косинусным сходством.L
Вы можете сделать это более удобным, выполнив вычисление внутреннего произведения только тогда, когда сумма вектора признаков (которая в данном случае совпадает с нормой) для наблюдения больше , поскольку для этого вектора двоичных объектов это невозможно иметь внутренний продукт с другим бинарным вектором признаков , который будет удовлетворять мой критерий , когда эта сумма меньше , чем . Очевидно, что вычисление этих сумм - только сложность, поэтому я - дешевый способ снизить величину шага внутреннего продукта.L O ( N )L - 1LO ( N)
Но классический способ уменьшить масштабы этой проблемы - выполнить дополнительную предварительную фильтрацию. Вас особенно интересует, когда одна, несколько необычная функция принимает значение 1? Если это так, выполняйте вычисления только для этих векторов признаков.
Или, возможно, вы могли бы извлечь выгоду из переосмысления вашей проблемы. Например, известно, что выборка имеет хорошие свойства; Выводная статистика развивается по этой идее достаточно глубоко. Поэтому, возможно, невозможно проанализировать весь набор данных, но вполне возможно исследовать небольшую выборку. Я не знаю, на какой вопрос вы пытаетесь ответить, но если вы тщательно спланируете свой эксперимент, вам может не хватить только нескольких тысяч наблюдений, при этом данных для проверки осталось более чем достаточно.
После некоторой дополнительной мысли, у меня есть сильное подозрение , что данные вы работаете, какое - то граф . Весьма вероятно, что состоит из нескольких соединенных компонентов, и в этом случае вы можете разложить на набор графиков с приятным побочным эффектом уменьшения размерности данных. Даже если на графике только два соединенных компонента примерно одинакового размера, это означает, что ваши парные сравнения примерно равны общей стоимости!G G O ( N 2 ) 1гггO ( N2)14
Если график симметричен, могут быть полезны следующие наблюдения:
- Определите лапласиан вашего графа как , где - диагональная матрица степени (сумма каждого вектора признаков), а - матрица смежности (укладка векторов признаков в матрицу).D Aп= D - ADA
- Времена числа отображается как собственное есть число компонент связности . Разложение графика на его связанные компоненты и работа исключительно с этими компонентами будет иметь побочный эффект уменьшения размера ваших данных; вычисление вашего количества интереса будет легче. Но вычисление собственного разложения будет дорого для миллиона вершин ...П Г0пг
- (После полной перестановки) представляет собой блок - диагональная матрица лапласианов из компонент связности .пг
- п положительно полуопределен. Это почти наверняка полезно как-то.
- Алгебраическая связность является значением второго-наименьшее собственное . Это говорит о том, насколько хорошо связан есть. Возможно, это ответит на некоторые интересующие вас вопросы: векторы, которые имеют общие черты. Теория спектральных графов развивает эту идею более подробно.гпг
"Это проблема СНС?" Я не уверен. В одном приложении функции описывают поведение, и мы стремимся связать людей с похожим поведением. Это делает это проблемой SNA?
Если у вас есть двудольный граф, связывающий людей с поведением, вы можете думать об этом как о сети присоединения , где люди представляют собой строки, а поведения - как столбцы. Если вы хотите , чтобы соединить людей с людьми с помощью поведения , который они имеют в общем, вы можете вычислить . - это общее поведение людей. Очевидно, множество вершин, где отвечает на ваш вопрос.ВB BT= AAя жAя ж≥ L