Data Mining 简明教程

Data Mining - Rule Based Classification

IF-THEN Rules

基于规则的分类器使用了一系列的 IF-THEN 规则来进行分类。我们可以使用下面的方式表达规则:

让我们考虑规则 R1,

R1: IF age = youth AND student = yes
   THEN buy_computer = yes

Points to remember −

  1. 规则的 IF 部分称为 rule antecedentprecondition

  2. 规则的 THEN 部分称为 rule consequent

  3. 条件的前提部分包括一个或多个属性测试,并且这些测试在逻辑上是 AND 关系。

  4. 结果部分包括类预测。

Note − 我们还可以将规则 R1 写成:

R1: (age = youth) ^ (student = yes))(buys computer = yes)

如果一个给定的元组的条件成立,则前件得到满足。

Rule Extraction

这里我们将学习如何通过从决策树中提取 IF-THEN 规则来构建基于规则的分类器。

Points to remember −

从决策树中提取规则的步骤:

  1. 为从根节点到叶节点的每条路径创建一个规则。

  2. 要形成规则前件,每个分裂标准在逻辑上都是 ANDed。

  3. 叶节点持有类预测,形成规则结果。

Rule Induction Using Sequential Covering Algorithm

顺序覆盖算法可用于提取 IF-THEN 规则形成训练数据。我们不需要首先生成决策树。在此算法中,给定类的每个规则都涵盖了该类的许多元组。

一些顺序覆盖算法是 AQ、CN2 和 RIPPER。根据一般策略,规则是一次学到的。每次规则被学到时,规则所覆盖的元组都会被移除并继续处理剩余的元组。这是因为决策树中到每个叶子的路径都对应一条规则。

Note - 决策树归纳可以被认为是同时学习一组规则。

以下是用于一次为一个类学习规则的顺序学习算法。当从类 Ci 中学习规则时,我们希望规则仅涵盖类 C 中的所有元组,而不涵盖其他类的元组。

Algorithm: Sequential Covering

Input:
D, a data set class-labeled tuples,
Att_vals, the set of all attributes and their possible values.

Output:  A Set of IF-THEN rules.
Method:
Rule_set={ }; // initial set of rules learned is empty

for each class c do

   repeat
      Rule = Learn_One_Rule(D, Att_valls, c);
      remove tuples covered by Rule form D;
   until termination condition;

   Rule_set=Rule_set+Rule; // add a new rule to rule-set
end for
return Rule_Set;

Rule Pruning

由于以下原因,对规则进行剪枝 -

  1. 质量评估是在原始的训练数据集上进行的。该规则在训练数据上可能表现良好,但在后续数据上的表现较差。这就是需要规则剪枝的原因。

  2. 通过移除合取条件对规则进行剪枝。如果 R 的剪枝版本比在独立元组集上评估的版本具有更高的质量,则对规则 R 进行剪枝。

FOIL 是用于规则剪枝的一种简单有效的方法。对于给定的规则 R,

其中 pos 和 neg 分别是 R 涵盖的正元组的数量。

Note - 此值将随着 R 在剪枝集上的准确性而增加。因此,如果剪枝后的版本 R 的 FOIL_Prune 值较高,则剪枝 R。