6

任意の機能を組み込む可能性のある、トレーニング例の大規模なセットに対して回帰モデルをトレーニングする必要があります。どのような学習アルゴリズムを検討する必要があり、その理由は何ですか?

問題の簡単な要約:

  • 約500万のトレーニング例
  • 年間200〜400万の割合でトレーニング例を追加する
  • トレーニング例には現在、それぞれ10個の機能が含まれています
  • 約400kの人口の多い機能(はるかに大きな合計機能スペースのうち)
  • 時間の経過とともに追加される追加機能
  • 新しい例を組み込むために、(少なくとも)モデルを毎日再トレーニングまたは適応させる
  • 最適化基準:最小二乗パーセント誤差
  • 出力:単一の実数値

同様のサイズの分類問題(SVM、平均化および投票されたパーセプトロンなどを使用)で対数線形モデルをトレーニングした経験があります。任意の機能を追加する機能は重要ですが、この場合、トレーニング時間も貴重です。

たとえば、これまでのSVMLightでの1つの実験では、このデータのサブセットに収束するのに数週間かかりました。マルチコアマシンまたは(場合によっては)クラスター間で並列化することもできますが、モデルを数分でトレーニングする必要があります。オンライントレーニングはさらに良いでしょう。

平均化パーセプトロンモデルを正常に(そして迅速に)トレーニングしました。ただし、私の知る限り、APは通常回帰には適用されません。APは、回帰モデルの収束保証を提供しますか?適用されるべきではない別の正式な理由はありますか?それとも、それは私の要件に合理的に一致していますか?

他にどのようなオプションを調査する必要がありますか?SVMはおそらく優れた精度を提供しますが、2次トレーニング時間は受け入れられません。線形時間SVMアルゴリズムにアクセスできる場合は、それでうまくいく可能性があります。

潜在的なプラス:

  • オンライントレーニング
  • 利用可能なオープンソース実装(理想的にはJava)。必要に応じて独自の実装をロールすることもできますが、可能であればそれは避けます。

ご入力いただきありがとうございます。

4

1 に答える 1

7

これは、大規模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を使用することはお勧めしませんが、これらは、どのアルゴリズムが適切に機能するかを絞り込むための便利なツールです。

于 2012-04-27T15:02:21.593 に答える