遥かへのスピードランナー

シリコンバレーでAndroidアプリの開発してます。コンピュータービジョン・3D・アルゴリズム界隈にもたまに出現します。

第9回PRML読書会

土曜日はサイボウズ・ラボで行われた第9回PRML読書会に参加しました。
自分は発表者トップバッターでSVMの基本的なところを説明しました。

参加者の方からもいろいろ指摘をいただきました。

  • なぜマージンを最大化するとよいのか?の説明で『まず2値に分類された学習データをガウスカーネルでのParzen推定を適用して入力の分布を推定する。誤分類が最小になる分類平面は、ガウスカーネルの分散を→0の極限において、マージンを最大化する分類平面に一致する』とあるが、なぜ分散を0に近づけるのかがわからない。
    • そういうものとして理解するしかない?理論的な説明はまだ分からずです。。
  • Randomized Algorythmを適用してSVMの計算を高速化する手法がある。
    • ちょっとググってみたところこの辺ですかね。いろいろと制約はるみたいですがO(log n)で二次計画問題の近似解が求まる!
  • biasをゼロと仮定して、二次計画問題を高速で解く手法が存在する。
    • liblinearなどのライブラリでこの手法が利用されている。

多クラスSVMの発表のときにも参加者の間で議論がありましたが、SVMはやはり2クラス分類器で、多クラスに応用する事例というのは実際にも少ないそうです。(PRML7.2で紹介されているRVMはSVMとは名前は似ているが完全な別モノ!)
個人的には2クラス分類、と言われてもあまり実際的な使い道が思いつかないのですが、世間的にSVMがもてはやされてるのはそれだけ2クラス分類をしたい問題が多いということなのか。今後SVMの事例を見る際は、そういう観点からも考えていきたいと思いました。

あと、8月末の第6回読書会でもニューラルネットワークの説明をしたのでいまさらですが資料をあげておきます。

このときにも冒頭にSVMとの比較がありましたが、今回改めて両方を比較してみると、

  • SVMはSparseな解になる
    • 訓練データの特性にもよるがマージン境界上の訓練データ集合が少ない場合は予測計算量がすくない。
  • SVMは局所解問題がない
    • NNでは局所解問題があるので、初期値選択を慎重にする必要がある。
  • SVMにはマージン最大化による汎化能力がある。
  • SVMは基本的に二クラス分類器
    • NNはどちらかといえば回帰に向いている。

という感じでしょうかな。多クラス分類とか回帰とかだったらSVM以外の選択肢を使った方がよさそうかな、と改めて思いました。