我正在尝试使用MATLAB从庞大的数据集(即无法存储在内存中)构建二进制分类决策树。本质上,我正在做的是:
- 收集所有数据
- 在数据上试用n个决策函数
- 选择最佳决策函数以分离数据中的类
- 将原始数据集拆分为2
- 拆分后递归
数据具有
k个属性和一个分类,因此将其存储为具有
大量行和
k + 1列的矩阵。决策函数是布尔型的,并作用于将每一行分配给左或右子树的属性。
现在,我正在考虑将数据分块存储在文件中,然后将其存储在内存中,并为每行分配一个ID,以便通过顺序读取所有文件来决定进行拆分,并通过ID号来标识将来的拆分。
有谁知道如何以更好的方式做到这一点?
编辑:行数m约为5e8,k约为500
回答:
在每次拆分时,您都将数据集分成越来越小的子集。从单个数据文件开始。将其作为流打开,一次只处理一行,以找出要拆分的属性。获得第一个决策功能后,将原始数据文件拆分为2个较小的数据文件,每个文件均包含拆分数据的一个分支。递归。数据文件应该越来越小,直到您可以将它们加载到内存中。这样,您就不必标记行并在大型数据文件中继续跳转。
更多&回答...