数据挖掘 - 基于规则的分类

  • IF-THEN 规则

    基于规则的分类器使用一组 IF-THEN 规则进行分类。我们可以从以下表达规则 -
    IF 条件 THEN 结论
    让我们考虑一个规则 R1,
    
    R1: IF age = youth AND student = yes 
       THEN buy_computer = yes
    
    要记住的要点 −
    • 规则的 IF 部分称为先行规则或者precondition.
    • 规则的 THEN 部分称为规则结果.
    • 条件的先行部分由一个或多个属性测试组成,并且这些测试是逻辑与的。
    • 后续部分包括类别预测。
    Note- 我们也可以将规则 R1 编写如下 -
    
    R1: (age = youth) ^ (student = yes))(buys computer = yes)
    
    如果条件对给定的元组成立,则满足前件。
  • 规则提取

    在这里,我们将学习如何通过从决策树中提取 IF-THEN 规则来构建基于规则的分类器。
    Points to remember −
    从决策树中提取规则 -
    • 为从根到叶节点的每条路径创建一个规则。
    • 为了形成一个规则前件,每个分割标准都是逻辑与的。
    • 叶节点保存类预测,形成规则结果。
  • 使用顺序覆盖算法的规则归纳

    顺序覆盖算法可用于从训练数据中提取 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;
    
  • 规则修剪

    该规则被修剪是由于以下原因 -
    • 质量评估是在原始训练数据集上进行的。该规则可能在训练数据上表现良好,但在后续数据上表现不佳。这就是为什么需要规则修剪的原因。
    • 通过删除连接来修剪规则。如果 R 的修剪版本的质量高于在独立元组集上评估的质量,则规则 R 被修剪。
    FOIL是一种简单有效的规则剪枝方法。对于给定的规则 R,
    FOIL_Prune = pos - neg / pos + neg
    其中 pos 和 neg 分别是 R 覆盖的正元组的数量。
    Note− 该值将随着修剪集上 R 的准确度而增加。因此,如果 R 的修剪版本的 FOIL_Prune 值更高,则我们修剪 R。