首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALEPH中的WARMR算法(SWI)

ALEPH中的WARMR算法(SWI)
EN

Stack Overflow用户
提问于 2015-09-21 15:24:34
回答 1查看 409关注 0票数 3

我试图使用WARMR在我的数据中查找频繁的关系模式;为此,我在SWI中使用了ALEPH。然而,我正在努力弄清楚如何做到这一点,以及为什么我以前的尝试不起作用。

我想让一个玩具的例子工作,然后我继续我的全部数据。为此,我从aleph pack页面获取了玩具“火车”数据:http://www.swi-prolog.org/pack/list?p=aleph

Aleph手册声明了有关ar搜索的内容:

ar实现了WARMR系统所进行的关联规则搜索的简化形式(见L. Dehaspe,1998,PhD论文,Katholieke Universitaet Leuven)。在这里,Aleph只是简单地找到了所有的规则,这些规则至少涵盖了一个预先指定的部分积极的例子。此分数由参数pos_fraction指定。

因此,我插入了

代码语言:javascript
复制
:- set(search,ar).
:- set(pos_fraction,0.01). 

到后台文件(并删除了:- set(i,2).)并删除了.n文件中的负面示例。我还注释掉了所有的确定和modeh声明逻辑,即我们正在寻找频繁的模式,而不是规则(即在受监督的上下文中,头将是一个“输出”变量和正文中的子句-“输入”试图解释输出),即它是一项无监督的任务。

现在,最初的trains数据集正试图为“东行”列车构建规则。这是通过拥有谓词(如carshapehas_car(train, car)等)来实现的,与这些谓词有关的所有背景知识最初都位于.b文件中,而五个正示例(例如eastbound(east1).)位于.f文件中(+ 5个负面示例,例如eastbound(west1).,位于.n文件中)。将文件保持不变(除了上面描述的更改外)和运行induce.不会产生合理的结果(例如,它将返回诸如train(east1)这样的基本术语作为“规则”)。我尝试将一些背景知识转移到.f文件中,但这也没有产生任何合理的结果。

如何构建.f和.b文件?如果我们不是真的想解释任何正面的例子(这肯定会构成一个监督的问题),而是要在数据中找到频繁的模式(无监督的问题),那么应该如何进入正示例文件呢?我是不是遗漏了什么?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 07:50:32

首先,如果您可以使用原来的WARMR,我认为它是更好的。但我认为你需要成为一个免费使用的学者。你可以试着申请执照。https://dtai.cs.kuleuven.be/ACE/

为了获得关联规则,我将我想要的所有示例都放在f文件中。N文件可以包含示例,否则我认为是空的。

我唯一要改变的就是:

代码语言:javascript
复制
 :- set(search,ar).
 :- set(pos_fraction,0.01).  

在.b文件中。保留确定和模式声明。

set(i,2)将查询的长度限制为有两个额外的文本(我认为),因此您可能希望这个值更大。

?-read_all(train). induce.

然后,您将得到一个“好的子句”,我认为这是常见的查询。

[good clauses] eastbound(A). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), long(B). [pos cover = 2 neg cover = 0] [pos-neg] [2] eastbound(A) :- has_car(A,B), open_car(B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), shape(B,rectangle). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), wheels(B,2). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), load(B,rectangle,3). [pos cover = 1 neg cover = 0] [pos-neg] [1] eastbound(A) :- has_car(A,B), has_car(A,C). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), has_car(A,C). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), has_car(A,C). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), short(B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), closed(B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), shape(B,rectangle). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), wheels(B,2). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), load(B,triangle,1). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), has_car(A,C). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), has_car(A,C). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), long(B). [pos cover = 2 neg cover = 0] [pos-neg] [2] eastbound(A) :- has_car(A,B), open_car(B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), shape(B,rectangle). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), wheels(B,3). [pos cover = 3 neg cover = 0] [pos-neg] [3] eastbound(A) :- has_car(A,B), load(B,hexagon,1). [pos cover = 1 neg cover = 0] [pos-neg] [1] eastbound(A) :- has_car(A,B), has_car(A,C). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), short(B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), open_car(B). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), shape(B,rectangle). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), wheels(B,2). [pos cover = 5 neg cover = 0] [pos-neg] [5] eastbound(A) :- has_car(A,B), load(B,circle,1). [pos cover = 3 neg cover = 0] [pos-neg] [3] eastbound(A) :- has_car(A,B), open_car(B), shape(B,rectangle). [pos cover = 4 neg cover = 0] [pos-neg] [4]

规则的形式为东行(甲):-等等。但它只是在计算东行的例子。所以把这个想象成example_covered(A):-等等

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32698960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档