Spark Chi-Square特征选择性能

时间:2015-08-27 11:09:26

标签: java apache-spark machine-learning apache-spark-mllib

Spark ChiSqureSelector算法存在一些性能问题。

我实现了如下功能选择:

private JavaRDD<LabeledPoint> chiSqure(JavaRDD<LabeledPoint> orginalData, int k) {
    ChiSqSelector selector = new ChiSqSelector(k);
    transformer = selector.fit(orginalData.rdd());
    return orginalData.map(lp -> new LabeledPoint(lp.label(), transformer.transform(lp.features())));
}

一切都很好,但对于每个尺寸为15k的8000个矢量(和numberOfTopFeatures = 14k参数),chiSquare模型拟合大约需要15分钟。

我需要将这个函数用于大约100k向量的原始数据大小,每个向量大约100k,所以我担心它会破坏性能。

我做错了吗? 如何提高ChiSquare模型拟合的性能?

我的测试环境参数 CPU:Intel Core 2 Duo 3.0 GHz, RAM:8 GB

2 个答案:

答案 0 :(得分:0)

Spark的性能通常来自跨多台机器的运行,因此我不担心任何单机基准测试。总体而言,您的使用情况看起来很好。

答案 1 :(得分:0)

首先,您应该验证SparkConf的设置,然后验证SparkContext(设置#cores,executor和驱动程序内存)。其次,即使在一台机器上,您也可以使用Spark模拟集群。例如,看看here