Rapidminer:内存问题将名义属性转换为二项式属性

时间:2014-02-13 14:17:38

标签: oracle memory transformation gsp rapidminer

我想使用广义顺序模式算法分析大型数据集(2,000,000条记录,20,000个客户ID,6个名义属性)。

这要求除时间和客户ID属性之外的所有属性都是二进制的。我有6个名义属性,我想分析模式,我需要使用“Nominal to Binominal”函数将它们转换为二项式属性。这导致我的工作站出现内存问题(16GB RAM,其中我为运行rapidminer的Java实例分配了12个)。

理想情况下,我想以某种方式设置我的项目,它暂时写入光盘或使用我的oracle数据库中的临时表,我的模型也可以直接从中读取数据。为了使用“写入数据库”或“更新数据库”功能,我需要已经在我的数据库中使用布尔列的现有表(如果我没有记错的话)。

我尝试将二进制转换成csv文件的结果逐步写入我的本地磁盘。我开始使用具有最小不同值的名义属性,从而生成包含我的数据集ID和现在7个二项式属性的csv文件。看到文件大小已经超过200MB,我感到非常惊讶。这是由快速编写器为二进制值“true”/“false”写入字符串的原因。只写0/1会不会更节省内存?

有没有办法直接使用oracle数据库或使用0/1值而不是“true”/“false”?我的下一篇专栏将有3000个不同的值进行转换,这将在噩梦中结束......

我非常感谢有关如何更有效地使用内存或直接在数据库中工作的建议。如果有人知道如何轻松地将Oracle中的varchar2-column转换为每个不同值的布尔列,这也是值得赞赏的!

非常感谢, 霍尔格

编辑

我的目标是从这样的结构中获得:

column_a; column_b; customer_ID; timestamp

value_aa; value_ba; 1; 1

value_ab; value_ba; 1; 2

value_ab; value_bb; 1; 3

到这个结构:

customer_ID; timestamp; column_a_value_aa; column_a_value_ab; column_b_value_ba; column_b_value_bb

1; 1; 1; 0; 1; 0

1; 2; 0; 1; 1; 0

1; 3; 0; 1; 0; 1

2 个答案:

答案 0 :(得分:0)

这个答案太长了,无法发表评论。

如果您感兴趣的六个变量有数千个级别,那么使用该数据不太可能获得有用的结果。典型的方法是对进入的数据进行分类,这导致更少的“二项式”变量。例如,您使用“日记产品”代替“1加仑全脂牛奶”。这可以产生更多可操作的结果。请记住,Oracle只允许表中的1,000列,因此数据库还有其他限制因素。

如果您正在处理大量单个项目,那么我会建议其他方法,特别是基于关联规则的方法。这不会限制变量的数量。

就个人而言,我发现我可以在SQL中完成大部分工作,这就是为什么我写了一本关于这个主题的书(“使用SQL和Excel进行数据分析”)。

答案 1 :(得分:0)

您可以使用运算符Nominal to Numeric将true和false值转换为1或0.将coding type参数设置为unique integers