第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)和逻辑程序设计的技术,旨在构建一个逻辑程序,该程序在给定背景知识的约束下解释所提供的示例。

       

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

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

相关文章

【Python】成功解决ModuleNotFoundError: No module named ‘matplotlib‘

【Python】成功解决ModuleNotFoundError: No module named ‘matplotlib’ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448…

Linux系统安装及简单操作

目录 一、Linux系统安装 二、Linux系统启动 三、Linux系统本地登录 四、Linux系统操作方式 五、Linux的七种运行级别(runlevel) 六、shell 七、命令 一、Linux系统安装 场景1:直接通过光盘安装到硬件上(方法和Windows安装…

基于springboot实现摄影网站系统项目【项目源码】

基于springboot实现摄影网站系统演示 摘要 随着时代的进步,社会生产力高速发展,新技术层出不穷信息量急剧膨胀,整个社会已成为信息化的社会人们对信息和数据的利用和处理已经进入自动化、网络化和社会化的阶段。如在查找情报资料、处理银行账…

虚拟化

什么是虚拟化 虚拟化(Virtualization)是一种资源分配和管理技术,是将计算机的各种实体资源,比如CPU、内存、磁盘空间、网络适配器等,进行抽象转换后虚拟的设备,可以实现灵活地分割、组合为一个或多个计算机配置环境,并…

el-form-item内的el-select如何自适应宽度

最近在使用element-ui做后台管理的时候,有个需求是在弹窗组件里面,添加一个el-select下拉框选项,但是给el-select设置的宽度无法自适应,原因很简单,我们不需要设置固定宽度,设置百分比就行了,让…

CURE-Net: A Cascaded Deep Network for Underwater Image Enhancement

文章目录 论文结构 及 读论文的方法总结论文理解看图AbstractIntroductionRELATED WORKPROPOSED METHODA Philosophy of Model DesignB Framework of CURE-NetC Proposed GESNet and ORSNetD Proposed DEB and SRBE Loss Function Experiment And ResultA Implementation Detai…

Python算法题集_在排序数组中查找元素的第一个和最后一个位置

Python算法题集_在排序数组中查找元素的第一个和最后一个位置 题34:在排序数组中查找元素的第一个和最后一个位置1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【二分法两次左边界】2) 改进版一【二分法左右边界】3) 改进版二【第三…

JavaScript基础5之作用域、执行上下文的顺序执行、可执行代码、执行上下文栈

JavaScript基础 作用域思考 执行上下文顺序执行可执行代码执行上下文栈案例一案例二case1:case2 作用域 作用域:程序源代码中定义变量的区域。作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。作用域分类:静态作用域&…

Tensorflow2.0+部署(tensorflow/serving)过程备忘记录Windows+Linux

Tensorflow2.0部署(tensorflow/serving)过程备忘记录 部署思路:采用Tensorflow自带的serving进模型部署,采用容器docker 1.首先安装docker 下载地址(下载windows版本):https://desktop.docke…

数学建模【时间序列】

一、时间序列简介 时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来,本篇将主要介绍时间序列分析中常用的三种模型:季节分解…

一键部署Tesseract-OCR环境C++版本(Windows)

环境:Windows 10 工具:git vcpkg vscode cmake 库:Tesseract 一键部署Tesseract-OCR环境C版本(Windows) 分享这篇文章的原因很简单,就是为了让后续的朋友少走弯路。自己在搜索相关C版本的tesseract部署时…

Vue class和style绑定:动态美化你的组件

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