21/8/21 读书笔记 规则学习

21/8/21 读书笔记

机器学习 规则学习

规则学习的目标是从数据中学习出一组能够对未见示例进行判别的逻辑规则。一条规则可以视作\(规则头\leftarrow 规则体\)​​,规则体是多个逻辑文字组成的合取式;规则头同样是逻辑文字,用于表示判定目标的类别或概念。

规则学习具有良好的解释性,并且具有数理逻辑的极强表达能力。

规则学习不同于决策树学习,规则学习并不强求将所有样本分割为互不重叠的集合。规则学习注重规则对样例的覆盖,对每条规则,正例数往往小于反例数,因此规则学习在增益的考量上更加注重正例带来的影响。

规则学习中每条规则都是一个“子模型”,规则的集合就是这些子模型的一个集成。规则学习通常使用投票法、带序规则、元规则来解决同一示例被多个判别结果不同的规则覆盖的情况。元规则是根据领域知识所预先设定的规则,可以理解为关于规则的规则,比如“发生冲突时选择长度最小的规则”。

规则可以分为两类:

  • 命题规则(propositional rule):用逻辑连接词和原子命题组成的简单陈述句,比如\((y=a)\leftarrow (x_i=d)\and (x_j=v)\)​。
  • 一阶规则(first-order rule):用逻辑连接词和原子公式组成的表述关系的语句,比如\(更差(X,Y)\leftarrow 更便宜(X,Y)\and 更大(X,Y)\)

命题规则中,属性的取值情况可以视作逻辑文字,样本的标记情况也视作逻辑文字,规则学习就是要学习能够覆盖更多样本的逻辑文字的可能组合。

一阶规则也称为“关系型规则”,比命题规则更复杂,也能表达更复杂的逻辑关系。命题规则可以视作一阶规则的特例。一阶规则的学习中,我们将样本转换成能够直接描述样例间关系的数据,称为关系数据,比如样本\(x_a\)​​​比样本\(x_b\)​​​存在 \(颜色更深(x_a,x_b)\)​​​​​​ 的关系,从原样本属性转换来的关系成为背景知识,从样本的标记或预测目标转换来的关系称为关系数据样例。这些关系数据就成为了备选的逻辑文字。经过转换后,一阶规则的学习过程和命题规则基本类似,都是探索规则头和规则体的逻辑文字组合方式对样本的覆盖情况。

规则学习的最直接方法就是序贯覆盖,即逐条归纳,每次学习到一个规则,就将该规则覆盖的所有样本移除,然后再学习。

我们如果采用穷举规则体中所有可能的逻辑文字组合,这是计算不可行的。因此,通常采用两种贪心式的方法:

  • 自顶而下(生成-测试):从比较一般的规则开始,在前一次的基础上逐渐添加逻辑文字,缩小覆盖范围。
  • 自底向上(数据驱动):从比较特殊的规则开始,在前一次的基础上逐渐删除逻辑文字,扩大覆盖范围。

生成-测试法更容易产生泛化性能较好的规则,数据驱动法在复杂情况或样本较少的情况下性能更好。

由于贪心式的方法容易陷入局部最优解,因此可以采用集束搜索,每次保留并考虑多个最优逻辑文字的选择,使得每次考虑的规则具有更多的可能性。

规则学习的过程在实际上是一个贪心式搜索的过程,因此和决策树算法一样也会进行剪枝。除了基于验证集进行剪枝判断以外,书中还介绍了基于统计显著性的检验、减错剪枝,以及剪枝过程和后处理优化相结合的RIPPER算法。

归纳逻辑程序设计(Inductive Logic Programming, ILP)在一阶规则的基础上继续考虑了函数和逻辑表达式嵌套,这使得规则学习的表达能力进一步提升,同时ILP也使得其学习的规则能够解决逻辑程序归纳的问题。由于嵌套的深度可以无限大,因此自顶而下的学习方式不再适用,只能采取自底向上的策略,这就需要我们将“特殊”的规则泛化到更加“一般”的规则,实际上每个样本都对应了一个特殊规则。为了达到这个目标,ILP引入了最小一般泛化(Least General Generalization, LGG),其描述了对于两个规则公式\(A\)\(B\),如何找到这两个公式的一个泛化规则公式\(G\),并使得不存在另外一个规则公式能够既特化为\(A\)\(B\)又能泛化为\(G\)​​​​。​对多个样本对应的特殊规则进行泛化所获得的LGG被加入规则集中,并可以进行一般的剪枝等优化。

ILP的基础是逻辑学。逻辑学中,归结原理使得我们将复杂的逻辑规则同背景知识相互联系而化繁为简,而逆归结允许我们基于背景知识来发现新的概念和关系。逆归结可以自动地发明谓词,新谓词可能对应值某些我们未曾发现的新知识,这对于知识发现和精化有重要意义。

posted @ 2021-08-21 15:56  neumy  阅读(141)  评论(0)    收藏  举报