📅  最后修改于: 2021-01-11 06:30:56             🧑  作者: Mango
基于规则的分类器利用一组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,
其中pos和neg分别是R覆盖的正元组数。
注-该值将随着修剪集上R的精度而增加。因此,如果R的修剪版本的FOIL_Prune值较高,则我们修剪R。