最小限のメモリを使用してデータをトレーニングする最も効率的な方法は何ですか?


10

これは私のトレーニングデータです:200,000例x 10,000機能。したがって、私のトレーニングデータマトリックスは-200,000 x 10,000です。

各例の機能を生成するときに、すべてのデータセットを1つずつ(1つずつ)保存することで、メモリの問題なしにこれをフラットファイルに保存できました。

しかし、今、私がMilkSVM light、またはその他の機械学習アルゴリズムを使用すると、すべてが1つずつトレーニングするのではなく、トレーニングデータ全体をメモリにロードしようとします。ただし、RAMが8 GBしかないので、この方法で進めることはできません。

とにかく、アルゴリズムを1つのデータセットごとにトレーニングできることを知っていますか?つまり、トレーニング中にいつでも1つのデータセットをメモリにロードするだけです。


1
「すべてのデータセットを1つずつ保存する」とはどういう意味ですか?「データのすべての行」という意味ですか?1つずつ保存する複数のデータセットがある場合、それらを1つずつロードして、それぞれにアルゴリズムを適合させてみませんか?
Zach

1
「1つのデータセットごとの」とは1行ずつという意味ですか?つまり、1つのデータセット= 10000フィーチャですか?その場合は、オンラインアルゴリズムが探しているものである可能性があります。en.wikipedia.org / wiki / Online_algorithmおよびen.wikipedia.org/wiki/Online_machine_learningを参照してください。SVMやランダムフォレストなど、多くの機械学習アルゴリズムのオンラインバージョンが存在します。
Herra Huu

ありがとう..ザックとヘラ。質問を編集して、1つずつ明確に定義しました。そして、はい、私はオンライン学習について考えていましたが、オンラインアルゴリズムについてはまったく考えていませんでした。それを読んで試してみましょう。
madCode

回答:


4

私はこの種の学習の用語はアウトオブコア学習であると信じています。1つの提案は、他の多くの言語用のライブラリーと同様に、便利なRライブラリーを備えたvowpal wabbitです。


インストール中にboostで依存関係の問題が発生しています。なぜ私がこれを手に入れるのかについて何か考えがありますか?bit.ly/L939DO
madCode

@madCode私は実際にvowpal wabbitを使用したことがないので、インストールを手伝うことはできません。彼らのメーリングリストはすばらしいと聞いたので、設定の助けが見つかると思います。
ザック

ねえ、ザック。それはうまくいきました。私はそれをインストールしてもらい、予測さえしてくれました。おかげで:-)
madCode

1

私は心からザックの提案の2番目です。vowpal wabbitは優れたオプションであり、その速度に驚かれることでしょう。200k x 10kのデータセットは、vowpal wabbitの基準では大きいとは見なされません。

vowpal_wabbit(https://github.com/JohnLangford/vowpal_wabbitを介してソース形式で入手可能、古いバージョンはUbuntuユニバースの標準パッケージとして入手可能)は、非常に柔軟な入力を備えた高速オンライン線形+双線形学習器です。バイナリ機能と数値機能を混在させることができます。変数名は「そのまま」機能するため、機能に番号を付ける必要はありません。豊富なオプション、アルゴリズム、リダクション、損失関数、オールインワンの優れた柔軟性があります。メーリングリストに参加して(githubで検索)、質問することができます。コミュニティは非常に知識豊富で協力的です。


1

私はここで同様の質問に答えました。ポイントは、ほとんどの機械学習/データマイニングアルゴリズムがバッチ学習であり、すべてのデータをメモリにロードすることです。そのため、非常に大きなデータセットには、さまざまなツールが必要です。その質問のツールも参照してください。

オンライン学習は、アルゴリズムのメモリフットプリントを削減する方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.