2009-07-17 4 views
3

私は、MATLABを使用して巨大な(つまり、メモリに格納できない)データセットからバイナリ分類決定ツリーを構築しようとしています。基本的に、私がやっていることは次のとおりです。 巨大なデータセットのデシジョンツリーを学習する

  1. データにn個意思決定機能を試してみてください、すべてのデータを収集し
  2. 分割データ内のクラスを分離するためにbest decision functionを選びます分割

に2

  • 再帰にオリジナルデータセットのデータを有していますk属性と分類のため、巨大な行数とk + 1列の行列として格納されます。決定関数はブール値であり、各行を左または右のサブツリーに割り当てる属性に対して作用する。

    今私は、ファイルにデータを格納し、メモリに保持してIDを各行に割り当てることを検討しています。分割する決定は、すべてのファイルを順番に読み取ることによって行われ、将来の分割はID番号。

    もっと良い方法でこれを行う方法を知っている人はいますか?

    編集:行数mは、5E8及びkの周りで約500

  • +0

    ちょうど明確にする:kは巨大ではない、行の数だけですか? – Reunanen

    +0

    はい、行数、m >> k – Jacob

    答えて

    2

    各分割であり、あなたがより小さなサブセットにデータセットを破壊しています。単一のデータファイルから始めます。それをストリームとして開き、一度に1行ずつ処理して、分割する属性を特定します。最初の決定機能があれば、元のデータファイルを分割データの1つのブランチを保持する2つの小さなデータファイルに分割します。再帰。データファイルをメモリにロードするまで、データファイルは小さくなります。そうすれば、行にタグを付ける必要がなく、巨大なデータファイルに飛びぬけていくことができます。

    +0

    +1 - ありがとう、これはかなりいいですね! – Jacob

    関連する問題