首页 > 解决方案 > 如何对大型特征集进行主成分分析?

问题描述

我正在使用逻辑回归来训练具有 20,000 个特征的数据集,并且还使用 PCA 进行降维。下面的代码片段直接来自这里的文档:https ://spark.apache.org/docs/latest/mllib-dimensionality-reduction.html#principal-component-analysis-pca但是,我(可以理解)正在获取 Java 堆空间错误(本地和在 GCP 集群上运行时)。我如何将 PCA 用于如此大的特征集,或者,什么是降维的更好方法?

import org.apache.spark.mllib.feature.PCA
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.rdd.RDD

val data: RDD[LabeledPoint] = sc.parallelize(Seq(
  new LabeledPoint(0, Vectors.dense(1, 0, 0, 0, 1)),
  new LabeledPoint(1, Vectors.dense(1, 1, 0, 1, 0)),
  new LabeledPoint(1, Vectors.dense(1, 1, 0, 0, 0)),
  new LabeledPoint(0, Vectors.dense(1, 0, 0, 0, 0)),
  new LabeledPoint(1, Vectors.dense(1, 1, 0, 0, 0))))

// Compute the top 5 principal components.
val pca = new PCA(5).fit(data.map(_.features))

// Project vectors to the linear space spanned by the top 5 principal
// components, keeping the label
val projected = data.map(p => p.copy(features = pca.transform(p.features)))

标签: apache-sparkmachine-learningapache-spark-mllib

解决方案


推荐阅读