1

I am applying Kernel PCA for a feature extraction task in a computer vision problem, which involves solving the eigen value problem for a very large symmetrix matrix, like 6400x6400 in size. I am using OpenCV in my implementation and I use the cv::eigen method for the purpose of EigenDecomposition. This method calculates all the eigenvalues and eigenvectors of the given matrix, which becomes easily intractable in case of very large and dense matrices, like in my case, since the problem has O(N^3) complexity as far as I know. But in fact, I only need a small subset of the eigenvectors, which correspond to n largest eigenvalues of the matrix, which is n < N. Is there any method available in OpenCV for this purpose, which only calculates some of the largest eigenvalues and their corresponding eigenvectors? I failed to locate such a method in OpenCV documentation. Any method from any other library is welcome, as well.

Ufuk Can Bicici
  • 3,589
  • 4
  • 28
  • 57
  • have a look [here](http://stackoverflow.com/questions/27733002/how-to-use-pca-to-reduce-dimension/27739710#27739710) – berak Jan 03 '15 at 08:05
  • 1
    I know the PCA class,but is not suitable for me. I am not doing the regular PCA on an array of data. Kernel PCA is a special version of the PCA, which applies PCA to data in the kernel space, which is implicitly done when we apply eigen decomposition to the Gram Matrix of the input data. My input is not the data points, the matrix to be decomposed itself (think of it as the covariance matrix in the regular PCA) – Ufuk Can Bicici Jan 03 '15 at 08:41
  • try answer of @ramanujan in http://stackoverflow.com/questions/713878/how-expensive-is-it-to-compute-the-eigenvalues-of-a-matrix he says to use `The canonical algorithm is the Arnoldi-Lanczos iterative algorithm implemented in ARPACK` – Micka Jan 03 '15 at 08:52
  • since your matrix is symmetric (didnt read that) there might be more efficient solutions, not sure. But the link I provided my help anyways. – Micka Jan 03 '15 at 10:54

0 Answers0