第15章——西瓜书规则学习

1.序贯覆盖

        序贯覆盖是一种在规则学习中常用的策略,它通过逐步构建规则集来覆盖训练数据中的样本。该策略采用迭代的方式,每次从训练数据中选择一部分未被覆盖的样本,学习一条能够覆盖这些样本的规则,然后将这条规则加入到规则集中。接下来,从训练数据中去除已被覆盖的样本,重复上述过程,直到所有样本都被覆盖或达到其他停止条件。

        在序贯覆盖中,可以采用自底向上或自顶向下的方法来构建规则。

(1)自顶向下

        自顶向下的方法则是从较为一般的规则开始,然后逐渐添加更具体的条件来缩小规则的覆盖范围。在序贯覆盖中,自顶向下意味着初始规则是非常宽泛的,能够覆盖大量的样本。然后,算法会逐步添加条件或约束,以缩小规则的适用范围并提高规则的准确性。

(2)自底向上

        自底向上的方法从具体的、特殊的规则开始,然后逐步合并或泛化这些规则,以扩大它们的覆盖范围。在序贯覆盖的上下文中,自底向上意味着初始规则是基于训练数据中的具体样本或条件构建的。这些规则可能非常具体,仅适用于少数样本。然后,算法会尝试合并这些规则,通过去除冗余条件或引入更一般的条件来扩大规则的适用范围。

        第一种策略是覆盖范围从大往小搜索规则,第二种策略则相反;前者通常更容易产生泛化性能较好的规则,而后者则更适合于训练样本较少的情形,此外,前者对噪声的鲁棒性比后者要强得多.因此,在命题规则学习中通常使用第一种策略,而第二种策略在一阶规则学习这类假设空间非常复杂的任务上使用较多。

        然而,序贯覆盖方法可能会受到贪心搜索的影响,即每次只选择当前最优的规则进行覆盖,而忽略了其他可能更优的规则组合。为了解决这个问题,可以采用集束搜索(beam search)的策略进行改进。集束搜索通过维护一个候选列表(集束),在每一步扩展最有希望的节点,从而考虑了更多的搜索空间,避免了陷入局部最优解。

2.剪枝优化

(1)预剪枝

        预剪枝的核心思想是在决策树或规则生成过程中,对每个节点或规则在划分前进行估计。如果当前节点或规则的划分不能显著提升模型的泛化性能,则停止划分并将当前节点标记为叶节点,或将当前规则视为已完成。这有助于减少模型的复杂性,避免对训练数据的噪声或特定特征的过度拟合。        

        在CN2算法中,预剪枝可以通过似然率统计量(Likelihood Ratio Statistics,LRS)等统计显著性检验方法来实现。这种方法涉及比较当前规则或节点划分前后的模型性能。具体来说,它比较了包含当前划分和不包含当前划分的模型在训练数据上的似然性。如果LRS超过这个阈值,则认为当前规则或划分对模型有显著贡献,应保留。否则,应进行剪枝。

(2)后剪枝

REP:

       在每一轮穷举所有可能的剪枝操作,然后用验证集对剪枝产生的所有候选规则集进行评估,保留最好的那个规则集进行下一轮剪枝,如此继续,直到无法通过剪枝提高验证集上的性能为止. 

        REP剪枝通常很有效[Brunk and Pazzani,1991],但其复杂度是O(m^{4}),m为训练样例数目.

IREP

        IREP将复杂度降到O(m(log^{2}{m}).

      IREP算法采用了增量式的方法,这意味着它不是一次性生成整个规则集,而是逐步构建规则集,每次只添加一条规则。在生成每条规则之前,IREP都会将当前的样例集划分为训练集和验证集。然后,它会在训练集上生成一条规则,并立即在验证集上对其进行剪枝。这种即时剪枝的方式可以确保每条规则都是经过优化的,且不会引入不必要的复杂性。

        例如,我们正在构建一个垃圾邮件分类器,将电子邮件分为“垃圾邮件”或“非垃圾邮件”。我们的数据集包括某些关键词的存在、电子邮件长度和发送时间等特征。

  1. 初始数据集:我们从1000封电子邮件开始,500封标为垃圾邮件,500封标为非垃圾邮件。

  2. 第一次迭代:

    • 数据划分:我们将数据集划分,使用800封电子邮件进行训练,200封进行验证。
    • 生成规则:在训练集上,IREP生成了一条规则:“如果电子邮件中包含'free'和'money',则分类为垃圾邮件。”
    • 剪枝规则:在验证集上的测试显示,包括'money'并没有显著提高准确性但降低了泛化能力。因此,我们将条件剪枝为“如果电子邮件中包含'free',则分类为垃圾邮件。”
    • 添加规则:被剪枝的规则被添加到我们的模型中。
  3. 后续迭代:

    • 过程重复,每次使用减少的数据集(排除已经被之前规则分类的电子邮件),专注于捕捉垃圾邮件的不同特征。
    • 假设下一条生成的规则涉及电子邮件长度,剪枝后,它如果电子邮件异常短并且在凌晨2点到5点之间发送,则将电子邮件分类为垃圾邮件。
  4. 最终结果:我们最终得到了一组简单的、经过剪枝的规则,这些规则共同很好地覆盖了垃圾邮件的特征,同时保持了对新电子邮件的泛化能力。

通过IREP的改进:

        IREP的增量和剪枝方法确保添加到模型中的每条规则都是必要和有效的。通过使用单独的验证集验证和剪枝规则,它避免了对训练数据的过拟合,这是复杂模型中的常见问题。这种有条不紊地生成和验证规则的方法导致了一个更健壮、更具泛化能力的垃圾邮件分类器。

RIPPER

        它结合了IREP(Incremental REP)的增量式学习策略与更高级的后处理优化手段。以下是RIPPER相对于其前身算法(如REP和IREP)的主要改进:

1. 优化的剪枝策略

        RIPPER不仅采用了IREP的即时剪枝策略,还在剪枝过程中引入了更精细的评估机制。它不仅仅基于验证集上的错误率来剪枝规则,还可能考虑其他性能指标:

2. 规则集后处理

        除了对单条规则进行剪枝外,RIPPER还对整个规则集进行后处理优化。这包括合并相似的规则、删除冗余规则以及根据某种准则(如规则的覆盖度或准确性)对规则进行排序。这些步骤有助于进一步简化规则集,提高其可读性和可解释性。

3.更复杂的停止条件

        IREP通常基于错误率的减少来决定何时停止迭代。然而,这种方法可能会导致生成的规则集过于庞大,包含许多冗余或不必要的规则。相比之下,RIPPER采用了更复杂的停止条件。除了考虑错误率的减少外,RIPPER还可以考虑其他因素,如规则集的简洁性、规则的覆盖度或泛化能力等。例如,如果添加新规则不再显著提高性能,或者规则集变得过于复杂,RIPPER可能会提前停止迭代。这种更灵活的停止条件使得RIPPER能够在迭代过程中更有效地平衡规则集的准确性和简洁性。

4. 对已有规则集的有效利用

        在IREP中,每次迭代都是基于当前的样本集来生成新的规则,而已有的规则集在后续迭代中的利用有限。然而,在RIPPER中,已有的规则集被更有效地利用起来。在每次迭代中,RIPPER会基于当前的规则集和剩余的样本集来生成新的规则,并利用已有的规则集对新规则进行评估和优化。这种对已有规则集的有效利用使得RIPPER能够在迭代过程中逐步积累知识,并生成更准确、更稳定的规则集。

3.一阶规则学习

        一阶归纳学习器(FOIL)是一种规则学习算法,它从一组示例中生成一阶逻辑规则。一阶逻辑允许表示实体之间的复杂关系,使得FOIL适用于涉及关系数据的任务,如关系数据库。

4.归纳逻辑程序设计(ILP)

        归纳逻辑程序设计(ILP)是机器学习的一个子领域,专注于从示例和背景知识中学习逻辑程序。它结合了人工智能(AI)和逻辑程序设计的技术,旨在构建一个逻辑程序,该程序在给定背景知识的约束下解释所提供的示例。

       

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ArmSoM规划开发基于RK3576的开发套件

ArmSoM正计划推出一款新的产品,这款产品将采用强大的RK3576芯片。 本文将为您介绍我们的新产品搭载的RK3576性能参数,以及它如何为您提供卓越的性能和功能。 RK3576处理器 RK3576处理器是一款强大的处理器,具备出色的性能和多样化的功能&a…

Web Worker:JavaScript的后台任务解决方案

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

eFuse在汽车域控制器架构中如何提供更智能的保护?

汽车应用的电气化和自动化趋势推动了域控制器的兴起,用以减轻线缆重量并将车辆架构简化为多个局部化的电源中心。设计人员可以利用这种新兴架构,将传统保险丝和机械继电器替换为更紧凑的电子保险丝 (eFuse),以提供更先进的保护功能&#xff0…

UE5 局域网联机,寻找会话失败。

目录 参考资料: 尝试解决办法 1.1在【项目名.Build.cs】脚本中添加该行,添加后关闭编辑器,重新生成解决方案。​编辑 2.检查是否在同一个C类子网 参考资料: 1.Cant find session in LAN - Programming & Scripting / Mul…

【Claude3】利用Python中完成对Bedrock上的Claude的API调用

文章目录 1. 前期准备工作2. 安装和配置AWS CLI v23. 使用AWS configure命令配置AWS凭据4. 安装访问Bedrock的SDK5. 访问Amazon Bedrock UI6. 订阅Bedrock上的Claude模型7. 通过CLI命令列出所有可用的Claude模型8. 向Claude 3 Sonnet on Bedrock生成文本9. 参考链接 1. 前期准备…

Building Systems with the ChatGPT API

Building Systems with the ChatGPT API 本文是 https://www.deeplearning.ai/short-courses/building-systems-with-chatgpt/ 这门课程的学习笔记。 文章目录 Building Systems with the ChatGPT APIWhat you’ll learn in this course Language Models, the Chat Format and…

MySQL中常用的操作语句已汇总

目录 一、库语句 1.查询现有数据库 2.创建数据库 3.选中数据库 ​编辑 4.删除数据库 二、初阶表操作 1.查看数据库现有表 2.查看表结构 3.创建表 4.删除表 5.全列查询 6.删除表2 7.修改操作 三、插入操作 1.全列插入 2.指定列插入 3.一次插入多组数据 4.插入…

【AI视野·今日Robot 机器人论文速览 第八十二期】Tue, 5 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 5 Mar 2024 Totally 63 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚双臂机器人拧瓶盖, (from 伯克利) website: https://toruowo.github.io/bimanual-twist 📚水下抓取器, (from …

交易平台开发:构建安全/高效/用户友好的在线交易生态圈

在数字化浪潮的推动下,农产品现货大宗商品撮合交易平台已成为连接全球买家与卖家的核心枢纽。随着电子商务的飞速发展,一个安全、高效、用户友好的交易平台对于促进交易、提升用户体验和增加用户黏性至关重要。本文将深入探讨交易平台开发的关键要素&…

Unity3d C#实现文件(json、txt、xml等)加密、解密和加载(信息脱敏)功能实现(含源码工程)

前言 在Unity3d工程中经常有需要将一些文件放到本地项目中,诸如json、txt、csv和xml等文件需要放到StreamingAssets和Resources文件夹目录下,在程序发布后这些文件基本是对用户可见的状态,造成信息泄露,甚至有不法分子会利用这些…

1908_Arm Cortex-M3的实现

1908_Arm Cortex-M3的实现 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 这是第一次看一份这样的手册,之前的MCU编程基本上就是专注于软件接口方面。而OS等方面的一些功能基本上都是用了现成的解决方案,因此也就没有过多的关注…

Linux centos6安装rz、sz命令

centos6传文件提示command not found # yum install lrzsz 提示错误 wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz 下载离线包 https://www.ohse.de/uwe/software/lrzsz.html 下载最新版本 [rootnode1 ~]# tar -zxvf lrzsz-0.12.20.tar.gz …

pytorch_retinaface训练Resnet50_Final.pth过程+无图版安装Nvidia+CUDA驱动GPU

背景 当前处于人脸检测分支,项目就是retinaface官方的代码加上数据集目录结构,目的是训练出最后的模型文件Resnet50_Final.pth 代码 https://gitee.com/congminglst/pytorch_-retinaface.git 项目结构与设计 图片数据集采用widerface, 前…

Go编译报错 link: running gcc failed: exit status 1(已解决)

背景 在对一个开源的Go程序二次开发 重新编译时 , 报错截图如下 报错文字如下:关键信息 link: running gcc failed: exit status 1 $ go build -o orchestrator-didi -i go/cmd/orchestrator/main.go go build: -i flag is deprecated # command-li…

2024/3/10打卡借教室——二分+差分

题目 在大学期间,经常需要租借教室。 大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。 教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。  面对海量租借教室的信息,我们自…

TOMCAT多实例及调优

目录 引言 一、JVM相关理论 (一)JVM组成 1.JVM组成部分 2.JVM运行时数据区 (二)垃圾回收 1.确定垃圾 2.垃圾收集算法 二、java内存调整相关参数 (一)JVM 内存常用相关参数 (二&#…

《在“裸奔”时代下如何保护网络隐私》

引言 在信息时代的今天,网络已经成为我们生活中不可或缺的一部分。然而,随着网络的普及和技术的发展,网络安全和隐私保护问题也变得越来越严峻。特别是在这个所谓的“裸奔”时代,我们的个人信息和隐私正面临着前所未有的挑战。因此,保护网络隐私变得尤为重要。 网络安全…

通过Step Back提示增强LLM的推理能力

原文地址:enhancing-llms-reasoning-with-step-back-prompting 论文地址:https://arxiv.org/pdf/2310.06117.pdf 2023 年 11 月 6 日 Introduction 在大型语言模型不断发展的领域中,一个持续的挑战是它们处理复杂任务的能力,这…

el-table 插入输入框并进行校验

<template><div><el-form :model"list" ref"ruleForm"><el-table :data"list.tableData" style"width: 100%"><el-table-column prop"time" label"日期" width"180"><…

【微服务】SpringBoot整合Resilience4j使用详解

目录 一、前言 二、熔断器出现背景 2.1 几个核心概念 2.1.1 熔断 2.1.2 限流 2.1.3 降级 2.2 为什么会出现熔断器 2.3 断路器介绍 2.3.1 断路器原理 三、Resilience4j介绍 3.1 Resilience4j概述 3.1.1 Resilience4j是什么 3.1.2 Resilience4j功能特性 3.2 Resilie…