14

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

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

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

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

どれくらいの時間がかかるか知りたいですか、それとも何らかの方法で行き詰まっていますか? (ノートパソコンスペック メモリ4GB、Core i5-480M)

4

1 に答える 1

38

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

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

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

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