Предполагая, что у вас есть какие-то сходства во всех матрицах. Тогда у вас есть сходство между книгами, которые основаны на совместной встречаемости ключевых слов, а также на сходство между различными ключевыми словами:
A = B C B^T.
Где А ваша матрица сходства, B является матрица ключевых слов, соответствующих книг и С матрица сходства между разными ключевыми словами.
У вас есть матрица размера n_A и занимает не более n_A. Тогда вы можете только восстановить C до того же ранга N_A, так что вы можете предположить, C иметь образуют
C = V^T V.
Затем, вы можете легко восстановить C, делая eigendecomposition из А. С одной стороны, у вас есть
A = U D U^T,
с другой стороны, у вас есть
A = B^T C B.
Сравнивая эти два, у вас есть
B V^T = U D^{1/2},
поскольку D диагональ (мы надеемся, что A не имеет сложных собственных значений).
Уравнение выше может быть разрешено для V с минимальными квадратами.
Все те решатели, которые вам нужны для этого, реализованы на всех основных языках программирования, например, в python это numpy library.
:
Вы можете сделать 'C = B 'B',' C = B' AB' или образец C совершенно случайным образом ... и многое другое, без **, точно определяющего то, что каждый из них представляет, нет ответа ** , – lejlot
Спасибо @lejlot. Матрикс А показывает некоторую предварительную взаимосвязь между книгами. например, книга «ee» является обязательным условием для книги «cc». Затем вы можете видеть A как ориентированный график, который показывает необходимое соотношение между книгами –