《FOIL算法的可视化演示和领域定制.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  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文档。上传文档
查看更多
《FOIL算法的可视化演示和领域定制

FOIL算法的可视化演示和领域定制 FOIL算法综述 FOIL 由 Quinlan 于1989年开发,采用自上而下的算法。在一个既有正又有反的事实的训练集中,先找出一个只覆盖正例而不涉及反例的逻辑子句 (clause) ,然后把这个子句覆盖的事实从训练集中删除。如此直到训练集中没有正例为止。FOIL是较早的序列覆盖和learn-one-rule 算法在一阶表示上的自然扩展。在 FOIL 与序列覆盖和learn-one-rule 算法之间有两个最实质的不同,它来源于此算法对一阶规则处理的需求。 形式化地讲,由FOIL 学习的假设为一阶规则集,其中的规则类似于Horn 子句,但有两个不同:首先由FOIL 学习的规则比一般的Horn子句更受限,因为文字不允许包含函数符号(这减小了假设空间搜索的复杂度)。其次,FOIL规则比Horn 子句更有表征力,因为规则体中的文字也可为负文字。FOIL 已被应用于多种问题领域。例如,它已用于学习快速排序算法Quicksort 的递归定义,以及学习从合法棋盘状态中区分出非法状态。下面我们先介绍主要的一些相关知识和算法。 1.1 基本的决策树学习算法 大多数已开发的决策树学习算法是一种核心算法的变体。该算法采用自顶向下的贪婪搜索遍历可能的决策树空间。这种方法是ID3 算法(Quinlan 1986)和后继的C4.5算法(Quinlan 1993)的基础。下面将给出决策树学习的基本算法,大致相当于ID3 算法。 基本的 ID3 算法通过自顶向下构造决策树来进行学习。构造过程是从“哪一个属性将在树的根结点被测试?”这个问题开始的。为了回答这个问题,使用统计测试来确定每一个实例属性单独分类训练样例的能力。分类能力最好的属性被选作树的根结点的测试。然后为根结点属性的每个可能值产生一个分支,并把训练样例排列到适当的分支(也就是,样例的该属性值对应的分支)之下。然后重复整个过程,用每个分支结点关联的训练样例来选取在该点被测试的最佳属性。这形成了对合格决策树的贪婪搜索(greedy search),也就是算法从不回溯重新考虑以前的选择。下表描述了该算法的一个简化版本——专门用来学习布尔值函数(即概念学习)。 表 1-1 专用于学习布尔函数的ID3 算法概要 ID3 是一种自顶向下增长树的贪婪算法,在每个结点选取能最好地分类样例的属性。继续这个过程直到这棵树能完美分类训练样例,或所有的属性都使用过了。 ID3(Examples,Target_attribute,Attributes) Examples即训练样例集。Target_attribute是这棵树要预测的目标属性。Attributes是除目标属性外供学习到的决策树测试的属性列表。返回能正确分类给定Examples的决策树。 创建树的Root结点 如果Examples都为正,那么返回label =+ 的单结点树Root 如果Examples都为反,那么返回label =- 的单结点树Root 如果Attributes为空,那么返回单结点树Root,label=Examples中最普遍的Target_attribute值 否则 A←Attributes中分类Examples能力最好*的属性 Root的决策属性←A 对于A的每个可能值vi 在Root下加一个新的分支对应测试A= vi 令为Examples中满足A属性值为vi的子集 如果为空 在这个新分支下加一个叶子结点,结点的label=Examples中最普遍的Target_attribute值 否则在这个新分支下加一个子树ID3(, Target_attribute, Attributes-{A}) 结束 返回Root *根据公式的定义,具有最高信息增益(information gain)的属性是最好的属性。 1.2 序列覆盖算法 序列覆盖算法它的学习规则集的策略为:学习一个规则,移去它覆盖的数据,再重复这一过程。这样的算法被称为序列覆盖(sequential covering)算法。想象我们已有了一个子程序learn-one-rule,它的输入为一组正例和反例,然后输出单个规则,它能够覆盖许多正例,并且覆盖很少的反例。我们要求这一输出的规则有较高的精确度,但不必有较高的覆盖度。较高的精确度说明它所做出的预测应为正确的。可接受较低的覆盖度,表示它不必对每个训练样例都作出预测。 有了这样一个学习单个规则的 learn-one-rule 子程序,要学习规则集,一个明显的方法是在所有可用训练样例上执行learn-one-rule,再移去由其学到的规则覆盖的正例,再在剩余的训练样例上执行它以学习第二个规则。该过程可重复若干次,直到最后学习到析取规则集,它们共同覆盖正例,覆盖程度达到所希望的比例。算法被

文档评论(0)

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

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

1亿VIP精品文档

相关文档