【机器学习】八、规则学习

知识图谱与基本概念在这里插入图片描述

基本概念

规则学习定义:从训练数据中学习出一组能用于对未见示例进行判别的规则

规则定义:规则一般是:语义明确、能描述数据分布所隐含的客观规律或领域概念。

逻辑规则定义⊕←?1?2?3…⋀??⊕←f_1⋀f_2⋀f_3…⋀f_L

  右侧为规则体:由L个逻辑文字组成的合取式。

  左侧为规则头:逻辑文字组成的目标类别或概念。

规则集:若干个逻辑规则组成的集合成为规则集。

两种逻辑规则:

命题规则:由”原子命题”和逻辑连接词 与、或、非和蕴含构成的简单陈述句(if-then规则)。

  rule1:鱼类← ← (胎生 = no) ∧ (在水里生活 = yes)

  rule2:鸟类← ← (胎生 = no) ∧ (会飞 = yes)

一阶规则:描述事物的属性和关系,称为关系型规则,额外包含了断言和量化。

解决问题的思路

目标:(贪心)找到一个规则集,这个规则集尽可能多的覆盖样例。

分类过程总结

通过规则集对未见示例进行分类的时候,我们每条逻辑规则都可以看做是一个子模型,规则集就是这些子模型的集合,将规则集与未见实例进行匹配,若匹配成功(满足规则体中的所有条件)则实例被预测为正例,若都不匹配则为负例。

问题

如果一个示例被多条逻辑规则覆盖时,判别发生了冲突?

冲突消解

投票法:将判别类别相同的规则数最多的结果作为判别结果。

排序法:带序规则学习/优先级规则学习:排序靠前的规则判定结果为准。

序贯覆盖

基本思想是什么?

逐条归纳(穷尽)的思想:通过贪心搜索的方法来获得规则集,直到:规则覆盖所有正例,未覆盖任何反例。

重要性:几乎所有的规则学习算法,都是以它作为基本框架。

穷尽搜索的逻辑过程

1.  空规则开始,正例类别作为规则头,再逐个遍历训练集中的每个属性与属性取值。

2. 尝试将其属性取值的逻辑文字增加到规则体中,如果当前规则体仅覆盖正例,学到一条规则。

3. 去除这条规则覆盖的正例,以剩下的样例组成训练集,再重复上述规则生成的过程。

出现一个问题

如果属性和属性取值对应的维度非常大呢?组合爆炸。

生成规则的策略

自顶向下(top-down):特化过程,容易产生泛化能力较好的规则,鲁棒性较好,广泛使用。

自底向上(bottom-top):泛化过程,适合样本较少的情况。

自顶向下

思想:添加新文字以缩小规则覆盖范围,直到满足预定的条件为止。

1. 空规则开始,逐一(属性,属性取值)作为原子命题,基于训练集准确率来评估。

2. 选出准确率最高的原子命题及其覆盖的样例,进入下一轮评估,若全部覆盖,则生成

  单条规则,对剩余的样例再做上述规则生成过程。

注:评估优先级顺序:准确率>覆盖样例数>属性次序

自底向上:直接将某样例的属性取值形成规则,作为特殊规则,再泛化。

贯覆盖的拓展与问题

多分类问题。

  例如:3分类(A,B,C)问题,将A作为正例,BC作为反例,同样B作为正例,AC作为反例。

避免局部最优-提出的集束搜索。

  通常仅考虑一个“最优”文字,这种过于贪心的思想容易导致陷于局部最优。

  集束搜索:保留最优的b个逻辑文字。

过拟合风险-存在不必要的约束条件。

  剪枝优化-(预剪枝、后剪枝)

剪枝优化

预剪枝

       通过信息增益准则确定划分属性,验证集来剪枝

       1. 信息增益准则确定划分属性

       2. 通过验证集,划分前后的对比,确定是否要预剪枝。

       3. 重复1,2过程,直到禁止划分(贪心:禁止划分,存在欠拟合风险)

决策树规则

定义:将学习到的决策树,从树的根节点到每个叶节点是一条规则,很容易转换成“if-then”形式的规则。

生成过程:其规则的建立依赖于树的生成,树的建立过程是对整个空间的递归划分、建立局部模型的过程,往往比较耗时。

规则归纳(规则学习方法)与决策树规则区别

相同点:(在构造规则过程中)

  1. 通过属性的信息增益不断地添加规则。

  2. 通过剪枝对规则进行裁剪。

不同点:

            1. 不需要建立搜索树而是采用深度优先搜索策略直接从数据集生成规则且每次生成一条(算法效率提高)。

CN2

1989年提出引入显著性校验。

似然率统计量的信息量指标:在预剪枝过程中,衡量规则集覆盖样例的分布与训练集经验分布的差别。

LRS越大:规则集预测与训练集经验分布的差别越大。

LRS越小:说明规则集的效果越可能仅是偶然现象。

通常设置LRS>0.99,作为CN2算法收敛的阈值。

REPReduced Error Pruning

1991年提出。思想:后剪枝的策略(对规则集剪枝)

1. 将样例分为训练集(生长集)和测试集(剪枝集),基于准确度贪心生成全部的规则集合。

2. 穷举所有的剪枝操作(删除规则中某个文字/删除规则结尾文字/删除规则尾部多个文字/删除整体规则),进行多轮剪枝,验证集评估。

3. 直到:无法通过剪枝提高验证集准确性。

总结:非常有效,但是复杂度

IREPIncremental REP

1994年提出。思想:后剪枝的策略(对单条规则剪枝)

1. 将样例分为训练集(生长集)和测试集(剪枝集),在训练集上生成一条规则r。

2. 立即对这条规则r在验证集上对其进行REP剪枝,得到规则r’。

3. 将r’覆盖的样例去除, 在更新后的样例集上重复上述过程。

IREP*

1994年提出

IREP*:修改规则性能度量指标,替换IREP的准确率评估方法(增加了对反例的评估指标)。

RIPPER

1995年提出IREP*剪枝与后处理优化结合。泛化能力、速度还是比大多数决策树算法更佳。

1. 对于规则集中每条规则r,RIPPER为它生成两个变体(替换规则与修订规则):

  a. 基于每条规则r覆盖的样例,用IREP*重新生成一条规则,作为替换规则。

  b. 对每条规则r增加文字进行特化,再用IREP*剪枝生成一条规则,成为修订规则。

2. 原规则集、替换规则集、修订规则集,选择最优的规则集保留下来。

RIPPER成功之处

由于最初生成的规则集,每条规则都没有对其后产生的规则加以考虑,这样的贪心算法很容易导致陷入局部最优。

  解决方案:增加后处理优化部分,将所有规则放在一起,重新加以优化,通过全局的考虑来缓解贪心算法的局部性。

归纳逻辑程序设计

ILP Inductive Logic Programming,归纳逻辑程序

引入:函数与逻辑表达式嵌套

作用:机器学习系统具备了的很强的表达能力,在先验知识的逻辑程序归纳。其学到的规则,可被PROLOG等逻辑程序设计语言直接使用。

LGGLeast General Generalization,最小一般泛化)

主要思想:自底向上的规则生成策略,将“特殊”规则转变为“一般”规则。

实现步骤:直接将一个或者多个正例所对应的具体事实作为初始规则,再对规则逐步进行泛化以增加其对样例的覆盖率。其中泛化操作:其实就是常量替换为逻辑变量,或者删除规则体中的逻辑文字。

逆归结

归纳思想:从个别事物出发,概括一般性规律。

主要思想:将貌似复杂的逻辑规则与背景知识联系起来化繁为简,基于背景知识来设计新的概念和关系。

  比如抽象出一种新概念:以西瓜为例,西瓜更甜?日晒更多?更新鲜?需要结合背景知识来确定。

推荐阅读

RIPPER

RIPPER论文:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.8204

RIPPER代码:https://www.researchgate.net/figure/The-RIPPER-Algorithm-Cohen-1995_fig2_234828100

  依然是命题规则学习的最高水平

局限性

问题规模稍大就很大去应对。现阶段,更多的研究会把规则学习与统计学习相结合

统计关系模型

书籍:introduction to statistical relational learning

PRM(概率关系模型):Learning Probabilistic Relational Models(https://ieeexplore.ieee.org/document/6278195?arnumber=6278195)

  允许对象的属性在概率上依赖于其他属性和相关对象属性

MLN(马尔科夫逻辑网):Markov logic network( https://en.wikipedia.org/wiki/Markov_logic_network )

  马尔科夫网络思想应用于一阶逻辑,去实现不确定的推理。

应用:

在dblp数据上,预测怎么样的文章容易被发表和引用。

判断电影在上映后的一个星期里,会不会票房达到100万。

金融欺诈:想法就是和诈骗犯相关的人,估计也是诈骗犯。

建议

数据集分析的先验知识下,利用逆归结、自顶向下、自底向上的思想去抽象一些普遍的逻辑规则和特征,帮助我们更好的分析问题。

参考链接:https://blog.csdn.net/tonydz0523/article/details/84673793

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任意注册漏洞

目录 一漏洞介绍 二实战演示 三漏洞修复 本文由掌控安全学院 - 小博 投稿 一漏洞介绍 1.未验证邮箱/手机号 情景:应用为了方便用户记录用户名,使用邮箱和手机号作为用户名(因此很多应用在注册的时候就要求用户填写,多数时候…

CTFSHOW -SQL 注入

重新来做一遍 争取不看wp 还是看了。。。。 CTFshow sql注入 上篇(web171-220)更新中 - 掘金 【精选】CTFshow-WEB入门-SQL注入(上)_having盲注_bfengj的博客-CSDN博客 web171 基本联合注入 拿到题目我们已经知道了是sql注入 所以我们可以直接开始 第一题 不会难道哪里去…

Pytorch常用的函数(四)深度学习中常见的上采样方法总结

Pytorch常用的函数(四)深度学习中常见的上采样方法总结 我们知道在深度学习中下采样的方式比较常用的有两种: 池化 步长为2的卷积 而在上采样过程中常用的方式有三种: 插值 反池化 反卷积 不论是语义分割、目标检测还是三维重建等模型&#xff0…

ios 对话框 弹框,输入对话框 普通对话框

1 普通对话框 UIAlertController* alert [UIAlertController alertControllerWithTitle:"a" message:"alert12222fdsfs" pr…

企业大楼门禁,千万不要这么管理!太慢了!

随着社会科技的飞速发展,安全管理已经成为各行业关注的焦点之一。在这个信息化时代,门禁监控系统作为一种全面提升安全性、管理效率的关键工具,逐渐成为企事业单位、学校、医疗机构等场所的不可或缺的一部分。 传统的门禁系统已经无法满足现代…

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时 文章目录 导入库定时器初始化延时函数定时中断回调调用函数打包附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 首先 这个定时器是硬件底层级别的 优先级最高 如果调用 会导致GN…

JavaScript库:jQuery,简化编程

jQuery介绍 官方网站: https://jquery.com jQuery 是一个 JavaScript 库 。极大地简化了 JavaScript 编程,例如 JS 原生代码几十行 实现的功 能, jQuery 可能一两行就可以实现,因此得到前端程序猿广泛应用。(现在处在比较边…

IO数据采集卡

串口modbus rtu 网口

微信自动添加好友

简要描述: 添加微信好友 请求URL: http://域名地址/addUser 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId…

记一次 .NET 某券商论坛系统 卡死分析

一:背景 1. 讲故事 前几个月有位朋友找到我,说他们的的web程序没有响应了,而且监控发现线程数特别高,内存也特别大,让我帮忙看一下怎么回事,现在回过头来几经波折,回味价值太浓了。 二&#…

性能测试?

一、什么是性能测试 先看下百度百科对它的定义 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试 我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能…

MySQL是如何进行排序的,ORDER BY是如何执行的

MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。 假设找出在杭州居住的人,按名字排序前1000个人(假设city有索引,那么非常舒服,不用全表扫描) select city,name,age from t where city杭州 or…

在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?

文章目录 前言不过,时过境迁,QVTKOpenGLWidget用的越来越少,官方推荐使用qvtkopengnativewidget代替QVTKOpenGLWidget 前言 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,我们要使用QVTKOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢? 不过,时过境迁,Q…

【ML】欠拟合和过拟合的一些判别和优化方法(吴恩达机器学习笔记)

吴恩达老师的机器学习教程笔记 减少误差的一些方法 获得更多的训练实例——解决高方差尝试减少特征的数量——解决高方差尝试获得更多的特征——解决高偏差尝试增加多项式特征——解决高偏差尝试减少正则化程度 λ——解决高偏差尝试增加正则化程度 λ——解决高方差 什么是…

Zookeeper概述

ZooKeeper概述 1 分布式应用程序2 分布式应用程序的特点3 Apache ZooKeeper简介4 ZooKeeper客户端 - 服务器架构5 ZooKeeper 分层命名空间6 Zookeeper 工作流7 ZooKeeper 选举机制7.1 ZooKeeper选举概述7.1.1 两种情况分析 7.2 选举实现细节 8 FastLeaderElection:选…

Maven 的 spring-boot-maven-plugin 红色报错

1、想要处理此情况&#xff0c;在工具下面加上指定的版本号。 2、给自己的maven的setting文件加工一下。 <mirrors><!--阿里云镜像1--><mirror><id>aliyunId</id><mirrorOf>central</mirrorOf><name>aliyun maven</name>…

数据分析法宝,一个 SQL 语句查询多个异构数据源

随着企业数据量呈现出爆炸式增长&#xff0c;跨部门、跨应用、跨平台的数据交互需求越来越频繁&#xff0c;传统的数据查询方式已经难以满足这些需求。同时&#xff0c;不同数据库系统之间的数据格式、查询语言等都存在差异&#xff0c;直接进行跨库查询十分困难。 原生跨库查…

RabbitMQ 核心部分之简单模式和工作模式

文章目录 一、Hello World&#xff08;简单&#xff09;模式1.导入依赖2.消息生产者3.消息消费者 二、Work Queues&#xff08;工作&#xff09;模式1.抽取工具类2.启动两个工作线程3.启动一个发送线程4.结果 总结 一、Hello World&#xff08;简单&#xff09;模式 在下图中&…

菜单栏管理软件 Bartender 3 mac中文版功能介绍

​Bartender 3 mac是一款菜单栏管理软件&#xff0c;该软件可以将指定的程序图标隐藏起来&#xff0c;需要时呼出即可。 Bartender 3 mac功能介绍 Bartender 3完全支持macOS Sierra和High Sierra。 更新了macOS High Sierra的用户界面 酒吧现在显示在菜单栏中&#xff0c;使其…

基于JavaWeb+SpringBoot+Vue摩托车商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue摩托车商城微信小程序系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 近年来&#xff0c;随着移动互联网的快速发展&#xff0c;电子商务越来越受到…