本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
RIpple-DOwn Rule算法简介
RIpple-DOwn Rule算法(链波下降规则)是一种专家系统方法论,它是澳大利亚新南威尔士大学的Compton教授于1989年提出。它是一种用于知识表示和获取的方法。从某种意义上看RDR算法是CBR方法的一种扩展或者变形,RDR将规则引入CBR中,用规则来索引案例,以错误驱动机制来获取知识。
RIpple-DOwn Rule算法是比较简单,有时候得出的结果不能让人满意,但是它是我最喜欢的一种算法,它通过否定规则来表示结果,非常适合人类理解。
RIpple-DOwn Rule算法流程
RIpple-DOwn Rule算法使用了二元决策树,区别于标准决策树,RDR用复合条款是来确定分支,同时这些条款不需要详尽涵盖所有情况,即可以有分类错误的情况,然后用错误的数据作为新整体再处理,以获得内部分支。
为了方便说明,我们先看一个RDR的输出
这是一个医学诊断系统的涟波规则。
我们还是以weather.arff的数据为例。
看一下我们的分类要求,要分成no和yes两类。
no 的权重是5,yes的权重是9。
由错误驱动生成第一条规则
play = no
很明显这条规则没有正确分类
总共14个样本,有9个被分类错了。
再来生成内规则。
生成过程就省略了…请参考本文最后的参考文献。第二条规则是
Except (humidity <= 82.5) => play = yes
序号为6的数据被错误分类为play了.最终的规则是
play = no
Except (humidity <= 82.5) => play = yes
最终的规则分类正确10个,错误4个,正确率71.4286 %。
比较图如下:
左边是分类结果,右边是原始结果。
使用Weka实现RDR算法
在weka中RDR算法对应的类是Rider,我使用的是3.6,3.7版本没有找个类了…
核心代码:
使用:
还是使用weather数据,完整代码如下:
结果:
相关参考
没有细致的介绍RIpple-DOwn Rule算法主要是因为这个算法虽然简单,但实现方法比较多,又涉及到拓扑和集合运算,有兴趣的可以参考一下:
Induction of Ripple-Down Rules Applied to Modeling Large Databases
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯