规则学习就是指通过样本学习一个明确的规则,用以对待分类样本进行分类,目标是产生一个能覆盖尽可能多的样本的规则集。规则常分为命题规则和一阶规则,命题规则指使用具体原子命题和逻辑关系组合成的简单陈述句,一阶规则是由可以描述属性的原子公式,从描述来看命题规则属于一阶规则的特殊情况。
由于一个样本有多个属性,所以会出现同一个样本被多条规则覆盖,如果发生则常使用投票法、排序法和元规则法进行解决,投票法是选择分类最多的规则数,排序法指预先对规则本身的优先级进行排序,选择优先级最高的规则,元规则法指预先为规则的执行指定一个原则,根据原则来确定规则的选择。
序贯覆盖指基于样本集进行规则学习,而每学习得到一条规则,就从样本集中将规则可以覆盖的样本去除,直到所有样本集为空或仅剩一种分类,则所有样本都有规则被覆盖。
规则的学习有自顶向下和自底向上两种思路,自顶向下是先使用一般性的规则描述,然后增加细化描述用来覆盖更具体的分类,这种从大到小的方式具有较强的泛化能力,适合本身具体的命题规则;自底向上策略则相反,是先使用特殊的规则开始,然后不断减少约束条件来增加对样本的覆盖率,适合一半特性的一阶规则。
由序贯覆盖的过程可知这是一个贪心的搜索过程,容易导致局部最优或出现过拟合,类似决策树中的对过拟合的处理,需要增加剪枝。剪枝分为预剪枝和后剪枝,前者指规则学习过程中进行剪枝,后者指规则学习完成后进行剪枝。
一阶规则学习 由于常规的命题逻辑表达能力有限,所以使用一阶逻辑来表示,称为一阶规则学习,即使用更一般的一阶公式代替具体的一维命题进行表达。一阶规则可以表达递归概念即:
更 好 ( X , Y ) ⟵ 更 好 ( X , Z ) ∧ 更 好 ( Z , Y ) 更好(X,Y) \longleftarrow 更好(X,Z) \wedge 更好(Z,Y) 更好(X,Y)⟵更好(X,Z)∧更好(Z,Y)
归纳逻辑程序设计是采用自底向上的规则生成方式,基于一阶规则增加了更复杂的逻辑表达式嵌套和函数,有了更强的表达能力,但也会由于函数的嵌套导致规则有无穷多个,因此为了简化也有一些常用的策略有最小一般泛化和逆归结。