Сокращение SVD на разреженной матрице действительно неэффективно в Python
Я думаю, что я в значительной степени понял теорию SVD, тем не менее у меня возникают некоторые проблемы и некоторые сомнения, когда я пытаюсь реализовать ее в python, чтобы уменьшить разреженную матрицу.
Я использую функцию sparsesvd (я также пробовал другие, но я понимаю, что это наиболее полезно в моей ситуации), чтобы выполнить уменьшение размерности в Матрице содержимого элемента (матрица соответствия элемента-атрибута, так сказать, так это заполнено 0 и 1). Разложение работает довольно эффективно, но когда приходит время восстанавливать матрицу, меня поражает ужасно неэффективный точечный продукт.
Анализируя данные, я понимаю, что размеры нового вектора, для которого я пытаюсь вычислить точечное произведение, намного больше по количеству элементов относительно исходного ICM, поэтому у меня начинаются некоторые сомнения по этому поводу. Я понимаю, что мы получаем окончательную матрицу, которая имеет более низкий ранг, и я не могу понять, как я могу получить матрицу подобия более эффективным способом, если новые матрицы, с которыми я работаю, больше.