機械学習: ロジスティック回帰 vs サポートベクターマシン
Stanford大学の Andrew Ng 先生の Coursera での講義。
だいぶ遅れをとってしまったが、Week 7: Support Vector Machines を復習している。
ライブラリを使おう
世の中には、
- LIBLINEAR -- A Library for Large Linear Classification
- LIBSVM -- A Library for Support Vector Machines
といった優れたライブラリが既に存在するので、数値計算を自分で実装するのは避けよう。
アルゴリズムの選択
素性の数 (n) と学習データの数 (m) によって最適なアルゴリズムは変わってくる。
(mと比較して) n が大きい場合 [例: n >= m, n = 10000, m = 10 .. 1000]
ロジスティック回帰、またはカーネルトリックなしの線形SVM
理由: 学習データが少ない状態で複雑なアルゴリズムを使うと過学習(overfit)が起こり、汎用性がなくなってしまうため。
n が小さく、m が中くらいの場合 [例: n = 1 .. 1000, m = 10 .. 10000]
ガウスカーネルを使ったSVM (非線形SVM)
n が小さく、m が大きい場合 [例: n = 1 .. 1000, m >= 50000)
新しい素性を付け加えた上で、ロジスティック回帰、またはカーネルトリックなしの線形SVM を使う
理由: 巨大な m に対して非線形SVMを行うと計算量が非常に多くなるので、コンピューティングリソースが不足するおそれがある。
その他、ニューラルネットワークはいずれの状況にも適用可能だが、学習処理の速度は遅くなる可能性が高い。
また、線形SVM、ガウスカーネル以外のSVMカーネルとして、以下のものが挙げられていた。
- 多項式カーネル
- 文字列カーネル
- カイ二乗カーネル
- ヒストグラムインターセクションカーネル
0 件のコメント:
コメントを投稿