“使用大文件进行市场购物篮分析时Pivot操作时的内存问题”

旧的用户旧的用户 成员职位:0新手
2019年5月编辑 帮助
嘿!

我花了一整天的时间试图解决我的问题,但无济于事。所以我想我需要一些帮助。也许有人有主意。

我想对我的数据做一个市场购物篮分析。它基本上是以下格式的。csv文件:

某地,2005年1月1日
某个地方,某个地方,某个地方
某地,某地,2005年1月2日

某地,某地,2005年1月1日


第一列是地点(标称),第二列是日期(日期),第三列是姓名(标称)。我需要地点和日期作为主键,因为这应该是我的“篮子”。我对每个地方每天的“项目集”很感兴趣。

我将.csv文件加载到存储库中,因为这比每次运行时再次加载.csv要快得多。日期类型如上所述,角色都是常规的。给出了一些属性名称。

csv文件中大约有3,300万行。这大概是200万个篮子。一个较小但类似的数据集确实有大约190万行和大约700K个篮子。

我使用以下流程:

1)检索(以前从Repo导入的数据)
(样本,用于使用较小的数据部分进行测试)
2)生成连接(第一个属性和第二个属性作为'主键')
3)重命名(属性2)为Basket
4)选择属性(篮子和名称)
5)设置角色(篮子到ID,虽然我不确定是否有必要)
6)生成属性(Amount=1,这是以后“pivot”所需要的)
7) Pivot(组属性:Basket,索引属性:name)
8)替换缺失的值(旋转为每个名称添加属性)。我将这些值替换为0,因为给定的名称不在当前集合中。)
9)数值到二项式(FP-Growth要求)
10) FP-Growth

现在说说我的问题:
即使禁用或删除FP-Growth,我也会在处理枢轴步骤时收到一条错误消息,表示该进程需要太多内存并将退出。只要我将样本大小至少设置为100,000,就会发生这种情况。10,000运行良好,但最后一步“数字到二项式”已经需要很长时间才能完成。

我用的是一台带有4GB内存的Windows 7 x64台式电脑。在处理期间,RapidMiner的内存使用量上升到2,5- 3gb,因此我无法再分配它。

1)“数值到二项式”的预期行为比任何其他运算符都要长得多吗?有没有更有效的方法?对于100,000个样本量,整个过程花费了16分钟。大概有14个是这一步。

2)创建透视表是一个巨大的内存燃烧器,我怀疑。由于有非常多的篮子,这导致了一个具有许多属性的巨大矩阵。有别的方法吗?或者另一种更少内存消耗的数据格式FP-Growth会接受?

任何帮助或建议将不胜感激。谢谢!


答案

  • 土地土地 RapidMiner认证分析师,RapidMiner认证专家,成员职位:2531年独角兽
    你好,
    您是否实际上尝试使用“create_view”为名义到二名的操作符?如果您有很多标称值,将节省大量内存。

    得到的数据集将非常稀疏。因此,可以尝试分批透视数据表,并将所有这些批次附加到一个稀疏示例集中。

    问候,
    塞巴斯蒂安。
  • 旧的用户旧的用户 成员职位:0新手
    嗨,塞巴斯蒂安,

    谢谢你的回复!
    您是否实际上尝试使用“create_view”为名义到二名的操作符?如果您有很多标称值,将节省大量内存。
    我试过,但如果我记得正确,它并没有对运行时间或数据量产生影响,它抛出了内存错误。为了百分百确定这件事,我今晚得再检查一遍。
    得到的数据集将非常稀疏。因此,可以尝试分批透视数据表,并将所有这些批次附加到一个稀疏示例集中。
    你能详细说明一下吗?RapidMiner中有操作符可以指导我吗?或者我是否需要“手工”拆分和组合数据?

    在您的案例中,重组后的数据应该是什么样子?许多更小的表与更少的属性比原来?我不确定我是否明白你的计划是什么。:)

    谢谢!
登录注册置评。