これは、大規模SVMの典型的な問題です。新しい機能が追加された場合、およびオンラインsvmを使用していない場合に新しいデータが追加された場合は、SVMモデルを再トレーニングする必要があります。いくつかのオプション:
実用的なオプション(既成):
LIBLINEAR-線形SVMを実行できる場合、線形カーネルを利用して2次トレーニング時間を提供するアルゴリズムがいくつかあります。libsvmと同じ研究グループからのLIBLINEARをチェックしてください。彼らは昨日リリースされたバージョン1.91にリグレッションを追加しました。http://www.csie.ntu.edu.tw/~cjlin/liblinear/
Oracle ODM -Oracleでは、ODMパッケージでSVMを利用できます。彼らは、真に最適なソリューションを見つけるための計算コストを支払うことなく、基本的に「十分に優れた」SVMを提供するための実用的なアプローチを採用しています。彼らはいくつかのサンプリングとモデル選択技術を使用しています-それについての情報はここで見つけることができます:http ://www.oracle.com/technetwork/database/options/advanced-analytics/odm/overview/support-vector-machines-paper-1205 -129825.pdf
SHOGUN -SHOGUN Machine Learning Toolboxは、大規模な学習用に設計されており、他の方法だけでなく、多くのSVM実装と連携します。私はそれを使ったことがありませんが、一見の価値があるかもしれません:http: //www.shogun-toolbox.org
Kernel-machines.orgには、ソフトウェアパッケージのリストがあります:http ://www.kernel-machines.org/software
その他のSVM研究
独自のロールを作成する場合は、SVMを研究論文で公開されている大規模なデータセットにスケールアップするためのさまざまな手法がありますが、上記の例のようにコードが必ずしも利用可能、使用可能、または維持されているとは限りません。彼らは良い結果を主張しますが、それぞれに独自の欠点があります。多くの場合、ある程度のデータ選択を行う必要があります。たとえば、いくつかの研究論文では、線形時間クラスタリングアルゴリズムを使用してデータをクラスター化し、クラスターに基づいて連続するSVMモデルをトレーニングして、すべてのデータを使用せずにモデルを構築しています。コアベクターマシンは線形トレーニング時間を主張していますが、その精度が主張するほど高いかどうかについてはいくつかの批判があります。多くの論文では、さまざまなヒューリスティックアルゴリズムを使用して、サポートベクター候補の可能性が最も高いものを選択しようとしています。これらの多くは分類用であり、しかし、おそらく回帰に適応することができます。この調査の詳細については、参考資料を追加してください。
アルゴリズムを探索するためのツール
あなたはおそらくすでにこれらに精通しているでしょうが、念のためここにそれを投げると思いました:
大規模なデータセットで優れた実行時間を持つ他のアルゴリズムがありますが、それらがうまく機能するかどうかを判断するのは難しいです。それはデータの構成に依存します。実行時は重要なので、私はより単純なモデルから始めて、より複雑なものまで進めていきます。ANN、ディシジョンツリー回帰、ベイジアンメソッド、ローカル加重線形回帰、またはリーフノードが線形モデルであるディシジョンツリーであるモデルツリーなどのハイブリッドアプローチはすべて、大規模なデータセットでSVMよりも高速に実行でき、生成される可能性があります。良い結果。
WEKA -Wekaは、オプションを探索するための優れたツールです。WEKAを使用して、さまざまなアルゴリズムでデータのサブセットを試します。ソースコードはオープンであり、Javaで何かを選択した場合は、ニーズに合わせて調整できます。http://www.cs.waikato.ac.nz/ml/weka/
R -Rプログラミング言語も多くのアルゴリズムを実装しており、Matlabでのプログラミングに似ています。http://www.r-project.org/
大規模なデータセット以外でWEKAまたはRを使用することはお勧めしませんが、これらは、どのアルゴリズムが適切に機能するかを絞り込むための便利なツールです。