“使用大文件进行市场购物篮分析时Pivot操作时的内存问题”
嘿!
我花了一整天的时间试图解决我的问题,但无济于事。所以我想我需要一些帮助。也许有人有主意。
我想对我的数据做一个市场购物篮分析。它基本上是以下格式的。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会接受?
任何帮助或建议将不胜感激。谢谢!
我花了一整天的时间试图解决我的问题,但无济于事。所以我想我需要一些帮助。也许有人有主意。
我想对我的数据做一个市场购物篮分析。它基本上是以下格式的。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会接受?
任何帮助或建议将不胜感激。谢谢!
0
答案
您是否实际上尝试使用“create_view”为名义到二名的操作符?如果您有很多标称值,将节省大量内存。
得到的数据集将非常稀疏。因此,可以尝试分批透视数据表,并将所有这些批次附加到一个稀疏示例集中。
问候,
塞巴斯蒂安。
谢谢你的回复! 我试过,但如果我记得正确,它并没有对运行时间或数据量产生影响,它抛出了内存错误。为了百分百确定这件事,我今晚得再检查一遍。 你能详细说明一下吗?RapidMiner中有操作符可以指导我吗?或者我是否需要“手工”拆分和组合数据?
在您的案例中,重组后的数据应该是什么样子?许多更小的表与更少的属性比原来?我不确定我是否明白你的计划是什么。
谢谢!