【机器学习西瓜书学习笔记——规则学习】

机器学习西瓜书学习笔记【第十五章】

第十五章 规则学习

15.1 基本概念

规则:语义明确、能描述数据分布所隐含的客观规律或领域概念。

规则学习:从训练数据中学习出一组能用于对未见示例进行判别的规则。

覆盖:符合某规则的样本。

冲突:当同一个示例被判别结果不同的多条规则覆盖时,发生冲突。

15.2 序贯覆盖

规则学习的目标是产生一个能覆盖尽可能多的样例的规则集。序贯覆盖是规则学习最直接的方法。

逐条归纳 :在训练集上每学到一条规则,就将该规则覆盖的训练样例去除,然后以剩下的训练样例组成训练集重复上述过程(由于每次只处理一部分数据,也称"分治策略")

最简单的做法

从空规则 "⊕←"开始,将正例类别作为规则头,再逐个遍历训练集中的每个属性及取值,尝试将其作为逻辑文字增加到规则体中,若能使当前规则体仅覆盖正例,则由此产生一条规则,然后去除己被覆盖的正例并基于剩余样本尝试生成下一条规则

两种产生规则的策略

  • ①自顶而下top-down(生成-测试法)

    • 从比较一般的规则开始,逐渐添加新文字以缩小规则覆盖范围,直到满足预定条件为止,是规则逐渐"特化"的过程,更容易产生泛化性能较好的规则。
  • ②自底向上 b o t t o m − u p bottom-up bottom−up(数据驱动法)

    • 从比较特殊的规则开始,逐渐删除文字以扩大规则覆盖范围,直到满足条件为止,是规则逐渐"泛化"的过程,更适合于训练样本较少的情形

命题规则学习 中通常使用第一种策略一阶规则学习 中较多使用第二种策略

15.3 剪枝优化

规则生成本质上是一个贪心搜索过程,需要一定的机制来缓解过拟合的风险,最常见的做法是剪枝

剪枝可发生在规则生长过程中,即预剪枝;发生在规则产生后,即后剪枝。

通常是基于某种性能度量指标来评估增/删逻辑文字前后的规则性能,或增/删规则前后的规则集性能,从而判断是否要进行剪枝。

预剪枝

借助统计显著性检验------ C N 2 CN2 CN2算法。

C N 2 CN2 CN2算法:在预剪枝时,假设用规则集进行预测必须显著优于直接基于训练样例集后验概率分布进行预测。CN2使用了似然率统计量( L R S LRS LRS).

信息量指标,衡量了规则(集)覆盖样例的分布与训练集经验分布的差别:

  • LRS越大,说明采用规则(集)进行预测与直接使用训练集正、反例比率进行猜测的差别越大;
  • L R S LRS LRS越小,说明规则(集)的效果越可能仅是偶然现象。
  • 在数据量比较大的任务中,通常设置为在 L R S LRS LRS很大(例如0.99)时 C N 2 CN2 CN2算法才停止规则(集)生长。

后剪枝

常用策略:减错剪枝( R E P REP REP)------针对规则集 进行剪枝------时间复杂度为 O ( m 4 ) O(m^4) O(m4)。

I R E P IREP IREP------针对单条规则 进行剪枝------时间复杂度为 O ( m l o g 2 m ) O(mlog^2m) O(mlog2m)

R I P P E R RIPPER RIPPER------通过全局的考虑来缓解贪心算法的局部性。

  • 泛化性能超过很多决策树
  • 学习速度更快
  • 将剪枝和后处理优化相结合

15.4 一阶规则学习

一阶的目的是描述一类物体的性质和相互关系。

FOIL算法

遵循序贯覆盖框架 且使用自顶向下的规则归纳策略,在规则生成时需要考虑不同的变量组合。

FOIL可看作命题规则学习与归纳逻辑程序设计之间的过渡。自顶向下的规则生成过程不能支持函数和逻辑表达式嵌套,因此规则表达能力仍有不足。

15.5 归纳逻辑程序设计( I L P ILP ILP)

I L P ILP ILP的目标是完备地学习一阶规则。

  • 一阶规则学习中引入函数和逻辑表达式嵌套。
  • 具备强大的表达能力。
  • 解决基于背景知识的逻辑程序归纳。

最小一般泛化

归结:一阶谓词演算中的演绎推理能用一条十分简洁的规则描述。

归纳逻辑程序设计采用自底向上的规则生成策略,直接将一个或多个正例所对应的具体事实作为初始规则,再对规则逐步进行泛化以增加其对样例的覆盖率(可以是将规则中的常量替换为逻辑变量,也可以是删除规则体中的某个文字)

逆归结

  • 演绎:从一般性规律出发来探讨具体事物。代表:数学定理证明
  • 归纳:从个别事物出发概括出一般性规律。代表:机器学习
  • 归结原理:
    • 一阶谓词演算中的演绎推理能用一条十分简洁的规则描述
    • 将复杂的逻辑规则与背景知识联系起来化繁为简
    • 逆归结:基于背景知识来发明新的概念和关系
相关推荐
txwtech16 分钟前
第5篇 如何计算两个坐标点距离--opencv图像中的两个点
人工智能·算法·机器学习
Gorgous—l30 分钟前
数据结构算法学习:LeetCode热题100-矩阵篇(矩阵置零、螺旋矩阵、旋转图像、搜索二维矩阵 II)
数据结构·学习·算法
eggcode34 分钟前
Vue前端开发学习的简单记录
vue.js·学习
你也渴望鸡哥的力量么38 分钟前
爬虫学习笔记
笔记·爬虫·学习
日更嵌入式的打工仔1 小时前
InitLWIP() 初始化
笔记·嵌入式硬件·学习
峰顶听歌的鲸鱼1 小时前
38.Shell脚本编程2
linux·运维·服务器·笔记·学习方法
QAQ小菜鸟1 小时前
AutoCAD如何将指定窗口导出成PDF?
学习
澄澈i2 小时前
CMake学习篇[3]---CMake进阶+嵌套CMakeLists+多层级关系
c++·学习·cmake
Camellia03112 小时前
为第二次考核的电控学习
学习
茯苓gao2 小时前
电路学习(一)
学习