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

📅  最后修改于: 2021-01-11 06:30:56             🧑  作者: Mango


IF-THEN规则

基于规则的分类器利用一组IF-THEN规则进行分类。我们可以从以下表达规则-

如果条件然后结论

让我们考虑一个规则R1,

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

要记住的要点-

  • 规则的IF部分称为规则前提前提条件

  • 规则的THEN部分称为规则后继

  • 条件的前一部分由一个或多个属性测试组成,并且这些测试在逻辑上进行“与”运算。

  • 结果部分包括类预测。

注意-我们还可以如下编写规则R1-

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

如果条件对于给定的元组成立,则满足先决条件。

规则提取

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

要记住的要点-

从决策树中提取规则-

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

  • 为了形成规则的先决条件,每个分割条件都进行逻辑“与”运算。

  • 叶节点保存类预测,从而形成规则。

使用顺序覆盖算法的规则归纳

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

一些顺序覆盖算法是AQ,CN2和RIPPER。按照一般策略,一次学习一个规则。每次学习规则时,规则所覆盖的元组都会被删除,其余的元组将继续该过程。这是因为决策树中每个叶子的路径都对应一个规则。

–决策树归纳可以视为同时学习一组规则。

以下是顺序学习算法,其中一次学习一个类别的规则。从类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覆盖的正元组数。

-该值将随着修剪集上R的精度而增加。因此,如果R的修剪版本的FOIL_Prune值较高,则我们修剪R。