我试图运行以下内容并收到错误消息: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.
答案 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不会将这些行用于其结果?
你可能会遇到软件内存分配限制。