在SAS中使用proc assoc时内存不足

时间:2014-11-05 17:25:02

标签: memory sas

我试图运行以下内容并收到错误消息:ERROR:由于内存不足,SAS系统停止处理此步骤。

数据集有大约1170(行)* 90(列)记录。我的替代方案是什么?

错误信息。如下:

332  proc assoc data=want1 dmdbcat=dbcat pctsup=0.5 out=frequentItems;
333  id tid;
334  target item_new;
335  run;


----- Potential 1 item sets = 188 -----
Counting items, records read:    19082
Number of customers:               203
Support level for item sets:         1
Maximum count for a set:           136
Sets meeting support level:        188
Megs of memory used:              0.51

----- Potential 2 item sets = 17578 -----
Counting items, records read:    19082
Maximum count for a set:           119
Sets meeting support level:      17484
Megs of memory used:              1.54

----- Potential 3 item sets = 1072352 -----
Counting items, records read:    19082
Maximum count for a set:           111
Sets meeting support level:    1072016
Megs of memory used:             70.14
Error: Out of memory.  Memory used=2111.5 meg.

Item Set 4 is null.
ERROR: The SAS System stopped processing this step because of insufficient memory.
WARNING: The data set WORK.FREQUENTITEMS may be incomplete.  When this step was stopped there were
         1089689 observations and 8 variables.

2 个答案:

答案 0 :(得分:1)

从文档(http://support.sas.com/documentation/onlinedoc/miner/em43/assoc.pdf):

  

警告:项目集的理论潜在数量可能会非常增长   很快。例如,有50个不同的项目,你有1225个潜力   2件套和19,600件3件套。拥有5,000件商品,您有超过12件   百万集的两个项目,相应大量的   3项集。

     

处理极大数量的集可能会导致您的系统崩溃   耗尽磁盘和/或内存资源。但是,通过使用更高   支持级别,您可以将项目集减少到更易于管理   号。

所以 - 提供support=选项以确保它足够高,例如:

proc assoc data=want1 dmdbcat=dbcat pctsup=0.5 out=frequentItems support=20;
  id tid;
  target item_new;
run;

答案 1 :(得分:0)

有没有办法构建数据挖掘任务,以便它需要更少的内存用于存储或操作?换句话说,你需要所有90列还是可以消除一些?数据集中是否有一些明确的划分,以便PROC ASSOC不会将这些行用于其结果?

你可能会遇到软件内存分配限制。