第15章 规则学习

第15章 规则学习

15.1 基本概念

规则学习(rule learning)是从训练数据中学习出一组能用于对未见示例进行判别的规则

一条规则形如

⨁ ⟵ f 1 ∧ f 2 … ∧ f L \bigoplus \longleftarrow f_{1} \land f_{2}\ldots \land f_{L} f1f2fL

其中逻辑蕴含符号 ⟵ \longleftarrow 右边部分称为规则体,表示该规则的前提,左边部分称为规则头,表示该规则的结果。

规则体是由逻辑文字 f k f_{k} fk组合的合取式,其中合取符号 ∧ \land 用来表示并且。

每个文字 f k f_{k} fk都是对示例属性进行检验的布尔表达式。

L L L是规则体中逻辑文字的个数,称为规则的长度。

规则头 ⨁ \bigoplus 同样是逻辑文字,一般用来表示规则所判定的目标类别或概念。

冲突(conflict):当同一示例被判别结果不同的多条规则覆盖

冲突消解(conflict resolution):解决冲突的办法,常用的冲突消解策略由投票法、排序法、元规则法

投票法:将判别相同的规则数最多的结果作为最终结果

排序法:在规则集合上定义一个顺序,在发生冲突时使用排序最前的规则;相应的规则学习过程称为带序规则(ordered rule)学习或优先级规则(priority rule)学习。

元规则法:根据领域知识事先设定一些元规则(meta-rule),即关于规则的规则

量词:用于限定变量的取值范围, ∃ , ∀ \exists,\forall 分别表示存在和任意。

15.2 序贯覆盖

序贯覆盖(sequential covering):在训练集上每学到一条规则,就将该规则覆盖的训练样例去除,然后以剩下的训练样例组成训练集重复上述过程。由于每次只处理一部分数据,也被称为分治(separate-and-conquer)策略

自顶向下:从比较一般的规则开始,逐渐添加新文字以缩小规则覆盖范围,直到满足预定条件为止;亦称为生成-测试(generate-then-test)法,是规则逐渐特化的过程。

自底向上:从比较特殊的规则开始,逐渐删除文字以扩大规则覆盖范围,直到满足条件为止;亦称数据驱动(data-driven)法,是规则逐渐泛化的过程。

集束搜索:每轮保留最优的b个逻辑文字,在下一轮均用于构建候选集,再把候选集中最优的b个留待再下一轮使用。

15.3 剪枝优化

规则生成本质是一个贪心搜索过程,需要有一定的机制来缓解过拟合的风险,最常用的做法是剪枝。通常是基于某种性能度量指标来评估增/闪逻辑文字前后的规则性能,或增/删规则前后的规则集性能,从而判断是否要进行剪枝。

CN2算法

在预剪枝时,假设用规则集进行预测必须显著优于直接基于训练样例集后验概率分布进行预测。

m + , m − m_{+},m_{-} m+,m分别表示训练样例集的正、反例数目, m ^ + , m ^ − {\hat{m}}_{+},{\hat{m}}_{-} m^+,m^分别表示规则覆盖的正、反例数目。则有

L R S = 2 ∗ ( m ^ + ⁡ ( m ^ + m ^ + + m ^ − ) ( m + m + + m − ) + m ^ − ⁡ ( m ^ − m ^ + + m ^ − ) ( m − m + + m − ) ) LRS = 2*\left( {\hat{m}}_{+}\operatorname{}\frac{\left( \frac{{\hat{m}}_{+}}{{\hat{m}}_{+} + {\hat{m}}_{-}} \right)}{\left( \frac{m_{+}}{m_{+} + m_{-}} \right)} + {\hat{m}}_{-}\operatorname{}\frac{\left( \frac{{\hat{m}}_{-}}{{\hat{m}}_{+} + {\hat{m}}_{-}} \right)}{\left( \frac{m_{-}}{m_{+} + m_{-}} \right)} \right) LRS=2m^+(m++mm+)(m^++m^m^+)+m^(m++mm)(m^++m^m^)

信息量指标,衡量了规则覆盖样例的分布与训练集经验分布的差别:LRS越大,说明采用规则进行预测与直接使用训练集正、反例比率进行猜测的差别越大;LRS越小,说明规则的效果越可能仅是偶然现象。

减错剪枝(Reduced Error Pruning, REP)

基本做法:将样例集划分为训练集和验证集,从训练集上学得规则集R后进行多轮剪枝,在每一轮穷举所有可能的剪枝操作,然后用验证集对剪枝产生的所有候选规则集进行评估,保留最好的那个规则集进行下一轮剪枝,如此继续,直到无法通过剪枝提高验证集上的性能为止。

IREP(Incremental REP)

基本做法:在生成每条规则前,先将当前样例集划分为训练集和验证集,在训练集上生成一条规则r,立即在验证集上对其进行REP剪枝,得到规则 r ′ r' r;将 r ′ r' r覆盖的样例去除,在更新后的样例集上重复上述过程。

在这里插入图片描述
15.4 一阶规则学习

关系数据(relational data):数据直接描述样例间的关系

一般规则学习能容易引入领域知识,这是它相对命题规则学习的另一大优势。在现有属性的基础上基于领域知识构造出新属性,或基于领域知识设置某种函数机制来对假设空间加以约束。

FOIL(First-Order Inductive Learned)

是一阶规则学习算法,遵循序贯覆盖框架且采用自顶向下的规则归纳策略,使用FOIL增益来选择文字:

F _ G a i n = m ^ + × ( ⁡ m ^ + m ^ + + m ^ − − ⁡ m + m + + m − ) F\_ Gain = {\hat{m}}_{+} \times \left( \operatorname{}{\frac{{\hat{m}}_{+}}{{\hat{m}}_{+} + {\hat{m}}_{-}} - \operatorname{}\frac{m_{+}}{m_{+} + m_{-}}} \right) F_Gain=m^+×(m^++m^m^+m++mm+)

其中 m ^ + , m ^ − {\hat{m}}_{+},{\hat{m}}_{-} m^+,m^分别为增加候选文字后新规则所覆盖的正、反例数; m + , m − m_{+},m_{-} m+,m原规则覆盖的正、反例数。

FOIL增益仅考虑正例的信息量,并且用新规则覆盖的正例数作为权重。

15.5 归纳逻辑程序设计

归纳逻辑程序设计(Inductive Logic Programming,ILP)在一阶规则学习中引入函数和逻辑表达式嵌套。

15.5.1 最小一般泛化

泛化操作可以是将规则中的常量替换为逻辑变量,也可以是删除规则中的某个文字

最小一般泛化(Least General Generalization, LGG)

给定一阶公式 r 1 r_{1} r1 r 2 r_{2} r2,LGG先找出涉及相同谓词的文字,然后对文字中每个位置的常量逐一进行考察,若常量在两个文字中相同则保持不变,记为 LGG ( t , t ) = t \text{LGG}\left( t,t \right) = t LGG(t,t)=t;否则将它们替换为同一个新变量,并将该替换应用于公式的所有其他位置:假定这两个不同的常量分别是 s , t s,t s,t,新变量为 V V V,则记为 LGG ( s , t ) = V \text{LGG}\left( s,t \right) = V LGG(s,t)=V,并在以后所有出现 LGG ( s , t ) \text{LGG}\left( s,t \right) LGG(s,t)的位置用来代替。

15.5.2 逆归结

一阶谓词演算直到演绎推理能用一条十分简洁的规则描述,这就是数学中著名的归结原理。

置换:用某些项来替换逻辑表达式中的变量

合一:用一种变量置换令两个或多个逻辑表达式相等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值