什么是RIPPER算法?


这是一种广泛使用的称为RIPPER的规则归纳算法。该算法几乎可以线性扩展到多个训练实例,并且特别适合于从具有过载类分布的数据集中构建模型。RIPPER 也适用于噪声数据集,因为它使用验证集来防止模型过拟合。

RIPPER 选择多数类作为其默认类,并理解识别少数类的规则。对于多类问题,类按其频率排序。

令(y1 y2...yc) 为有序类,其中 y1 是频率最低的类,yc 是频率最高的类。在第一次迭代中,属于 y1 的实例被标记为正例,而属于其他类的实例被标记为负例。

可以使用顺序覆盖方法生成区分正例和负例的规则。接下来,RIPPER 提取区分 y2 与其他剩余类的规则。重复此过程,直到我们剩下 yc,它被指定为默认类。

RIPPER 使用从一般到特定的方法来扩展规则,并使用 FOIL 的数据增益度量来选择要插入规则前件的最佳合取。当规则开始覆盖负例时,它停止插入合取。

根据新规则在验证集上的实现对其进行剪枝。计算以下指标以确定是否需要剪枝:(p-n)/(p+n),其中 p(n) 是验证集中被规则覆盖的正(负)例的数量。

此指标与规则在验证集上的准确率呈单调关系。如果剪枝后指标得到增强,则消除合取。剪枝从插入规则的最后一个合取开始完成。例如,给定规则 ABCD → y,RIPPER 首先检查是否应剪枝 D,然后检查 CD、BCD 等。虽然初始规则仅覆盖正例,但剪枝后的规则可以在训练集中覆盖多个负例。

创建规则后,将删除规则覆盖的一些正例和负例。然后将规则添加到规则集中,只要它不违反停止条件,该条件基于最小描述长度原理。

如果新规则将规则集的总表示长度至少提高 d 位,则 RIPPER 停止将规则插入其规则集(默认情况下,d 选择为 64 位)。RIPPER 使用的另一个停止条件是规则在验证集上的错误率不得超过 50%。RIPPER 实施更多优化步骤来确定规则集中的一些现有规则是否可以由更多替代规则恢复。

更新于: 2022年2月11日

1K+ 次查看

开启您的职业生涯

通过完成课程获得认证

开始学习
广告