规则学习笔记

基本概念

1.规则学习:是从训练数据中学习出一组能用于对未见事例进行判别的规则,规则生成本身是一个贪心的搜索过程。

2.一条规则形如
在这里插入图片描述
逻辑蕴含符号“<——”右边为“规则体”,表示该规则的前提,左边部分为“规则头”,表示该条规则的结果。
规则体是由逻辑文字 f k \mathbf{f_k} fk组成的合取式,合取符号 ∧ \wedge 表示并且。
每个文字 f k \mathbf{f_k} fk都是对示例属性进行检验的布尔表达式。
L L L是规则体中逻辑文字的个数,称为规则的长度。
规则头同样是逻辑文字,一般用来表示规则所判定的目标类别或概念。
这样的规则也被称为“if-then规则”

3.规则集合中的每条规则都可以看作一个子模型,规则集合是这些子模型的一个集成。

4.当同一个示例被判别结果不同的多条规则覆盖时,则发生了冲突。解决冲突的办法称为冲突消解,比如投票法、排序法和元规则法。

5.规则集合也许不能覆盖所有可能的未见事例,通常设置一条默认规则,由它来处理未覆盖的样本。

6.根据形式语言表达能力分类:
命题规则:由原子命题和逻辑连接词与蕴含构成的简单陈述句。
一阶规则(关系型规则):基本成分是能描述事物的属性或关系的原子公式。

7优点:
与神经网络、支持向量机这样的“黑箱模型”相比,规则学习具有更好的可解释性,能使用户更直观地对判别过程有所了解。
数理逻辑具有极强的表达能力,绝大多数人类知识都能通过数理逻辑进行简洁的刻画和表达。
逻辑规则的抽象描述在处理一些高度复杂的AI任务时具有显著优势。

序贯覆盖/分治策略

1.定义:在训练集上,每学到一条规则,就将该规则覆盖的训练样例去除,然后以剩下的训练样例组成的训练集重复以上过程。

2.产生规则的策略:
2.1自顶向下
即从比较一般的规则开始,逐渐添加新文字以缩小规则覆盖范围,直到满足预定条件为止。
亦称生成测试,是规则逐渐特化的过程。
更容易产生泛化性能较好的规则
对噪声的鲁棒性比后者强得多
常用于命题规则

2.1自底向上
即从比较特殊的规则开始,逐渐删除文字以扩散规则覆盖范围,直到满足条件为止。
亦称数据驱动法,是规则逐渐泛化的过程。
更适合样本更少的情形
常用于一阶规则学习

3.评估规则优劣的标准:先考虑规则准确率,准确率相同时考虑覆盖样例数,再相同时考虑属性次序。
为避免陷入局部最优,则采用“集束搜索”,即每轮保留最优的b个逻辑文字,在下一轮均采用构建候选集,再把候选集中最优的b个留待下一轮再使用。

剪枝优化

1.目的:缓解过拟合风险

2.CN2算法(借助统计显著性检验)
假设用规则集进行预测必须显著优于直接基于训练样例集后验概率分布进行预测。
规则学习笔记_第1张图片
LRS越大,说明采用规则(集)进行预测与直接使用训练集正、反例比率进行猜测的差别越大。在数据量比较大的现实任务中,通常设置为LRS很大时(如0.99)CN2算法才停止规则(集)生长。

3.后剪枝
3.1最常用策略:减错剪枝(REP)
将样例集划分为训练集和验证集,从训练集学得规则集后进行多轮剪枝,在每一轮穷举所有可能的剪枝操作,然后用验证集对剪枝产生的所有候选规则进行评估,保留最好的那个规则集进行下一轮剪枝,如此继续,直到无法通过剪枝提高验证集上的性能为止。
REP通常很有效,但其复杂度为 O ( m 4 ) {O(m^4)} O(m4)

3.2.IREP(将复杂度降到 O ( m l o g 2 m ) {O(mlog^2m)} O(mlog2m)
3.2.1做法:在生成每条规则前,先将当前样例集分为训练集和验证集,在训练集上生成一条规则 r \mathbf{r} r,立即在验证集上对其进行REP剪枝,得到规则 r ′ \mathbf{r'} r,将 r ′ \mathbf{r'} r覆盖的样例去除,在更新后的样例集上重复上述过程。

3.2.2优点:REP是对规则集剪枝,IREP是对单条规则剪枝,后者比前者更高效。

4.规则学习算法:RIPPER
规则学习笔记_第2张图片
对规则集 R \mathcal{R} R中的每条规则 r i \mathbf{r_i} ri,RIPPER为它产生两个变体:
r i ′ \mathbf{r'_i} ri:基于 r i \mathbf{r_i} ri覆盖的样例,用 I R E P ∗ IREP^* IREP重新生成一条规则 r i ′ \mathbf{r'_i} ri,该规则称为替换规则。
r i ′ ′ \mathbf{r''_i} ri:对 r i \mathbf{r_i} ri增加文字进行特化,然后再用 I R E P ∗ IREP^* IREP剪枝生成一条规则 r i ′ ′ \mathbf{r''_i} ri,该规则称为修订规则。

RIPPER的后处理优化过程将 R \mathcal{R} R中的所有规则放在一起重新加以优化,恰是通过全局的考虑来缓解贪心算法的局部性,避免陷入局部优化陷阱,得到更好的效果。

一阶规则学习

1.当超越了命题逻辑的表达能力,需用一阶逻辑表示,并且要使用一阶学习规则。

2.一阶规则有强大的表达能力,能简洁地表达递归概念,如:
在这里插入图片描述

3.很容易引入领域知识

4.FOIL(著名的一阶规则学习算法)
4.1.它遵循序贯覆盖框架,且采用自顶向下的归纳策略,但由于逻辑变量的存在,FOIL在规则生成时需考虑不同的变量组合。

4.2.使用FOIL增益来选择文字
在这里插入图片描述
其中 m + ^ \hat{m_+} m+^ m − ^ \hat{m_-} m^分别为增加筛选文字后新规则所覆盖的正、反例数; m + {m_+} m+ m − {m_-} m为原规则所覆盖的正、反例数。

4.3.看做命题规则学习与归纳逻辑程序设计之间的过渡,其自顶向下的规则生成过程不能支持函数和逻辑表达式嵌套。

归纳逻辑程序设计ILP

1.在一阶学习中引入函数和逻辑表达式嵌套,使得机器学习具备了更强大的表达能力。
IPL可看作机器学习技术来解决基于背景知识到逻辑程序归纳,其学得的规则可被PROLOG等程序设计语言直接使用。

2.最小一般泛化(LGG)
采用自底向上的规则生成策略,直接将一个或多个正例所对应的具体事实作为初始规则,再对规则逐步进行泛化以增加其对样例的覆盖率。

3.逆归结
3.1基于逆归结我们可以基于背景知识来发明新的概念和关系。

3.2逆归结操作:
规则学习笔记_第3张图片

4.归纳逻辑程序设计采用自底向上的规则生成策略,直接将一个或多个正例所对应的具体事例作为初始规则,再对规则逐步进行泛化以增加其对样例的覆盖率。

5.优点:
能自动发明新谓词,这些新谓词可能对应于样例属性和知识背景中不存在的新知识,对知识发现和精化有重要意义。

你可能感兴趣的:(西瓜书)