我可以使用 apache spark 支持向量机进行多 class class 化吗?

Can I do multi class classification with apache spark Support Vector Machines?

当我尝试使用 Apache Spark SVM 解决多 class class 化问题时,出现以下错误。有人可以解释一下是否有办法使用 Apache Spark MLlib

进行 SVM 多 class class 化
Exception in thread "main" org.apache.spark.SparkException: Input validation failed.
    at org.apache.spark.mllib.regression.GeneralizedLinearAlgorithm.run(GeneralizedLinearAlgorithm.scala:251)
    at org.apache.spark.mllib.regression.GeneralizedLinearAlgorithm.run(GeneralizedLinearAlgorithm.scala:229)
    at org.apache.spark.mllib.classification.SVMWithSGD$.train(SVM.scala:219)
    at org.apache.spark.mllib.classification.SVMWithSGD$.train(SVM.scala:255)
    at org.apache.spark.mllib.classification.SVMWithSGD.train(SVM.scala)
    at SVMClass.main(SVMClass.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

并非每个 ML 算法都能开箱即用地处理多class 问题。如果是这种情况,您始终可以使用 one vs. rest 策略。 Wiki 文章解释了哪些算法具有 "natural" 对 multiclass 的扩展。

如果您检查 Spark docs,您会注意到二进制下提到了 SVM。 SVM 算法需要扩展来处理多个 classes 并且显然它可能没有在 MLlib 中实现(从文档判断)。您可以使用提到的 OvR 策略解决这个问题,但您的表现不会很好。多层感知器是一个有趣的替代方案,因为它还可以提供属于给定 class.

的概率