我可以使用Apache Spark支持向量机进行多类分类吗?



当我尝试用于多类分类问题的Apache Spark SVM时,我会出现以下错误。有人可以解释我是否有一种使用Apache Spark Mllib

进行SVM多类分类的方法
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算法都可以处理包装盒的多类问题。如果是这样,您可以随时使用一种与休息策略。Wiki文章解释了哪种算法具有"自然"扩展到多类。

如果您检查火花文档,您会注意到二进制中提到了SVM。SVM算法需要扩展以处理多个类,显然它可能没有在MLLIB中实现(从文档来判断)。您可以通过上述OVR策略来解决这个问题,但是您的表现不会出色。多层perceptron是一种有趣的选择,因为它也可以提供属于给定类的概率。

最新更新