规则学习算法

规则学习(独立而治之)

决策树会给任务带来一组特定的偏差,而规则学习可通过直接识别规则而避免偏差。规则学习通常应用于以名义特征为主或全部是名义特征的问题,规则学习擅长识别偶发事件,即使偶发事件只是因为特征之间非常特殊的相互作用才发生的

决策树必须从上至下的应用,而规则是单独存在的事实。根据相同数据建立的模型,规则学习的结果往往比决策树的结果更加简洁、直观、容易理解。规则学习算法数据的利用基于先到先得思想,但规则学习算法的规则只有在准确时才有用

单规则(1R)算法:

简单规则通常极具预测性,通过选择一个单一规则来提高ZeroR算法(规则学习)的性能。即对于每一个特征,基于相同|相似的特征值1R对数据分组(针对每一个数据分组,算法的预测类为占多数的类)。规则错误率的计算基于每一个特征,将犯最少错误的规则选为唯一的规则

重复增量修剪算法RIPPER(生长-修剪-优化):

RIPPER算法是规则学习算法经过多次迭代后进化而来,性能与决策树相当,甚至超过决策树。优点:生成易于理解的,人类可读的规则;对大数据集和噪声数据有效;通常比决策树产生的模型更简单

缺点:可能会产生违反常理或专家知识的规则;处理数值型数据不太理想;性能有可能不如更复杂的模型

生长过程采用独立而治之技术,对规则不断地添加条件,直到该规则能完全划分出一个数据子集或没有属性可用于下一步分割,与决策树相似信息增益可用于决定下一个分割属性,当增加一个特征规则而熵值不再减小,该规则需要立即修剪,重复第一步+第二步,直到达到一个停止准则

#RWeka包中称为OneR()函数实现1R算法

library(RWeka)
m<-OneR(class~predictors,data=mydata);
#class目标变量,predictors预测变量+分隔,函数返回一个1R模拟对象,该对象能够用于预测
#查看该算法创建的规则
m
#获得关于OneR分类器的更多统计信息
summary(m)	#包含混淆矩阵

p<-predit(m,test)
#test包含测试数据的数据框,两者有同样的特征,返回含有预测类别值的向量

对于更加复杂的规则学习算法,使用JRip()函数,一个基于java实现的RIPPER规则学习算法,使用方法同上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章