开膛手算法
开膛手算法:
它是R epeated我ncremental P乳宁为P roduceèRROR [R排出。开膛手算法是一种 基于规则的分类算法。它从训练集派生出一组规则。它是一种广泛使用的规则归纳算法。
开膛手算法的用途:
- 它适用于具有不平衡类分布的数据集。在一个数据集中,如果我们有几条记录,其中大部分记录属于特定类别,而其余记录属于不同类别,则称该数据集具有不平衡的类别分布。
- 它适用于嘈杂的数据集,因为它使用验证集来防止模型过度拟合。
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 算法的工作原理。如有任何疑问,请在下方留言。