我的需求可能接近于人们对“专家系统”的期望。寻找最简单的解决方案,它可以给我实时或接近实时的推理,并具有一些离线(非实时)学习能力。
更详细地说,我的问题是
观看正在实时更新的日志,并将每个条目分类为红色、绿色和蓝色。红色、绿色、蓝色的分类是基于被编码为产生式规则的逻辑(就像我今天想象的那样)。
最具挑战性的是--
1)基于后续的日志条目,标记为蓝色的日志条目最终将被标记为红色/绿色,我们希望获得更详细的信息,因此需要记住这一点。确切的等待时间,事先不知道,但有一个最大限制。当然,在任何给定的时间点,都可能有数十万个标记为蓝色的条目。
2)确定红色和绿色的规则并不完美,因此有时标签会出现错误。因此,偶尔的手动审计会发现这些错误。我的主要挑战是看看我是否可以用最少的编程工作来自动化某些部分的规则更新。
我(继续研究)发现,基于RETE算法的规则引擎可能会服务于我的分类和标记,包括重新标记。如果这行得通,我仍然需要弄清楚如何将“从错误中学习”这一部分自动化?可以用统计学的方法-- s.a.贝叶斯分类?此外,对于初始分类s.t,是否可以将贝叶斯分类完全作为规则引擎。我已经对系统进行了充分的手动训练?贝叶斯方法似乎通过“信任统计”方法来“简化”维护一组正确规则的任务,特别是在有这些定期的手动审计的情况下。
PS>我的主应用程序是用C++编写的(如果这很重要的话)。
发布于 2011-05-24 14:59:01
这听起来像Complex Event Processing (CEP),其中您有规则,并且能够使用时间计算,如事件X在事件y之后的2分钟内。
在Java语言领域,Drools Fusion (或Drools专家)可以很好地处理这一点(尽管我有偏见)。在C++的土地上。也许您可以设置一个drools-camel-server,并通过XML与它通信。
https://stackoverflow.com/questions/6099869
复制相似问题