📜  开膛手算法

📅  最后修改于: 2022-05-13 01:58:08.002000             🧑  作者: Mango

开膛手算法

开膛手算法:

它是R epeatedncremental P乳宁为P roduceèRROR [R排出。开膛手算法是一种 基于规则的分类算法。它从训练集派生出一组规则。它是一种广泛使用的规则归纳算法。

开膛手算法的用途:

  1. 它适用于具有不平衡类分布的数据集。在一个数据集中,如果我们有几条记录,其中大部分记录属于特定类别,而其余记录属于不同类别,则称该数据集具有不平衡的类别分布。
  2. 它适用于嘈杂的数据集,因为它使用验证集防止模型过度拟合

RIPPER的工作

案例一:训练记录只属于两个班级

在给出的记录中,它识别出多数类(出现次数最多的类)并将该类作为默认类。例如:如果有 100 条记录,其中 80 条属于 A 类,20 条属于 B 类。那么 A 类将是默认类。



对于另一个类,它尝试学习/推导各种规则来检测该类。

案例二:训练记录有两个以上的班级(多班级)

考虑所有可用的类,然后根据它们的频率以特定顺序(例如增加)排列它们。

考虑课程安排为 -

C1,C2,C3,......,Cn
C1 - least frequent
Cn - most frequent

具有最大频率(Cn)的类作为默认类

规则是如何推导出来的:

首先,它尝试为属于类 C1 的那些记录派生规则。属于 C1 的记录将被视为正例(+ve) ,其他类将被视为负例(-ve)。

顺序覆盖算法用于生成区分 +ve 和 -ve 示例的规则。



接下来,在这个连接点,Ripper 尝试为 C2 派生规则以将其与其他类区分开来。

重复这个过程直到停止标准 满足,即 - 当我们剩下 Cn(默认类)时。

  • Ripper 将规则从少数类提取到多数类。

RIPPER 算法中的规则增长:

  • Ripper 使用通用到特定策略的增长规则。它从一个空规则开始,并继续将最佳合取添加到规则先行词中。
  • 对于连接的评估,选择的度量是FOIL 的信息增益。使用此选择最佳连接。
  • 停止添加连词的标准 - 当规则开始覆盖否定 (-ve) 示例时。
  • 新规则根据其在验证集上的表现进行修剪。

使用 RIPPER 进行规则修剪:

我们需要确定是否应该修剪特定规则。为了确定这一点,使用了一个指标,即——

(P-N)/(P+N)

P = number of positive examples in the validation set covered by the rule.
N = number of negative examples in the validation set covered by the rule.
  • 每当添加或删除连接词时,我们都会计算原始规则(添加/删除之前)和新规则(添加/删除之后)的上述度量值。
  • 如果新规则的值比原始规则好,那么我们可以添加/删除连接。否则,不会添加/删除连接词。
  • 修剪从最右端开始。例如:考虑一个规则——
ABCD ---> Y ,where A,B,C,D are conjuncts and Y is the class.

First it will remove the conjunct D and measure the metric value. If the quality of the 
metric is improved the conjunct D is removed.

If the quality does not improve then the pruning is checked for CD,BCD and so on.

在 RIPPER 算法中构建规则集:

  • 推导出规则后,该规则覆盖的所有正反例都将被剔除。
  • 然后将规则添加到规则集中,直到它不违反停止条件。我们可以使用的停止标准是——

A) 最小描述长度原则:为了将信息从一端传输到另一端,您需要最少的比特数。我们希望使用最少的位数来表示规则。如果新规则将规则集的总描述长度增加了d位(默认d为 64 位),则 RIPPER 停止向规则集中添加规则。

B) 错误率——我们将考虑规则并计算它的错误率(误分类)wrt 验证集。特定规则的错误率不应超过 50%。

这就是 RIPPER 算法的工作原理。如有任何疑问,请在下方留言。