在巨大的数据集上学习决策树

时间:2009-07-17 18:25:31

标签: matlab classification decision-tree

我正在尝试使用MATLAB从巨大的(即无法存储在内存中)数据集中构建二进制分类决策树。基本上,我正在做的是:

  1. 收集所有数据
  2. 在数据上试用 n 决策函数
  3. 选择best decision function以分隔数据中的类
  4. 将原始数据集拆分为2
  5. 递归分裂
  6. 数据具有 k 属性和分类,因此它存储为具有巨大行数的矩阵, k + 1 列。决策函数是布尔值,并根据将每一行分配给左或右子树的属性进行操作。

    现在我正在考虑将数据存储在块中的文件中,这些块可以保存在内存中并为每行分配一个ID,因此决定拆分是通过顺序读取所有文件来完成的,并且将来的拆分由身份证号码。

    有谁知道如何以更好的方式做到这一点?

    编辑:行数m约为5e8,k约为500

1 个答案:

答案 0 :(得分:2)

在每次拆分时,您将数据集分成越来越小的子集。从单个数据文件开始。将其作为流打开,一次只处理一行,以确定要拆分的属性。获得第一个决策功能后,将原始数据文件拆分为2个较小的数据文件,每个文件都包含拆分数据的一个分支。递归。数据文件应该变得越来越小,直到您可以将它们加载到内存中。这样,您就不必标记行并继续在一个巨大的数据文件中跳转。