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

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

基本概念

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

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

逻辑规则定义⊕←?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.rhkb.cn/news/190160.html

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

相关文章

下载并安装DevEco Studio 3.1,初尝鸿蒙编程

摘自华为官网 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发,提供了代码智能编辑、低代码开发、双向预览等功能,以及轻量构建工具DevEco Hvigor 、本地模拟器,持续提升应用及服务开发效率。 下载 官网下载地址 HUAWEI…

理解快速排序

理解快速排序 首先了解以下快速排序 快速排序(QuickSort)是一种常用的排序算法,属于比较排序算法的一种。它是由英国计算机科学家Tony Hoare于1960年提出的,是一种分而治之(divide and conquer)的算法。 …

模拟ASP.NET Core MVC设计与实现

前几天有人在我的《ASP.NET Core框架揭秘》读者群跟我留言说:“我最近在看ASP.NET Core MVC的源代码,发现整个系统太复杂,涉及的东西太多,完全找不到方向,你能不能按照《200行代码,7个对象——让你了解ASP.…

css实现进度条

预期样式 方法一 <script setup> import { ref } from "vue"; // import ScreenLeft from "./ScreenLeft/index.vue"; const width ref("76.5%"); </script><template>Screen<div class"progress-contain">…

详解数据仓库之拉链表(原理、设计以及在Hive中的实现)

最近发现一本好书&#xff0c;读完感觉讲的非常好&#xff0c;首先安利给大家&#xff0c;国内第一本系统讲解数据血缘的书&#xff01;点赞&#xff01;近几天也会安排朋友圈点赞赠书活动(ง•̀_•́)ง 0x00 前言 本文将会谈一谈在数据仓库中拉链表相关的内容&#xff0c;包…

ZYNQ_project:key_beep

通过按键控制蜂鸣器工作。 模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a; /*1位按键消抖 */ module key_filter (input wire sys_clk ,input wire sys_rst_n ,input wire key_in ,output …

springboot项目使用Swagger3

一、Swagger介绍 号称世界上最流行的Api框架&#xff1b;Restful Api 文档在线自动生成工具>Api文档与API定义同步更新直接运行&#xff0c;可以在在线测试API 接口支持多种语言&#xff1a;&#xff08;java&#xff0c;Php…&#xff09; 二、Swagger3 准备工作 1、在p…

VsCode 安装 GitHub Copilot插件 (最新)

##在线安装&#xff1a; 打开Vscode扩展商店&#xff0c;输入 "GitHub Copilot " ,选择下载人数最多的那个。&#xff08;这个是你写一部分代码或者注释&#xff0c;Ai自动帮你提示/补全代码&#xff09;,建议选择这个 注意下面有个和他类似的 "GitHub Copilo…

BMVC 23丨多模态CLIP:用于3D场景问答任务的对比视觉语言预训练

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2306.02329 摘要&#xff1a; 训练模型将常识性语言知识和视觉概念从 2D 图像应用到 3D 场景理解是研究人员最近才开始探索的一个有前景的方向。然而&#xff0c…

APS、SAP解析BOM批量核对(我的APS项目三)

APS提供了解析BOM接口 SAP从CU50中解析了BOM 博主开发了一个程序&#xff0c;把两边的BOM数据拉到一起来比对&#xff0c;从最初的一个车型&#xff0c;增加到5个车型&#xff0c;最后成型是30个车型&#xff0c;几乎覆盖了F1、F2的全部车型。 并且程序还实现了消息提醒功能&…

Kotlin(十) 空指针检查、字符串内嵌表达式以及函数默认值

空指针检查 我们在之前的章节里&#xff0c;有定义一个Study的类&#xff0c;它有两个函数&#xff0c;一个doHomework(),一个readBooks()。然后我们定义个doStudy函数&#xff0c;来调用它们&#xff0c;代码如下&#xff1a; fun doStudy(study: Study) {study.doHomework(…

直播间自动发言机器人的运行分享,与开发需要到的技术分析

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 随着人工智能技术的不断发展&#xff0c;自动发言机器人已经成为了当今社交媒体领域的重要组成部分。它们能够自动化地发布内容、回复用户评论和消息&#xff0c;大大提高…

RE切入点:选择SLI,设定SLO

还是先来复习下上节课讲的“系统可用性”的两种计算方式&#xff0c;一种是从故障角度出发&#xff0c;以时长维度对系统进行稳定性评估&#xff1b;另一种是从成功请求占比角度出发&#xff0c;以请求维度对系统进行稳定性评估。同时&#xff0c;我们还讲到&#xff0c;在 SRE…

Django中简单的增删改查

用户列表展示 建立列表 views.py def userlist(request):return render(request,userlist.html) urls.py urlpatterns [path(admin/, admin.site.urls),path(userlist/, views.userlist), ]templates----userlist.html <!DOCTYPE html> <html lang"en">…

【开源项目】snakeflow流程引擎研究

项目地址 https://gitee.com/yuqs/snakerflow https://toscode.mulanos.cn/zc-libre/snakerflow-spring-boot-stater &#xff08;推荐&#xff09; https://github.com/snakerflow-starter/snakerflow-spring-boot-starter 常用API 部署流程 processId engine.process().de…

Adversarial Training Methods for Deep Learning: A Systematic Review

Adversarial Training Methods for Deep Learning: A Systematic Review----《面向深度学习的对抗训练方法:系统回顾》 摘要 通过快速梯度符号法(FGSM)、投影梯度下降法(PGD)和其他攻击算法&#xff0c;深度神经网络暴露在对抗攻击的风险下。对抗性训练是用来防御对抗性攻击威…

CoRL 2023 获奖论文公布,manipulation、强化学习等主题成热门

今年大模型及具身智能领域有了非常多的突破性进展&#xff0c;作为机器人学与机器学习交叉领域的全球顶级学术会议之一&#xff0c;CoRL也得到了更多的关注。 CoRL 是面向机器人学习的顶会&#xff0c;涵盖机器人学、机器学习和控制等多个主题&#xff0c;包括理论与应用。今年…

USB拦截工具

USB 闪存驱动器对组织的安全和数据构成了独特的威胁。它们的便携性和充足的存储容量使它们成为数据盗窃的便捷媒介。 什么是 USB 拦截器 USB&#xff08;通用串行总线&#xff09;阻止程序用于禁用插入可移动存储设备的端口&#xff0c;便携性和充足的存储容量使 USB 成为可能…

一文了解芯片测试项目和检测方法 -纳米软件

芯片检测是芯片设计、生产、制造成过程中的关键环节&#xff0c;检测芯片的质量、性能、功能等&#xff0c;以满足设计要求和市场需求&#xff0c;确保芯片可以长期稳定运行。芯片测试内容众多&#xff0c;检测方法多样&#xff0c;今天纳米软件将为您介绍芯片的检测项目都有哪…