Я пишу код для вычисления классического многомерного масштабирования (сокращенно MDS) очень большого n
по n
матрице, n = 500,000
в моем примере.
На одном этапе MDS мне нужно вычислить три старших собственных значений и соответствующих им собственных векторов n
на n
матрицу. Эта матрица называется матрицей B
. Мне нужны только эти три собственных вектора и собственные значения. Общие методы вычисления собственных векторов и собственных значений большой матрицы занимают много времени, и мне не требуется очень точный ответ, поэтому я ищу оценку собственных векторов и собственных значений.
Некоторые параметры:
- Матрица
B
является симметричной, настоящие и довольно плотные - Теоретически разложение по собственным значениям
B
всегда должно давать действительные числа. - Я не требую абсолютно точной оценки, только быстрой. Мне нужно, чтобы это было сделано за несколько часов.
- Пишу на питоне и с++
Мой вопрос: существуют ли быстрые методы оценки трех самых высоких собственных векторов и собственных значений такой большой матрицы B
?
Мой прогресс: я нашел метод аппроксимации самое высокое собственное значение матрицы, но я не знаю, могу ли я обобщить его до трех самых высоких. Я также нашел эту статью, написанную в 1996 году, но она чрезвычайно технически и трудно для меня читать.