规则学习

规则

1. 基本概念

f 1 f 2 f L

  • : 规则头
  • f 1 f 2 f L : 规则体 (合取式)
  • 一条规则是一个子模型,规则及是这些子模型的集合

1.1规则冲突

冲突消解的手段

  • 投票法
  • 排序法
  • 元规则法

1.2无法覆盖

  • 增加默认规则

1.3 两种规则

  • 命题规则(propositional rule):原命题+逻辑连接词 简单陈述句
  • 一阶规则(first-order rule):描述事务的属性或关系的原子公式

命题规则是一阶规则的特例

2.序贯覆盖

规则学习的目标是产生一个能覆盖尽可能多的样例的规则集。最直接的做法是序贯覆盖(sequential covering),即逐条归纳:在训练集上每学到一条规则,就将该规则覆盖的训练样例去除,然后以剩下的训练样例组成训练集重复上述过程。由于每次只处理一部分数据,因此也称为分治(separate-and-conquer)策略。

2.1.生成规则的两种策略

  • 自顶向下 —‘生成-测试’法— 规则逐渐特化
  • 自底向上 —‘数据驱动’法 — 规则逐渐泛化

2.2.有点

  • 简单有效
  • 方便推广到多分类

3.剪枝优化

规则生成本质上是一个贪心搜索过程,需要一定的机制来缓解过拟合的风险,最常见的做法是剪枝(pruning)。与决策树相似,剪枝可发生在规则生长过程中,即预剪枝;也可发生在规则产生后,即后剪枝。通常是基于某种性能度量指标来评估增/删逻辑文字前后的规则性能,或增/删规则前后的规则集性能,从而判断是否要进行剪枝。

3.1.相关算法

  • 预剪枝:CN2算法
  • 后剪枝:REP算法(Reduced Error Pruning)、IREP算法(Incremental REP)
  • 预剪枝+后剪枝:RIPPER算法

4.一阶规则学习

和命题规则相比

  • 表达能力更强
  • 容易引入领域知识

4.1.相关算法

  • FOIL(First-Order Inductive Learning)一阶规则学习算法

5. 归纳逻辑成程序设计

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

然而,函数和逻辑表达式嵌套的引入也带来了计算上的巨大挑战。例如,给给定一元谓词P和一元函数f,能组成的文字有P(X),P(f(X)),P(f(f(X)))等无穷多个,这就使得规则学习过程中可能的候选原子公式有无穷多个。若仍采用命题逻辑规则或FOIL学习那样自顶向下的规则生成过程,则在增加规则长度时将因无法列举所有候选文字而失败。实际困难还包括,在计算FOIL增益时需对规则覆盖的全部正反例计数,而在引入函数和逻辑表达式嵌套之后也变得不可行。

5.1. 最小一般泛化

5.1. 逆归结

6.应用

  • 问答系统:对于问题的逻辑推理能力
  • 知识发现:逆归结
  • 语义理解
  • 自然语言处理

猜你喜欢

转载自blog.csdn.net/sinat_33731745/article/details/79594911