“关联规则挂机”

模仿模仿 成员职位:5因素二世
2019年5月编辑 帮助
你好,
我正在做一个从互联网上抓取新闻文章的文本分析项目。我已经成功地提取了内容,预处理(标记化,过滤,转换大小写等),并生成了二进制术语出现的示例集。我跟随Neil M的视频,并使用了从文件,数字到二项式和FP增长的过程文档。使用断点,所有这些阶段看起来都很好并且运行得很快。当我尝试创建关联规则时,机器运行并且似乎挂起,无论我启动java时分配的内存(我使用命令行,例如,分配如下:

java -Xmx12000m -jar rapidminer.jar现在,程序似乎被锁定了(仍然在13分钟内计算规则),一个CPU的工作状态是100%。我的数据集只有5个文档,其余的过程在8核Mac Pro上运行了3秒或更短的时间。我注意到,无论我分配了多少内存,内存使用都会增加并达到最大值(我尝试了各种下限和上限,并在一个Weka站点上读到,不应该同时设置-Xms和-Xmx)。

什么好主意吗?

威廉

答案

  • 黑线鳕黑线鳕 成员职位:849Maven
    你好威廉,

    可悲的是,代码看起来是,我们说,'加粗'....
    //通过将集分成头和体两部分来生成规则
    if (set.getItems().size() > 1) {
    PowerSet PowerSet = new PowerSet(set.getItems());
    这就意味着需要等待更长的频繁项集,因为一个N长度的频繁项集有2^N个子集。因此,一个50字的项目集只需要1,125,899,906,842,624个集合的空间。大胆的。

  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人
    你好,

    这很可悲,但却是事实。然而,即使我们不存储规则(在因为置信度太低而丢弃它们之前),逐个生成它们也会花费太长时间。所以这里的建议是:不要为长而频繁的项集创建规则。对于许多应用程序,频繁的项集和规则一样有趣。但是如果您需要这些规则,则应该通过增加最小支持来限制项目的数量(开始时总是非常高,特别是在项目的基数很高的情况下)。在FP-Growth中还有一个选项可以限制道具集的最大道具数量。

    希望能有所帮助,
    Ingo
  • 黑线鳕黑线鳕 成员职位:849Maven
    问候!

    我一直在用CUDA解决这个问题,并使用了“Banker’s sequence”,即“生成n个元素集合的所有子集的序列,其中每个子集中的元素数量是单调增加的”,这有一些明显的优势。精神错乱的细节?在这里……http://applied-math.org/subset.pdf
  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人
    你好再次,

    是的,那肯定好多了,谢谢你指出来。我想知道对于包含50个项目的项目集来说,这是否仍然需要太多的时间——至少对于非cuda实现来说,)

    欢呼,
    Ingo
  • 模仿模仿 成员职位:5因素二世
    你好,

    谢谢你的帮助。Ingo,你的评论特别有用——我回去检查了支持设置和集合中最大项目的设置,产生了更少的项目集,因此,关联规则起作用了。我真的很兴奋能克服第一个小障碍。

    威廉
登录注册置评。