Я применяю Kernel PCA для задачи извлечения признаков в задаче компьютерного зрения, которая включает решение проблемы собственных значений для очень большой матрицы симметрии, например размером 6400x6400. Я использую OpenCV в своей реализации и использую метод cv::eigen для EigenDecomposition. Этот метод вычисляет все собственные значения и собственные векторы заданной матрицы, что становится легко неразрешимым в случае очень больших и плотных матриц, как в моем случае, поскольку, насколько мне известно, задача имеет сложность O(N^3). Но на самом деле мне нужно только небольшое подмножество собственных векторов, которые соответствуют n наибольшим собственным значениям матрицы, то есть n ‹ N. Есть ли какой-либо метод, доступный в OpenCV для этой цели, который вычисляет только некоторые из наибольших собственных значений и их соответствующие собственные векторы? Мне не удалось найти такой метод в документации OpenCV. Также приветствуется любой метод из любой другой библиотеки.
The canonical algorithm is the Arnoldi-Lanczos iterative algorithm implemented in ARPACK
- person Micka   schedule 03.01.2015