15.2 序贯覆盖

15.2 序贯覆盖

  • 规则学习的目标是产生一个能够覆盖尽可能多的样例的规则集。最直接的做法就是“序贯覆盖”,即逐条归纳。再训练集上的每学到一个规则,就将该规则覆盖的训练样例去除,然后以剩下的训练样例组成训练集重复上述过程。由于每次只处理一部分的数据,因此也被称为“分治”策略
  • 我们以命题规则学习为例来考察序贯覆盖法,命题规则的规则体是对样例属性进行评估的布尔函数,如“色泽 = 亲绿”,“含糖量 <= 0.2 ”等,规则头是样例类别。序贯覆盖法的关键是如何从训练集学出单条规则。显然,对规则学习目标,产生一条规则就是寻找最优的一组逻辑文字来构成规则体,这是一个搜索问题。形式化的来说,就是给定正例集合和反例集合,学习任务就是基于候选文字集合 F ={fk}来产生最优规则r,在命题规则学习中,候选文字是形如“R{属性i,属性值j”的布尔表达式,其中属性i表示样例第i个属性,属性值ij表示属性i的第j个候选值,R{x,y}则是判断x,y是否满足关系R的二元布尔函数
  • 最简单的做法就是从空规则开始,按照正例类别作为规则头,再逐个遍历训练集中的每个属性以及取值,尝试将其作为逻辑文字添加到规则体中,若能够使当前的规则体仅覆盖正例,则由此产生一条规则,然后去除已经被覆盖的正例并且基于剩余样本尝试生成下一条规则。
  • 以西瓜数据集2.0为例,首先根据第1个样例生成文字“好瓜”,和“色泽 = 亲绿”加入规则,得到
    • 好瓜 👈 (色泽 = 青绿)
  • 这条规则覆盖样例1,6,10和17,其中有两个正例和两个反例,不符合“当前规则仅股改正例”的条件。于是,我们尝试将命题替换为基于属性“色泽”形成的其他原子命题,例如色泽 = 乌黑,然而在这个数据集中,这样的操作不能产生符合条件的规则,于是我们回到色泽 = 青绿,尝试增加一个基于其他属性的原子命题,例如 *根蒂 = 蜷缩
    • 好瓜 👈 色泽 = 青绿 ∩ 根蒂 = 蜷缩
  • 该规则仍然覆盖了 反例17,于是我们将第二个命题替换为基于该属性形成的其他原子命题,例如 根蒂 = 稍蜷
  • 这条规则不覆盖任何的反例,虽然它仅仅只覆盖一个正例,但是满足当前规则仅覆盖正例的条件,因此我们保留这个规则并且去除它覆盖的样例6,然后将剩下的9个样例用作训练集,如此继续,我们将得到:
    • 规则一:好瓜 👈 青绿 ∩ 稍蜷
    • 规则二:好瓜 👈 青绿 ∩ 敲声 = 浊响
    • 规则三:好瓜 👈 乌黑 ∩ 蜷缩
    • 规则四:好瓜 👈 乌黑 ∩ 纹理 = 稍糊
  • 这个规则集覆盖了所有的正例,未覆盖任何的反例,这是序贯覆盖发学习得到的条件
  • 上面这种基于穷尽搜索的做法再属性和候选值比较多的时候会由于组合爆炸而不可行。现实任务中一般有两种策略来产生规则,第一种是自顶向下,即从比较一般的规则开始,逐渐添加新的文字以缩小规则覆盖范围,直到满足预定的条件为止,也叫做生成-测试法,是规则逐渐特化的过程。第二种是自底向下,即从比较特殊的规则开始,逐渐删除文字以扩大规则则覆盖范围,直到满足条件为止,亦称为数据驱动发,是规则逐渐泛化的过程。第一种策略是覆盖范围从大往小搜索规则,第二种的策略则相反。前者通常更容易产生泛化性能较好的规则,而后者则更适合于训练样本较少的情形,此外,前者对于噪声的鲁棒性比后者要强得多,因此,在命题规则学习中通常使用第一种策略,而在第二种策略在一阶段学习这类假设空间非常复杂的任务上使用。
  • 下面以西瓜数据集2.0训练集为例来展示自顶向下的规则生成方法,首先从空规则开始,逐一将属性 = 取值,作为原子命题加入空规则进行考察。假定基于训练集准确率来评估规则的优劣,n / m表示加入了新规则在训练集中的准确率,其中 m 为覆盖的样例总数,n 为覆盖的正例数。如图15.1 所示,经过第一轮的品谷歌,色泽 = 乌黑, 脐部 = 凹陷 都达到了最高点的准确率 3/ 4

在这里插入图片描述

  • 将属性次序最靠前的逻辑文字 色泽 = 乌黑 加入空规则,得到
    • 好瓜 👈 ( 色泽 = 乌黑 )
  • 然后,对上面的这条规则覆盖额样例,通过第二轮的评估可以直到,将图15.1的五个逻辑文字加入规则后都能达到 100 % 的准确率,我们将覆盖样例最多,且属性次序最靠前的逻辑文字 根蒂 = 蜷缩加入规则,于是得到了结果
    • 好瓜 👈 (色泽 = 乌黑 ∩ 根蒂 = 蜷缩)
  • 规则生成过程中涉及一个评估规则优劣的指标,在上面的例子中使用的标准是:先考虑规则准确率,准确率相同时考虑覆盖的样例数,再相同的的时候考虑属性的次序。在现实应用中可以根据具体的任务情况涉及恰当的标准。
  • 此外,在上面的例子中每次仅仅考虑一个最优的文字,这通常过于贪心,易于陷入局部最优。为了缓解这个问题,可采用一些相对温和的方法,例如,采用集束搜索,即每轮保留最优的b个逻辑文字,在下一轮中均采用构建候选集,再把候选集中最优的b个留待再下一轮使用。图15.1中若采用b = 2 的集束搜索,则第一轮将保留准确率为 3/ 4 的两个逻辑文字,在第二轮评估后就能获得下面这条规则,其准确率仍为 100 %,但是覆盖了 3 个正例
    • 好瓜 👈 (脐部 = 凹陷) ∩ (根蒂 = 蜷缩)
  • 由于序贯覆盖发简单有效,几乎所有的规则学习算法都可以以他为基本的框架,它能够方便的推广到多分类问题中,只需要将每类分别处理即可。当学习关于第c类的规则的时候,将所有属于类别c的样本作为正例,其他类别的样本违反例
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值