Косинусное сходство двух разреженных векторов в Scala Spark - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть фрейм данных с двумя столбцами, где в каждой строке есть разреженный вектор.Я пытаюсь найти правильный способ вычислить косинусное сходство (или просто точечное произведение) двух векторов в каждой строке.

Однако мне не удалось найти какую-либо библиотеку или учебник, чтобы сделать этодля разреженных векторов.

Единственный способ, который я нашел, заключается в следующем:

  1. Создать матрицу ak X n, в которой n элементов описываются как векторы k-размера.Для представления каждого элемента в качестве вектора измерений можно использовать ALS, который представляет каждый объект в пространстве скрытых факторов.Размерность этого пространства (k) может быть выбрана вами.Эта матрица k X n может быть представлена ​​в виде СДР [Вектор].

  2. Преобразовать эту матрицу k X n в RowMatrix.

  3. Использовать columnShapsities () функция, чтобы получить X n матрицу сходств между n элементами.

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

1 Ответ

0 голосов
/ 15 декабря 2018

Если число векторов, для которых вы хотите рассчитать произведение точек, мало, кэшируйте таблицу RDD [Vector].Создайте новую таблицу [cosine_vectors], которая является фильтром в исходной таблице, чтобы выбрать только те векторы, для которых вы хотите сходство косинусов.Радиопередача объедините эти два и вычислите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...