У меня большой набор данных, и мне необходимо вычислить косинус-сходства между продуктами в контексте совместной фильтрации по элементам для рекомендаций по продуктам. Поскольку данные содержат более 50000 элементов и 25000 строк, я выбрал использование Spark и нашел функцию columnSimilarities()
, которую можно использовать в DistributedMatrix, в частности, в RowMatrix
или IndexedRowMatrix
.
Но есть 2 вопроса, которые меня интересуют.
1) В документации упоминается, что:
RowMatrix поддерживается RDD его строк, где каждая строка является локальной
вектор. Поскольку каждая строка представлена локальным вектором, число
столбцы ограничены целочисленным диапазоном, но он должен быть намного меньше
на практике.
Поскольку у меня много продуктов, кажется, что RowMatrix
- не лучший выбор для построения Матрицы подобия из моего ввода Spark Dataframe
. Вот почему я решил начать с преобразования кадра данных в CoordinateMatrix
, а затем использовать toRowMatrix()
, потому что columnSimilarities()
требует входной параметр в качестве RowMatrix. Между тем, я не уверен в его эффективности ..
2) Я узнал, что:
метод columnSimilities возвращает только не диагональные записи
верхняя треугольная часть матрицы подобия.
ссылка
Значит ли это, что я не могу получить векторы сходства всех продуктов?