第十五章 规则学习

news2025/4/8 11:01:55

15.1 基本概念

机器学习中的规则通常是指语义明确、能描述数据分布所隐含的客观规律或邻域概念、可写成“若…,则…”形式的逻辑规则。规则学习是从训练数据中学习出一组能用于对未见示例进行判别的规则。
在这里插入图片描述
与神经网络、支持向量机这样的黑箱模型相比,规则学习具有更好的可解释性,能使用户更直观地对判别过程有所了解。另一方面,数理逻辑具有极强地表达能力,绝大多数人类知识都能通过数理逻辑进行简洁的刻画和表达。因此,规则学习能更自然地在学习过程中引入邻域知识。此外,逻辑规则地抽象描述能力在处理一些高度复杂地AI任务时具有显著地优势。

假定我们从西瓜数据集学得规则集R:
在这里插入图片描述
在这里插入图片描述
规则1的长度为2,它通过判断两个逻辑文字的赋值来对示例进行判别。符合该规则的样本称为被该规则覆盖
显然,规则集合中的每条规则都可看作一个子模型,规则集合是这些子模型的一个集成。当同一个示例被判别结果不同的多条规则覆盖时,称发生了冲突,解决冲突的办法称为冲突消解
常见的冲突消解策略有投票法、排序法、元规则法等。
投票法是将判别相同的规则数最多的结果作为最终结果。
排序法是在规则集合上定义一个顺序,在发生冲突时使用排序最前的规则。
相应的规则学习过程称为带序规则学习或优先级规则学习。
元规则法是根据邻域知识事先设定一些元规则,即关于规则的规则,例如发生冲突时使用长度最小的规则,然后根据元规则的指导来使用规则集。

此外,规则学习算法通常会设置一条默认规则,由它来处理规则集合未覆盖的样本;

从形式语言表达能力而言,规则可分为两类:“命题规则”和“一阶规则”。前者是由“原子命题”和逻辑连接词与或非蕴含构成的简单陈述句。
后者的基本成分是能描述事物的属性或关系的原子公式,例如表达父子关系的谓词 父亲(X,Y)。一阶规则能表达复杂的关系,因此也被称为关系型规则

15.2 序贯覆盖

规则学习的目的是产生一个能覆盖尽可能多的样例的规则集。最直接的做法是序贯覆盖,即逐条归纳:在训练集上每学到一条规则,就将该规则的覆盖的训练样例去除,然后以剩下的训练样例组成训练集重复上述过程。由于每次只处理一部分数据,因此也被称为分治策略。
一般的做法是从空规则开始,将正例类别作为规则头,再逐个遍历训练集中的每个属性及取值,尝试将其作为逻辑文字增加到规则体中,若能使当前规则体仅覆盖正例,则由此产生一条规则,然后去除已被覆盖的正例并基于剩余样本尝试生成下一条规则。 这种基于穷尽搜索的做法在属性和候选值较多时会由于组合爆炸而不可行。
现实任务中一般有两种策略来产生规则:
第一种是自顶向下:即从比较一般的规则开始,逐渐添加新文字以缩小规则覆盖范围,直到满足预定条件为止;亦称为“生成-测试”法,是规则逐渐特化的过程。
第二种是自底向上:即从比较特殊的规则开始,逐渐删除文字以扩大规则覆盖范围,直到满足条件为止;亦称“数据驱动法”,是规则逐渐泛化的过程。
第一种策略是覆盖范围从大往小搜索规则,第二种策略则相反;前者通常更容易产生泛化性能较好的规则,而后者则更适合于训练样本较少的情形,此外,前者对噪声的鲁棒性比后者要强得多。因此,在命题规则学习中通常使用第一种策略,而第二种策略在一阶规则学习这类假设空间非常复杂的任务上使用较多。

15.3 剪枝优化

规则生成本质上是一个贪心搜索过程,需有一定的机制来缓解过拟合的风险,最常见的做法是剪枝。与决策树相似,剪枝既可以预剪枝也可以后剪枝。剪枝还可以借助统计显著性检验来进行。例如CN2算法。
后剪枝最常用的策略是减错剪枝(REP),其基本做法是:将样例集划分为训练集和验证集,从训练集上学得规则集R后进行多轮剪枝,在每一轮穷举所有可能的剪枝操作,包括删除规则中某个文字、删除规则结尾文字、删除规则尾部多个文字、删除整条规则等,然后用验证集对剪枝产生的所有候选规则集进行评估,保留最好的那个规则集进行下一轮剪枝,如此继续,直到无法通过剪枝提高验证集上的性能为止。
REP剪枝通常很有效,但其复杂度是O(n^4),n是训练样例数目。IREP将复杂度降到O(mlog2m),其做法是:在生成每条规则前,先将当前样例集划分为训练集和验证集,在训练集上生成一条规则r,立即在验证集上对其进行REP剪枝,得到规则r’;将r’覆盖的样例去除,在更新后的样例集上重复上述过程。
显然,REP是针对规则集进行剪枝,而IREP仅对单条规则进行剪枝,因此后者比前者更高效。
若将剪枝机制与其他一些后处理手段结合起来对规则集进行优化,则往往能获得更好的效果。以著名的规则学习算法RIPPER为例,其泛化性能超过很多决策树算法,而且学习速度也比大多数决策树算法更快。
在这里插入图片描述

15.4 一阶规则学习

受限于命题逻辑表达能力,命题规则学习难以处理对象之间的关系,而关系信息在很多任务中非常重要。
一阶规则有强大的表达能力,例如它能简洁地表达递归概念,如
在这里插入图片描述
FOIL是著名地一阶规则学习算法,它遵循序贯覆盖框架且采用自顶向下地规则归纳策略。但由于逻辑变量的存在,FOIL在规则生成时需考虑不同的变量组合。
FOIL可大致看作命题规则学习与归纳逻辑程序设计之间的过渡,其自顶向下的规则生成过程不能支持函数和逻辑表达式嵌套,因此规则表达能力仍有不足;但它是把命题规则学习过程通过变量替换等操作直接转化为一阶规则学习,因此比一般归纳逻辑程序设计技术更高效。

15.5 归纳逻辑程序设计

归纳逻辑程序设计(ILP)在一阶规则学习中引入了函数和逻辑表达式嵌套。一方面,这使得机器学习系统具备了更为强大的表达能力;另一方面,ILP可看作用机器学习技术来解决基于背景知识的逻辑程序归纳,其学得的规则可被PROLOG等逻辑程序设计语言直接使用。

15.5.1 最小一般泛化

归纳逻辑程序设计采用自底向上的规则生成策略,直接将一个或多个正例所对应的具体事实作为初始规则,再对规则逐步进行泛化以增加其对样例的覆盖率。泛化操作可以是将规则中的常量替换为逻辑变量,也可以是删除规则体中的某个文字。
在这里插入图片描述
显然,这两条规则只对应了特殊的关系数据样例,难以具有泛化能力。因此,我们希望把这样的特殊规则转变为更一般的规则。为达到这个目的,最基础的技术是“最小一般泛化”(简称LGG)。

15.5.2 逆归结

在逻辑学中,演绎归纳是人类认识世界的两种基本方式。
大致来说,演绎是从一般性规律出发来探讨具体事务,而归纳则是从个别事物出发概括出一般性规律。一般数学定理证明是演绎实践的代表,而机器学习显然是属于归纳的范畴。
来看看归结、逆归结是怎么回事。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NewStarCTF公开赛week3密码学前两道题的wp

目录一、keyExchange1.原题2.考察知识点与解题思路Diffie-Hellman密钥交换3.解题脚本二、Prof. Shamirs Secret1.原题2.考察知识点与解题思路Shamir 门限方案3.解题脚本一、keyExchange 1.原题 题目给出的是题目给出的是加密过程和输出: from secret import flag…

【LeetCode每日一题:2011. 执行操作后的变量值~~~模拟】

题目描述 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言: X 和 X 使变量 X 的值 加 1 –X 和 X-- 使变量 X 的值 减 1 最初,X 的值是 0 给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后&…

Merge-On-Write 的处理流程

简单来讲,Merge-On-Write 的处理流程是: 对于每一条 Key,查找它在 Base 数据中的位置(rowsetid segmentid 行号) 如果 Key 存在,则将该行数据标记删除。标记删除的信息记录在 Delete Bitmap 中&#xff…

【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理

🌈欢迎来到C专栏~~多态 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&#x1…

Logoist - 适用于设计师以及初次使用者,快速制作精美 logo

Logoist - 适用于设计师以及初次使用者的快速制作精美 logo 工具 从简单的标识到设计开发。它只需要一点时间来创建令人印象深刻的图像和矢量图形与Logoist。 我们的一体化应用程序为您提供了您需要的一切,将您的创意付诸实践或寻找新的灵感!它适合专业设计师和插画…

阿里云将加速与伙伴合作 促进Web3.0生态发展

12 月 15 日,在Web3.0 Cloud Day Singapore 2022 活动上,阿里云新加坡、南亚和泰国总经理 Dr Derek Wang 表示,阿里云将加速和伙伴的合作以促进创新。“我们正在与我们的合作伙伴合作以实现创新。我们仍然处于 Web 3.0 的早期阶段。我们仍然需…

【蓝桥杯选拔赛真题53】Scratch破解保险柜 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解

目录 scratch破解保险柜 一、题目要求 编程实现 二、案例分析 1、角色分析

大数据处理之ClickHouse概述及架构参考(未完)

一、概述 中移某业务拨测系统基于业务数据拨测指标及日志的分析需要,随着Clickhouse在OLAP领域的快速崛起,以及一些特性考虑,比如: 数据量会很大,最好需要分布式; 支持实时写入,支持快速计算&a…

数据库管理-第四十九期 Exadata的存储节点管理(20221223)

数据库管理 2022-12-23第四十九期 Exadata的存储节点管理1 咋个查看数据是否被缓存到闪存卡了没2 EM13.5的Exadata监控3 存储降级总结第四十九期 Exadata的存储节点管理 本周二,抗原终于阴性了,星期三开始就回到现场开始办公。上周既然说了Exadata关于存…

[C++: 引用】

To shine,not be illuminated. 目录 1 引用概念 2 引用特性 3 常引用 4 使用场景 4.1 引用做参数 4.2 做返回值 5 传值、传引用效率比较 6 引用和指针的区别 7 总结 1 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为…

Java+Swing+mysql会员卡管理系统

JavaSwingmysql会员卡管理系统一、系统介绍二、功能展示1.主页页面2.会员信息查询3.会员信息删除三、系统实现1.members.java四、其它1.其他系统实现一、系统介绍 使用 Java 技术开发一个会员卡管理系统,具体实现功能如下: 1. 程序启动显示主界面&#…

Vue:从组件开始学习

文章目录Vue组件生命周期根据官网文档,我们可以快速使用vue3创建自己的应用代码:npm init vuelatest,然后根据自己的需要来选择对应的配置: 默认使用vite来配置项目的。 在main.ts入口文件中,我们可以看到&#xff0…

非零基础自学Golang 第17章 HTTP编程(上) 17.5 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第17章 HTTP编程(上)17.5 知识拓展17.5.1 curl工具详解第17章 HTTP编程(上) 17.5 知识拓展 17.5.1 curl工具详解 【1】curl 简介 curl是一个利用URL语法在命令行下工作的文件传输工具,于1997年首次发行。它支持文…

Java+MySQL基于ssm的互助救援车队管理系统

此项目能够更全面的为社会贡献爱心,更及时的帮助求助人,然后在后台完成整个过程最后在通过广播好人好事,在高考爱心送子、养老院奉献爱心等活动更能做到统一化,更有序让注册的私家车主有的放矢,供献爱心。现在社会的信…

MyBatis-Plus(实用篇)

文章目录一、基础组件&#xff08;接口和实现类&#xff09;1、BaseMapper\<T>2、IService\<T>3、链式查询与修改4、调用Service层操作数据二、常用注解1、TableName2、TableId3、TbaleField4、TableLogic三、条件构造器1、wapper介绍2、构造器常用方法3、组装条件…

编程艺术之变成原则

编程有一个原则&#xff0c;就是尽可能去避免重复的代码。 类的开闭原则&#xff0c;类做好后&#xff0c;就尽量不要再在类上面在修改代码&#xff0c; 耦合度&#xff1a;简单的一个例子&#xff0c;活字印刷术在之前是整版印刷&#xff0c;导致&#xff0c;如果有一个字要…

作一回白嫖怪:写一个脚本自动获取ST官网积分,用积分领取奖品

环境&#xff1a;Python、selenium、ubuntu22.04 网址&#xff1a;STMCU中文官网 chrome: 版本 108.0.5359.124&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; chromeDriver: CNPM Binaries Mirror 这两个文件我打包起来了&#xff0c;0积分方便大家…

【表格合并与底纹】vue-elementul表格简单实现合并单元格,与列和行给底纹颜色

前言 这是一个很常见的需求啊&#xff0c;因为很多公司都会涉及到写表格展示数据 那么在某些公司内就会出现为了让数据更直观的感受到 而让你给某些行和列用颜色标出来。使得看起来更方便 那么这里就汇总一下常用的横竖合并以及横竖颜色底纹如何实现 效果图 这是写的一个dem…

小米便签维护过程记录——可能出现问题解决方案

在对小米便签开源代码进行研究和维护及新功能开发的同时&#xff0c;会遇到很多问题&#xff0c;将以本文进行记录总结。 导入项目 若不导入直接Open会导致默认为Project&#xff0c;不为Android。 小米标签菜单栏不显示的问题 先来看NotesListActivity类&#xff0c;这个类创…

Zookeeper 4 Zookeeper JavaAPI 操作 4.5 Curator API 常用操作【修改节点】

Zookeeper 【黑马程序员Zookeeper视频教程&#xff0c;快速入门zookeeper技术】 文章目录Zookeeper4 Zookeeper JavaAPI 操作4.5 Curator API 常用操作4.5.1 修改节点4 Zookeeper JavaAPI 操作 4.5 Curator API 常用操作 4.5.1 修改节点 直接开干 修改之前app1 的数据是本机…