使用IF-THEN规则分类
一个IF-THEN规则:
IF 条件 THEN 结论
例子:
R:IF age=youth AND student=yes THEN buys_computer=yes
或
R:(age=youth)∧(student=yes)=>(buys_computer=yes)
规则前件:也称为前提,是由一个或多个用逻辑连接词连接的属性测试组成,R中指 age=youth AND student=yes。
规则的结论:包含一个类预测,R中指buys_computer=yes。
对于给定的元组,如果规则前件中的条件都成立,则我们说规则前件被满足,并且规则覆盖了该元组。
覆盖率和准确率
规则的两个评估指数:
这里的n covers为规则R覆盖的元组数,n correct为R正确分类的元组数,|D|是数据集D中元组数。
一些名词:
如果规则被元组X满足,则称该规则被 触发。
如果R是唯一被元组X满足的规则,则该规则 激活。
触发可能意味着多个规则被同时满足,这样就可能存在一定的问题:
- 如果被触发的多个规则指向不同的类
解决这个问题的核心思想,就是需要对不同规则进行优先级排序,取优先级高的规则所对应的类别作为元组的分类。
两种解决方案:
- 规模序:把最高优先级权赋予具有“最苛刻”要求的被触发的规则,其中苛刻性用规则前件的规模度量。也就是说,激活具有最多属性测试的被触发的规则。
- 规则序:指预先确定规则的优先次序。这种序的确定可以基于两种方法:基于类的序和基于规则的序
- 基于类的序
根据类的重要性来对规则进行排序。即最重要的类对应的规则先出现,次重要的类对应的规则紧接着出现,以此类推。对于类的重要性的衡量标准有很多,比如类的普遍性、误分类代价等。需要注意的是,在每个类中的规则是不需要排序的。 - 基于规则的序
根据规则的质量进行度量。这种规则的质量可以是准确度、覆盖率或规模等。通过规则的质量将不同的规则组织成一个优先权列表。在使用规则序时,规则集称为决策表。使用规则序,最先出现在决策表中的被触发的规则具有最高优先权,因此激活它的类预测。
- 基于类的序
- 如果没有规则被触发
对于这种情况,可以建立一个缺省或默认规则,根据训练集指定一个默认类。这个类可以是多数类,也可以是不被任何规则覆盖的元组的多数类。