【发布时间】:2019-09-24 11:05:09
【问题描述】:
我在 (pyspark) mllib (Spark 2.2.0) 中使用 SVD 和 PCA 函数,如以下链接所述:https://spark.apache.org/docs/2.2.0/mllib-dimensionality-reduction.html
假设给定以下数据对象:
[(2, 2), (3, 1), (2, 2), (1, 3), (1.0, 1.0), (3.0, 3.0)]
应用computeSVD() 函数产生:
对于你:
[DenseVector([-0.3922, -0.0]), DenseVector([-0.3922, -0.7071]), DenseVector([-0.3922, -0.0]), DenseVector([-0.3922, 0.7071]), DenseVector([-0.1961, -0.0]), DenseVector([-0.5883, -0.0])]
和局部密集矩阵V:
[[-0.70710678 -0.70710678]
[-0.70710678 0.70710678]]
此时有一个问题:spark 中的特征向量实际上是什么?他们是U还是V?
现在与应用computePrincipalComponents() 的对比:
这产生:
DenseMatrix([[1., 0.],
[0., 1.]])
根据 spark 文档,声明“主成分存储在局部密集矩阵中”。因此,PCA 的结果应该产生特征向量,但为什么它们与 SVD 的局部密集矩阵 V 的特征向量不同?他们最终被规范了吗?
提前感谢您对此问题的任何详细说明。
【问题讨论】: