algorithm - PCA:查找协方差矩阵的特征值:求解 N 次多项式

标签 algorithm math matrix pca

如果我没理解错的话,PCA的原理很简单:

  1. 计算数据向量的协方差矩阵C
  2. 求解 det(C - e***I) = 0,找到矩阵 **C 的特征值 e
  3. 计算矩阵 C 的特征向量(根据这些特征值)。

首先:这个描述是否正确?

第二: 任何机器求解多项式方程 det(C - e***I) = 0 的算法? 我知道这是一道一般的数学题(求 **n 次多项式的根)。

第三:有没有用 C/C++ 实现 PCA 的简单

非常感谢。

最佳答案

  1. 首先,为了找到特征值,不需要求解您刚才提到的方程。有这样的东西 eigendecomposition of a matrix
  2. 其次,协方差矩阵是对称且半正定的,因此该矩阵的特征分解等于 singular value decomposition .
  3. 对于上述两种分解,有许多免费和专有的实现(最先进的实现是 LAPACK)。
  4. 有很多包含 PCA 的库。如果商业实现合适,您可以尝试 FinMath from RTMathNMath from CenterSpace (均适用于 .NET)。否则你可以试试 GSL或其他一些库(StackOverflow 上有几个问题包含更完整的数值库列表)。

关于algorithm - PCA:查找协方差矩阵的特征值:求解 N 次多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717495/

相关文章:

algorithm - 修改均匀随机数生成器的范围

c++ - 求一系列数字加减后的最小值和最大值

algorithm - 难以理解渐近符号

loops - 如何在 julia 中使用数组元素作为迭代器?

R : how to run a command between every pair in a list

java - 邻接矩阵(java)中的邻居(int参数)遇到一些问题

performance - CUDA 可以帮助解决什么样的数据处理问题?

c++ - 使用堆栈实现的所有可能路径的 DFS 算法

c# - 我如何让一个类存储在一个二维数组 "aware"中它们的位置呢?

c - C 和练习中的数学库