MATLAB を使用して、巨大な (つまり、メモリに格納できない) データセットからバイナリ分類決定木を構築しようとしています。基本的に、私がやっていることは次のとおりです。
- すべてのデータを収集する
- データに対して n 個の決定関数を試す
- データ内のクラスを分離するための最良の決定関数を選択します
- 元のデータセットを 2 つに分割する
- 分割の再帰
データにはk 個の属性と分類があるため、膨大な数の行とk+1列の行列として格納されます。決定関数はブール値であり、各行を左または右のサブツリーに割り当てる属性に作用します。
現在、メモリに保持できるチャンクでファイルにデータを格納し、各行に ID を割り当てることを検討しています。これにより、分割の決定はすべてのファイルを順番に読み取ることによって行われ、将来の分割は ID 番号によって識別されます。
これをより良い方法で行う方法を知っている人はいますか?
編集: 行数 m は約 5e8 で、k は約 500 です