【问题标题】:Learning decision trees on huge datasets在庞大的数据集上学习决策树
【发布时间】:2023-04-04 01:03:01
【问题描述】:

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

  1. 收集所有数据
  2. 在数据上尝试 n 个决策函数
  3. 挑出best decision function来分隔数据中的类
  4. 将原始数据集一分为二
  5. 拆分递归

数据有k个属性和一个分类,所以存储为一个巨大行数的矩阵,k+1 列。决策函数是布尔值,作用于将每一行分配给左子树或右子树的属性。

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

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

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

【问题讨论】:

  • 澄清一下:k 并不大,只有行数才大?
  • 是的,行数,m >> k

标签: matlab classification decision-tree


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 2013-04-21
    • 2011-06-23
    • 2011-01-29
    • 2015-12-13
    • 2013-01-07
    • 2016-05-24
    • 2017-05-03
    相关资源
    最近更新 更多