machine-learning - 华纳(AVE 套件): eliminate "connected" terms from frequent patterns

标签 machine-learning prolog data-mining swi-prolog logic-programming

我正在 ACE 数据挖掘套件中使用 WARMR 频繁模式算法。这是一个说明我的问题的玩具示例。

假设您有 20 个示例 (example(ex1)),...,example(ex20))),只有一个谓词,将其称为 quality,因此 quality(E, X) 表示 E 具有质量 XX 可以采用 6 个值:abcd >、ef 相关:cbba(因此c也是a),fe并且ed (因此 f 也是 d)。思考图表:

a - b - c
d - e - f

当 WARMR 挖掘频繁模式时,一旦包含分支/图中的一种质量,就不允许添加来自同一分支的其他质量。例如在第 3 级:

 example(A),quality(A,a),quality(A,d)

是一个有效的模式,但是:

 example(A),quality(A,a),quality(A,c)

 example(A),quality(A,a),quality(A,b)

不是。

我已将这些背景知识包含在 .bk 文件中:

bond(b,a).
bond(c,b).
bond(f,e).
bond(e,d).

no_bond(a,d).
no_bond(a,e).
no_bond(a,f).

bond(X,Y) :- bond(X,Z),bond(Z,Y).
bond(X,Y) :- bond(Y,X).

no_bond(X,Y) :- no_bond(Y,X).
no_bond(X,Y) :- no_bond(X,Z),bond(Z,Y).

我尝试通过 .s 文件中的以下内容强加上述条件:

rmode(quality(+E, #).
constraint(quality(E, Q), not_occurs(bond(Q,_))).

rmode(quality(+E, #).
constraint(quality(E, Q), user(X, no_bond(Q,_))).   

constraint(quality(E, Q), user(X, no_bond(Q,X))).

这些都不起作用。任何帮助将不胜感激。

最佳答案

所以向我建议了以下答案:

首先将以下谓词添加到背景知识中:

branch1(E,X) :- quality(E,X), member(X, [a,b,c]).
branch2(E,X) :- quality(E,X), member(X, [d,e,f]).

然后将它们包含在设置文件中:

rmode(1:branch1(+E,#)).
rmode(1:branch2(+E,#)).

这解决了我所说的问题。然而,我的实际问题中的数据形成有向树,因此这种“静态”分支方法不适用。

关于machine-learning - 华纳(AVE 套件): eliminate "connected" terms from frequent patterns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34416778/

相关文章:

machine-learning - keras 模型的准确性没有提高

algorithm - 如何使用机器学习算法识别 URL 中的新模式(文本挖掘)

machine-learning - 训练集的平均误差等于测试集的平均误差吗?

math - 将罗马数字翻译成阿拉伯数字

prolog - 在 Prolog 中创建二叉树

matlab - 在 K-Means 算法中使用绝对 PIL 逊相关作为距离 (MATLAB)

python - 实现用于二阶矩流近似的 Alon-Matias-Szegedy 算法

machine-learning - 如何使用有监督的机器学习方法来处理不同的输入维度?

performance - 这个质数相关谓词的瓶颈是什么?

data-mining - 如何使用 OR 工具的 CP-SAT 求解器构建我自己的全局约束?