web-dev-qa-db-ja.com

SVM分類器のトレーニングにはどのくらい時間がかかりますか?

私は次のコードを書き、小さなデータでテストしました。

classif = OneVsRestClassifier(svm.SVC(kernel='rbf'))
classif.fit(X, y)

どこ X, y(X-30000x784行列、y-30000x1)はnumpy配列です。小さなデータでは、アルゴリズムがうまく機能し、正しい結果が得られます。

しかし、私は約10時間前にプログラムを実行しました...そして、それはまだ進行中です。

どれくらいの時間がかかるのか知りたいのですか、それとも何らかの形で動かなくなったのですか? (ラップトップ仕様4 GBメモリ、Core i5-480M)

11
Il'ya Zhenin

SVMトレーニングは任意の長さにすることができます。これは、数十のパラメーターに依存します。

  • Cパラメータ-誤分類のペナルティが大きくなり、プロセスが遅くなります
  • カーネル-カーネルがより複雑で、プロセスが遅くなります(rbfは事前定義されたものの中で最も複雑です)
  • データサイズ/次元-繰り返しますが、同じルール

一般に、基本的なSMOアルゴリズムはO(n^3)であるため、30 000データポイントの場合、実際には膨大な数である2 700 000 000 000に比例する操作の数を実行する必要があります。あなたの選択肢は何ですか?

  • カーネルを線形のものに変更します。784の機能は非常に多く、rbfは冗長になる可能性があります
  • 特徴の次元を減らす(PCA?)
  • Cパラメータを下げます
  • データのサブセットでモデルをトレーニングして適切なパラメーターを見つけてから、クラスター/スーパーコンピューターでモデル全体をトレーニングします
31
lejlot