2016-12-02 83 views
0

當我嘗試Apache Spark SVM的多類分類問題時,出現以下錯誤。有人可以解釋我是否有辦法做到SVM多元分類使用Apache星火MLlib我可以使用apache spark支持向量機做多類分類嗎?

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) 

回答

2

不是每個ML算法可以處理開箱即用的多類問題。如果是這樣的話,你總是可以使用one vs. rest策略。 Wiki文章解釋了哪些算法對多類別具有「自然」擴展。

如果您檢查Spark docs,您會注意到SVM在二進制下被提及。 SVM算法需要擴展來處理多個類,顯然MLlib中可能沒有實現(從文檔判斷)。你可以通過提到的OvR策略來解決這個問題,但是你的表現不會很好。多層感知器是一個有趣的選擇,因爲它也可以提供屬於給定類別的概率。

相關問題