Apache Spark(MLLib)用于实时分析

7
我有几个关于使用Java进行实时分析的Apache Spark问题。当提交Spark应用程序时,存储在Cassandra数据库中的数据将通过支持向量机(SVM)机器学习算法加载和处理。在Spark的流扩展中,当新数据到达时,它们被持久化到数据库中,现有数据集重新训练并执行SVM算法。此过程的输出也存储回数据库。
1. Apache Spark的MLLib提供线性支持向量机的实现。如果我想要非线性SVM实现,我应该实现自己的算法还是可以使用现有的库,如libsvm或jkernelmachines?这些实现不基于Spark的RDDs,是否有一种方法可以使用RDD集合而不从头开始实现算法?如果没有,那么如果我想测试几个算法,那将是一个巨大的工作量。
2. MLLib是否在执行SVM算法之前提供了数据缩放的开箱即用实用程序?如第2.2节所定义的http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf 3. 在流式传输新数据集时,我需要重新训练整个数据集吗?是否有任何方法可以仅将新数据添加到已经训练好的数据中?

http://apache-spark-user-list.1001560.n3.nabble.com/How-to-incorporate-the-new-data-in-the-MLlib-NaiveBayes-model-along-with-predicting-td9031.htmlhttps://issues.apache.org/jira/browse/SPARK-4144 我遇到了第三个问题。你对你的问题有什么反馈吗?在线性回归中,它支持数据流而不是重新训练整个数据。 - İlker Korkut
1个回答

1
我将为您逐个回答问题:
1. Spark提供了MLUtils类,允许您将数据从LIBSVM格式加载到RDD中 - 因此仅数据加载部分不会阻止您利用该库。如果您知道自己在做什么,还可以实现自己的算法,尽管我的建议是采用现有算法并调整目标函数,看看它如何运行。Spark基本上为您提供了分布式随机梯度下降过程的功能 - 您可以做任何事情。
2. 据我所知没有。希望其他人知道答案。
3. 当整个数据流时重新训练是什么意思?
根据文档,
“..除拟合外,每批数据都会进行拟合,以便模型不断更新以反映来自流的数据。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接