数据挖掘课程笔记--分类(2)基于规则的分类

一、算法简介

规则是表示信息或少量知识的好方法。基于规则的分类器使用一组IF—THEN规则进行分类。

规则: (Condition) ----->y
Condition 是属性测试的合取
y 是类标号
左部: 规则的前件或前提
右部: 规则的结论
分类规则的例子:
(胎生=否) ^飞行动物=是) -->鸟类
(胎生=是) ^ (体温=恒温) --> 哺乳类
在这里插入图片描述在这里插入图片描述在这里插入图片描述

二 规则的质量评价标准

一般用覆盖率(coverage)和准确率(accuracy)度量

  • 覆盖率(coverage):满足规则前件的记录所占比例
    在这里插入图片描述
  • 规则的精度(Accuracy of a rule):触发r的记录中类标号等于y的记录所占的比例
    在这里插入图片描述其中|A|是满足规则前件的记录数,|A∩y|是同时满足规则前件和后件的记录数,D是记录总数。
    在这里插入图片描述

三、 规则的分类器的工作原理

基于规则的分类器所产生的规则集的两个重要性质:

互斥规则(Mutually exclusive rules)

  • 每个记录最多被一个规则覆盖
  • 如果规则集中不存在两条规则被同一条记录触发,称规则集中的规则是互斥的
  • 如果规则集不是互斥的:一个记录可能触发多条规则

解决办法:

  • 有序规则集(Ordered rule set)
    规则集中的规则按照优先级降序排列,优先级的定义有多种方法(如基于准确率、覆盖率、总描述长度或规则产生的顺序等)。有序规则的规则集也称为决策表。当测试记录出现时,由覆盖记录的最高秩的规则对其进行分类,这就避免由多条分类规则来预测而产生的类冲突的问题。
  • 无序规则集( Unordered rule set)
    允许一条测试记录触发多条分类规则,把每条被触发规则的后件看作是对相应类的一次投票,然后计票确定测试记录的类标号。通常把记录指派到得票最多的类。

穷举规则(Exhaustive rules)

  • 如果对属性值的任一组合,都存在一条规则加以覆盖,成规则集具有穷举覆盖确保了每一条记录都至少被一条规则覆盖
  • 如果规则不是穷举的:一条记录可能不会触发任何规则

解决办法:

  • 使用缺省类(即通常被指定为没有被现存规则覆盖的训练记录的多数类)

四、规则的排序方案

对规则的排序可以逐条规则进行或者逐个类进行。

基于规则的排序方案
  
这个方案依据规则质量的某种度量对规则进行排序。这种排序方案确保每一个测试记录都是由覆盖它的"最好的"规则来分类。该方案的潜在缺点是规则的秩越低越难解释,因为每个规则都假设所有排在它前面的规则不成立。

基于类的排序方案
  
在这种方案中,属于同一个类的规则在规则集R中一起出现。然后,这些规则根据它们所属的类信息一起排序。同一个类的规则之间的相对顺序并不重要,只要其中一个规则被激发,类标号就会赋给测试记录。这使得规则的解释稍微容易一些。然而,质量较差的规则可能碰巧预测较高秩的类,从而导致高质量的规则被忽略。
在这里插入图片描述

五、规则的提取算法

建立分类器的过程就是建立一套规则集,提取分类规则的方法有两类:直接法直接从数据集中提取分类规则 和 间接法从其他的分类模型(如决策树和神经网络)中提取分类规则

间接法—由决策树提取规则
为了从决策树提取规则,对每条从根到树叶节点的路径创建一个规则。

前件:沿着给定路径上的每个分裂准则的逻辑AND形成规则的前件。

后件:存放类预测的树叶结点形成规则的后件。

由于这些规则直接从树中提取,所以它们是互斥的和穷举的。

  1. 互斥意味着不可能存在规则冲突,因为没有两个规则被相同的元组触发。(每个树叶有一个并且任何元组都只能映射到一个树叶。)

  2. 穷举意味着对于每种可能的属性—值组合都存在一个规则,使得该规则集不需要默认规则。因此,规则的序不重要—它们是无序的。

由于每个树叶一个规则,所以提取的规则集并不比对应的决策树简单多少。在某些情况下,提取的规则可能比原来的树更难解释(比如,子树中存在重复和复制)。提取的规则集可能很大并且难以理解,因为某些属性测试可能是不相关的和冗余的。尽管很容易从决策树提取规则,但是可能需要做更多的工作,对结果规则集进行剪枝。
在这里插入图片描述

直接法—顺序覆盖算法

顺序覆盖算法经常被用来从直接数据中提取规则,规则基于某种评估度量以贪心的方式增长。该算法从包含多个类的数据集中一次提取一个类的规则。决定哪一个类的规则最先产生的标准取决于多种因素,如类的普遍性(即训练记录中属于特定类的记录的比例),或者给定类中误分类记录的代价。
基本思想:
开始决策表为空,用留一规则提取类y的覆盖当前训练记录集的最佳规则。在提取规则时,类y的所有训练记录被看作正例,而其他类的训练记录看作反例。如果一个规则覆盖大多数正例,那么该规则是可取的,这时删除它所覆盖的训练记录,把新规则追加到决策表中。重复这个过程直到满足终止条件
在这里插入图片描述
在该算法中,while循环内的终止条件不唯一,在不同的分类器中可能会有区别,比如可以是所有整理均被覆盖,也可以是剩余正例比例小于某个阈值等。下面说明了顺序覆盖算法提取一个类中规则r1和r2的过程,在该过程中,每次提取一个规则之后,就将改规则覆盖的记录(包括正例和反例)去掉,并且对于每个类中的每条规则,都是从完整的(属性,值)A中提取。
在这里插入图片描述 Learn-One-Rule函数

Learn-One-Rule函数的目标是提取一个分类规则,该规则覆盖训练集中的大量正例,没有或仅覆盖少量反例。

Learn-One-Rule函数通过以一种贪心的方式的增长规则来解决指数搜索问题。

它产生一个初始规则r,并不断对该规则求精,直到满足某种终止条件为止。然后修剪该规则,以改进它的泛化误差。

规则增长策略

常见的分类规则增长策略有两种:从一般到特殊和从特殊到一般

  • 在从一般到特殊的策略中,先建立一个初始规则r:{}→y,其中左边是一个空集,右边包含目标类。该规则的质量很差,因为它覆盖训练集中的所有样例。接着加入新的合取项来提高规则的质量,直到满足终止条件为止(例如,加入的合取项已不能提高规则的质量)

  • 对于从特殊到一般的策略,可以随机地选择一个正例作为规则增长的初始种子。再求精步,通过删除规则的一个合取项,使其覆盖更多的正例来范化规则。重复求精步,直到满足终止条件为止(例如,当规则开始覆盖反例时为止)。

在这里插入图片描述
由于规则的贪心的方式增长,上述两种方法可能会产生次优规则。为了避免这种问题,可以采用束状搜索(beam search):算法维护kk个最佳候选规则,个候选规则各自在其前件中添加或删除合取项而独立地增长;评估候选规则的质量,选出kk个最佳候选进入下一轮迭代

评估规则

1.可以使用统计检验剪除覆盖率较低的规则,如我们可以计算下面的似然比统计量

在这里插入图片描述
k是类的个数,fi是被规则覆盖的类ii的样本的观测频率,ei​是规则做随机猜测的期望频率

较大的R值说明该规则做出的正确预测数显著地大于随机猜测的结果
r1比r2好

2.可以使用一种考虑规则覆盖率的评估度量
在这里插入图片描述
n是规则覆盖的样例数,f+​是规则覆盖的正例数,k是类的总数,p+​是正类的先验概率

当p+=1/k时,m估计等价于Laplace度量;如果规则不覆盖任何训练样例,那么Laplace度量减小到1/k,该值等于类符合均匀分布时正类的先验概率;当n=0n=0时,m估计也降到先验概率。然而,当规则的覆盖率很高时,两个度量都渐进地趋向于规则的准确率f+/n

3.可以使用的评估度量是考虑规则的支持度计数的评估度量,如FOIL信息增益

假设规则r:A→ +覆盖p0​个正例和n0个反例,增加新的合取项B,扩展后的规则r′:A∧B→ +覆盖p1个正例和n1个反例,于是
在这里插入图片描述
由于该度量正比于p1​和p1/(p1+n1),所以它更倾向于选择那些高支持度计数和高准确率的规则

规则剪枝

可以对Learn-One-Rule函数产生的规则进行减枝,以改善它们的泛化误差。

五、文档参考链接

https://blog.csdn.net/qq_38204302/article/details/104532905
https://www.cnblogs.com/zengzhihua/p/5458373.html
https://blog.csdn.net/huguozhiengr/article/details/82856549
https://blog.csdn.net/sjpz0124/article/details/45980623
https://blog.csdn.net/weixin_42555080/article/details/91401493

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值