机器学习第15章-规则学习
以下列出我觉得重要,在编码的思路中可以参考的地方
冲突消融
当一条规则的判断出现不同的结果时,解决冲突的方法
1.投票法
2.排序法
3.无规则法
序贯覆盖
生成规则过程中去除当前规则所能覆盖的数据
生成方式
自顶向下,generate then test,specialization特化,规则逐渐变长
自底向上,data-drive,generalization泛化,规则逐渐变短
剪枝优化
可以参考关联规则算法的剪枝策略
1.LRS公式。规则集合不断增长,用LRS公式观测规则集合预测的结果与实际值的差距,只有满足阈值才停止生成规则
2.REP剪枝。删除某个元素,生成不同的规则集,对比不同的规则集的预测效果,选择最后的集合进行下一轮的剪枝,直到剪枝无法提升准确率为止
3.IREP剪枝。每生成一条规则,就做一次剪枝,删除某个元素,生成不同的规则,选择最后的那条添加到规则集合当中,并且去除这条规则覆盖的数据(序贯覆盖),继续剪枝
4.RIPPER剪枝。首先用IREP生成一个规则集合R,再用替换的规则内容和增加候选文字生成R'和R'',R和R'和R''中的内容要去重,不能有重复的。然后比较三个集合的性能,选出最好的添加到最后的规则集合当中。并且去除这个集合覆盖的数据(序贯覆盖),继续剪枝
FOIL信息增益
是自顶向下生成规则的一种度量方式,也是一种信息增益
^中的值表示的是原规则覆盖数据集的分布情况,不带^表示的是拓展规则以后 (增加候选文字),当前规则的分布情况
归纳逻辑程序设计
也称作最小一般泛化,是一种自底向上的方法
对规则逐步泛化,常量替换为逻辑变量,或者删除规则中的某个条件
值的借鉴的地方
在知识图谱中
1.可以在原规则的基础上通过一些替换谓词或者替换变量或者增删变量的操作生成规则,这样可以减少生成规则所需遍历的时间。
2.生成规则的过程中去除覆盖的数据。联想关联规则中CBA算法当中剪枝的操作
3.自顶向上和自底向下两种方式的结合
4.用FOIL信息增益评判规则拓展以后相较于原来的那条规则性能上的区别
5.对生成的规则或者规则集合进行剪枝优化
相关内容可参考西瓜书第15章
另外,可以参考这两个网页
知识图谱推理FOIL - 庚瘤君 - 博客园 (cnblogs.com)
该网页中生成负样本的思路值得参考。只能在已知两个实体的关系且确定其关系与目标谓词相悖时, 才能将这两个实体用于构建目标谓词的反例, 而不能在不知两个实体可否满足目标谓词前提下将它们来构造目标谓词的反例。
该网页展示了许多规则分类当中的概念。生成规则的过程中,可以采用顺序覆盖,先生成一条规则满足部分数据,再生成其他的满足其他的数据。其中规则评估当中提出了几条公式,可以用这几条公式评估规则的质量,评估规则的信息增益。
671aa284-e3a1-4018-9364-efbba0f993b4