【问题标题】:Rapidminer: Memory issues transforming nominal to binominal attributesRapidminer:将名义属性转换为二项属性的内存问题
【发布时间】:2014-03-12 11:30:28
【问题描述】:

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

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

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

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

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

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

非常感谢, 霍尔格

编辑:

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

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

【问题讨论】:

  • 我的意思是二进制或布尔值。不知道为什么,但在 rapidminer 中,这些被称为二项式(不是二项式)。

标签: oracle memory transformation gsp rapidminer


【解决方案1】:

此答案太长,无法评论。

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

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

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

【讨论】:

  • 实际上我的问题是无法对它们进行分类。我不知道 1000 列的限制,谢谢你告诉我。也许我可以预先过滤我的数据,只查看子集及其顺序。但最好不要。我还是不明白为什么 rapidminer 不简单地使用 0/1...
【解决方案2】:

您可以使用运算符Nominal to Numeric将真假值转换为1或0。将coding type参数设置为unique integers

【讨论】:

  • 谢谢,这将有助于节省的大小。但是,我能够限制分析中的项目数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多