tsubosakaの日記

Topcoder系の記事はTopCoder部の方に書いていきます.
twitterアカウント: http://twitter.com/tsubosaka

2009-09-01

[]SVMソフトウェアの比較

オープンソースのSVMソフトウェアの基本デフォルトの設定で比較などをしてみた。

利用データはLIBSVM Data: Classification, Regression, and Multi-labelのa9aとnews20.binaryを利用した。

データセットの詳細は以下のようになっている

データセット名訓練データ数テストデータ数データの次元
a9a3256116281123
news20.binary1500049961355199

なお、news20.binaryでの訓練データとテストデータの作成については id:n_shuyoさんの記事を参考にした。

比較に用いたソフトウェアは以下の5つ

測定結果は以下のようになった。パラメータの設定はデフォルトのものを利用。svm-perfに限りC=1.0とした*1

a9a

ソフトウェア訓練時間(sec)精度(%)
LIBSVM(Linear Kernel)82.7984.98
LIBSVM(RBF Kernel)64.2184.81
SVM-Light(Linear Kernel)4.08485.01
SVM-Light(RBF Kernel)386.679.87
TinySVM(Linear Kernel)216.384.98
SVM-perf(Linear Kernel)0.41084.59
LIBLINEAR(Linear Kernel)0.63984.96

news20.binary

ソフトウェア訓練時間(sec)精度(%)
LIBSVM(Linear Kernel)267.2796.43
SVM-Light(Linear Kernel)53.62496.42
TinySVM(Linear Kernel)445.596.43
SVM-perf(Linear Kernel)7.07780.20
LIBLINEAR(Linear Kernel)3.63896.36

考察

結果から次のようなことが読み取れる

  • a9aに関してはlinear kernelとRBF kernelで顕著な精度の違いはない
  • Linear Kernelに関してはSVM-perf以外はどれも似たような精度となっている
    • 何でSVM-perfだけ精度が低くなっているのかは、まだ元論文を読んでいないので不明、単にパラメータの設定の仕方が悪いだけかも
  • TinySVMはLinear Kernelを利用しているものの中では長い訓練時間がかかっている
    • TinySVMの開発が2002年で止まっていることが理由の一つとしてあげられる。
  • SVM-LightはLinear Kernelのときはそこそこ高速に訓練が行える
    • SVM-Lightのページには"use of folding in the linear case"と書いており、この工夫が速度に影響していると考えられる

*1:指定しないと実行できないため

niamniam 2009/09/03 00:48 面白い記事,ありがとうございます.
a9aで,SVM-Light(RBF Kernel)だけ精度が低いのは,なぜなのでしょうか?

tsubosakatsubosaka 2009/09/06 09:59 >>niam
正直よくわからないです。ただモデルの出力をみるとSVM-LightのLinear Kernelがサポートベクタの数が10000程度に比べて、RBFの場合は27000ほどあり、データ点のかなりの部分がサポートベクタとして用いられているのでそのあたりがからんできているのかと思われます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/tsubosaka/20090901/1251819878