第10章学习规则集合-Read.docVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章学习规则集合-Read.doc

 学习规则集合 对学习到的假设,最具有表征力的和最能为人类所理解的表示方法之一为if-then规则的集合。本章探索了若干能学习这样的规则集合的算法。其中最重要的一种是学习包含变量的规则集合,或称为一阶Horn子句集合。由于一阶Horn子句集合可被解释为逻辑编程语言Prolog中的程序,学习的过程经常被称为归纳逻辑编程(ILP)。本章考察了多种学习规则集合的途径,其中一种途径基于机器定理证明器中演绎操作的逆转。 介绍 在许多情况下,有必要学习一个目标函数,它表示为共同定义该函数的若干if-then规则的集合。如第3章所示,学习规则集合的一种办法是首先学习到决策树,然后将此树转换为一等效的规则集合。另一种方法是在第9章介绍的遗传算法,它用位串编码每个规则集合,然后用遗传搜索算子来探索整个假设空间。本章我们讨论一族不同的算法,它直接学习规则集合,这族算法与前面的算法相比有两点关键的不同。首先,它们可学习包含变量的一阶规则集合,这一点很重要,因为一阶子句的表示能力比命题规则要强得多。第二,这里讨论的算法使用序列覆盖算法,一次学习一个规则,以递增地方式形成最终的规则集合。 作为一阶规则集合的例子,考虑以下两个规则,它们共同描述了目标概念Ancestor。这里我们使用谓词Parent(x,y)来表示y是x的父亲或母亲,而谓词Ancestor(x,y)表示y是x的任意代的祖先。 IF Parent(x,y) THEN Ancestor(x,y) IF Parent(x,z)∧Ancestor(z,y) THEN Ancestor(x,y) 注意以上两个规则很紧凑地描述了一个递归函数,它很难用决策树或其他的命题的方法来表示。为说明一阶规则的强大的表示能力,可以考虑通用的编程语言Prolog。在Prolog中,程序是一阶规则的集合,如上所示的那样(这种形式的规则也被称为Horn子句)。实际上,如果稍稍修改上面两个规则的语法,就可以得到一个合法的Prolog程序,它用来计算Ancestor关系。因此,一个可以学习这种规则集合的通用算法,可被看作是从样例中自动推导出Prolog程序的算法。本章介绍了在给定适当的训练例集合时,能够学习这种规则的学习算法。 实践中基于一阶表示的学习系统已成功地应用于各种问题,如在质谱仪中学习哪一个化学药品能粘合碎片 (Buchanan 1976; Lindsay 1980),学习哪一个化学亚结构会产生诱导有机体突变的放射性物质(一个关于致癌物质的属性)(Srinivasan et al. 1994),以及学习有限单元网以分析物理结构中的应力(Dolsak Muggleton 1992)。在每个应用中,假设的表示必须包含关系断言,它可由一阶表示来简单地表达,却很难用命题表示来描述。 在本章中,我们先介绍能够学习命题规则集的算法,即不含变量的规则。在这种框架中,搜寻假设空间以学习到析取规则集合的算法比较易于理解。然后,我们考虑了将这些算法扩展到一阶规则。接下来讨论了归纳逻辑的两种通用途径,以及归纳和演绎推理的基本关系。 序列覆盖算法 这里考虑的一族算法,其学习规则集的策略为:学习一个规则,移去它覆盖的数据,再重复这一过程。这样的算法被称为序列覆盖(sequential covering)算法。想象我们已有了一个子程序learn-one-rule,它的输入为一组正例和反例,然后输出单个规则,它能够覆盖许多正例,并且覆盖很少的反例。我们要求这一输出的规则有较高的精确度,但不必有较高的覆盖度。较高的精确度说明它所做出的预测应为正确的。可接受较低的覆盖度,表示它不必对每个训练样例都作出预测。 有了这样一个学习单个规则的learn-one-rule子程序,要学习规则集,一个明显的方法是在所有可用训练样例上执行learn-one-rule,再移去由其学到的规则覆盖的正例,再在剩余的训练样例上执行它以学习第二个规则。该过程可重复若干次,直到最后学习到析取规则集,它们共同覆盖正例,覆盖程度达到所希望的比例。算法被称为序列覆盖算法是因为它按次序学习到一组规则,它们共同覆盖了全部正例。最终的规则集可被排序,这样分类新实例时可先应用精度最高的规则。序列覆盖算法的一个原型在表10-1中陈述。 序列覆盖算法是广泛使用的学习析取规则集算法的其中之一。它将学习析取规则集的问题化简为一系列更简单的问题,每个子问题只需学到单个合取规则。由于它执行的是一种贪婪搜索,形成序列化的规则且没有回溯,所以它不能保证找到能覆盖样例的最小的或最佳的规则。 如何设计learn-one-rule程序以达到序列覆盖算法的要求?我们需要一个算法能够形成有较高精度的规则,但不必覆盖所有的正例。在本节中展示了各种算法,并描述了它们在学术研究上已探索的主要差别。本节

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档