sklearn.multiclass.OneVsRestClassifierの挙動について
scikit-learnによる多クラスSVMを参考にSVCにおいて、One-versus-the-restとOne-versus-oneのどちらの戦略が良いかを実データをもとに知りました。
One-versus-the-restはOne-versus-oneと比較して計算時間が短い点において有効な戦略であるのかなぁ程度の理解だったので、精度に差がここまで出てくることが意外でした。
しかしながら、よく見てみると、
scikit-learnによる多クラスSVMに使用されているestimator = SVC(C=C, kernel=kernel, gamma=gamma)
はdefalutでovrが使用されていると感じます(理由:sklearn.svm.SVCのデフォルトがdecision_function_shape='ovr'
)。
しかし、scikit-learnによる多クラスSVMによればdefalutはone-versus-the-oneによる識別と書かれてあり、この記述が正しければ、decision_function_shape='ovr'
は何を意味しているのか、
逆にdecision_function_shape='ovr'
が意味通りOne-versus-the-restを意味しているのであれば、以下のコード
python
1estimator = SVC(C=C, kernel=kernel, gamma=gamma) 2classifier = OneVsRestClassifier(estimator) 3classifier.fit(train_x, train_y) 4pred_y = classifier.predict(test_x)
によってovrに変換することによって精度が向上する理由は何を意味するのでしょうか?
詳しい方がいれば教えていただけると大変助かります。よろしくお願いいたします。
#追記
What is the difference between OneVsRestClassifier with SVC and SVC with decision_function_shape='ovr'?
上記のurlに軽く議論されています。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/10 03:48
2020/01/10 04:52
2020/01/10 05:22 編集
2020/01/10 07:06