我使用 Spark Scala 进行多类分类,并且特征是连续的。对于这种类型的分类,MLlib 似乎仅限于决策树和随机森林——对于朴素贝叶斯,支持多项式和伯努利,我需要使用高斯,而 LogisticRegressionWithLBFGS 也不适合。
我知道在 Python 中,您可以将 sci-kit learn 与 Spark 集成,但是在使用 Scala 时有什么选择吗?
有兴趣听听人们对此的看法。
我使用 Spark Scala 进行多类分类,并且特征是连续的。对于这种类型的分类,MLlib 似乎仅限于决策树和随机森林——对于朴素贝叶斯,支持多项式和伯努利,我需要使用高斯,而 LogisticRegressionWithLBFGS 也不适合。
我知道在 Python 中,您可以将 sci-kit learn 与 Spark 集成,但是在使用 Scala 时有什么选择吗?
有兴趣听听人们对此的看法。
您可以使用 scikit-learn 的方式基本上是将您的数据广播给工作人员,然后在不同工作人员的 grid_search 中进行不同的交叉验证折叠或不同的参数设置。据我所知,这就是 pySpark 中的 scikit-learn 包所做的一切。这类似于法线映射。对于 Scala 中的任何机器学习库来说,实现这一点都应该相对容易(我不使用 Scala,所以在这方面我无法为您提供建议)
仅当您的数据不是太大而无法容纳在每个机器内存中时,广播您的数据并使用每个 spark 分区的不同学习参数对其进行学习才是一种解决方案。如果您希望大规模应用 ML 模型,则必须处理二次复杂度,否则您将根据复杂度增加节点数量,但从二次复杂度到更大的复杂度是困难的。通过Clustering4Ever,我们尝试在 scala 和 scala/spark 中提出可扩展的聚类算法。我们将很快添加一些您可能会喜欢的新算法。不要犹豫,询问特定算法或添加您已经实现的算法。