基于规则的分类(顺序覆盖算法)及最近邻分类器(KNN算法)

news2024/11/23 20:20:12

在这里插入图片描述

顺序覆盖算法的步骤

顺序覆盖算法的目标是提取一个分类规则,该规则覆盖训练集中大量正例,没有或仅覆盖少量反例。
整个过程包含以下四个步骤:

  • 规则增长
  • 规则评估
  • 停止准则
  • 规则剪枝

顺序覆盖算法的第一步——规则增长

一般到特殊(通常采用的策略)

  • 从初始规则r: {}→y开始
  • 反复加入合取项,得到更特殊的规则,直到不能再加入
    特殊到一般(适用于小样本情况)
  • 随机地选择一个正例作为初始规则
  • 反复删除合取项,得到更一般的规则,直到不能再删除

从一般到特殊的规则生成策略中,每次只考虑一个最优的(属性,值)这显得过于贪心,容易陷入局部最优麻烦
为了缓解该问题,可以采用一种“束状搜索“的方式

  • 具体做法为:每次选择添加的(属性,值)时,可以保留前k个最优的(属性,值) ,而不是只选择最优的那个,然后对这k个最优的(属性,值)继续进行下一轮的(属性,值)添加。

顺序覆盖算法的第二步——规则评估

常用的度量

  • 准确率
  • 似然比
  • 准确率的平滑Laplace
  • FOIL信息增益

image.png
然而r2并未覆盖反例,因此r2并不准确,然而r2的准确率高于r1,因此只看准确率去评估规则并不准确.

image.png

image.png

image.png

顺序覆盖算法的第三,四步

停止条件:

  • 计算增益
  • 如果增益不显著, 则丢弃新规则
    规则剪枝:
  • 类似于决策树后剪枝
  • 降低错误剪枝 :
  1. 删除规则中的合取项
  2. 比较剪枝前后的错误率
  3. 如果降低了错误率,则剪掉该合取项

急切学习 vs 惰性学习

急切学习(积极学习):
是指在利用算法进行判断之前,先利用训练集数据通过训练得到一个目标函数,在需要进行判断时利用已经训练好的函数进行决策。
两步过程: (1) 归纳 (2) 演绎
惰性学习(消极学习):
把训练数据建模过程推迟到需要对样本分类时
策略:死记硬背-记住所有的训练数据,仅当待测记录的属性值与一个训练记录完全匹配才对它分类.
最近邻分类算法(KNN):使用“最近”的 k 个点 (最近邻) 进行分类。

最近邻分类器:

基本思想:
存在一个样本数据集,且样本集中每个数据都存在类别标签,即我们知道样本集中每个数据与所属分类的对应关系。
需要对没有标签的待测数据进行分类时,将待测数据的每个特征与样本集中的数据对应的特征进行比较,然后通过算法提取样本集中最相似的数据(最近邻)的分类标签作为待测数据的类别。

image.png
KNN算法中的基本要素:

  • 计算记录间距离的度量
  • k值的确定
    常用的距离度量:
  • 欧几里得距离
  • 曼哈顿距离
  • 余弦距离
    k值的确定:
    如果 k 太小, 则对噪声点敏感;如果 k 太大, 邻域可能包含很多其他类的点;
    可设定不同的k值进行训练,取分类误差率最小的k值。
    KNN算法的步骤:
    计算距离:给定测试对象,计算它与训练集中每个训练样本的距离。
    寻找邻居:圈定距离最近的k个训练样本,作为测试对象的近邻。
    进行分类:根据这k个近邻所属的主要类别,对测试对象进行分类。

KNN算法的具体实现:

  • 先从训练集中随机选取k个样本作为初始的最近邻样本;
  • 分别计算测试数据到这k个训练样本的距离,并按距离大小排成一个队列Q;
  • 依次遍历训练集,计算当前训练样本与测试数据的距离L,如果L大于队列Q中的最大距离,则舍去当前样本;如果L小于队列Q中的最大距离,则删除队列Q中距离最大的训练样本,再将当前训练样本插入队列Q。
  • 直到训练集遍历完毕,最后队列Q中的k个样本即为k个最近邻。
  • 依据最终的k个最近邻样本的类别作为测试数据的类别。

K最近邻(KNN)的特点:

  • 是一种基于实例的惰性学习 ,需要一个大量样本的训练集;
  • 不需要建立模型,但分类一个测试样例开销很大
  • 需要计算待测数据到所有训练实例之间的距离
  • 基于局部信息进行预测,对噪声非常敏感;
  • 简单,易于实现。

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

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

相关文章

高压功率放大器基于液晶生物光电传感器中的应用

实验名称:基于液晶的高通量蛋白质光电生物传感器 研究方向:生物识别与检测 测试目的: 蛋白质分析是疾病诊断和医学研究中一类重要的方法。本文提出了一种单基底的液晶生物光电传感器,可用于快速检测蛋白质的浓度。实验发现单基底液…

ZigBee案例笔记 -- LED控制与按键检测(输入/输出)

文章目录1.相关寄存器2.按键检测(引脚输入配置)3.LED控制(引脚输出配置)1.相关寄存器 CC2530(ZigBee)的开发也是类似51单片机一样针对寄存器进行配置,因为其内核实质上也是51内核,对…

Sulfo CY5-MAL|磺基-CY5 马来酰亚胺

Sulfo CY5-MAL|磺基-CY5 马来酰亚胺 英文名称:Cyanine5 maleimide Cyanine5 MAL Cy5 maleimide Cy5 MAL CAS:1437872-46-2 外观:深蓝色粉末 分子量:641.24 分子式:C38H45ClN4O3 花菁染料,一种发…

Hive实训任务

文章目录Hive 实训任务Hive 实训任务 熟练掌握如何创建外部表,加载数据,查询等 先创建一个cx_stu02 外部表,external 指定外部表关键字 create external table cx_stu02(name string,gender string,age int ) row format delimited fields…

一文初识大数据Flink框架

文章目录什么是Flinkflink在github上的现状flink发展历史flink能做什么flink 的高并发能力一些计算框架对比图flink发展方向flink生态体系处理无界和有界数据随处部署应用程序运行任何规模的应用程序利用内存性能官方文档地址:https://flink.apache.org/ 什么是Flink &#x…

php宝塔搭建部署实战Piwigo开源相册管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的Piwigo开源相册管理系统源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#x…

基于Python + Requests 的Web接口自动化测试框架

之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用Python实现,将代码和用例分离,易于维护。 项目背景 公司的软件采用B/S架构,进行数据存储、分析、管理 工具选择 python开发的速度很快&#xff0c…

【计算机考研408】数据结构代码规范

408-数据结构代码规范 文章目录408-数据结构代码规范序言优化参考文献考前预测线性表-链表单链表静态链表栈、队列、数组栈的顺序存储类型队列树与二叉树二叉树的定义二叉树的层序遍历树的双亲表示法孩子表示法树的孩子兄弟表示法图邻接矩阵存储法邻接表法二分查找/折半查找模板…

在linux上运行python脚本(安装pytorch踩坑记录,pyinstaller使用方式,构建docker镜像)

背景 脚本需要导入pytorch等库才能运行。 脚本在windows上运行成功,尝试放到linux上运行。 linux服务器内存较小。 方法一:在linux上安装依赖 把脚本放到linux上,直接安装依赖。 安装环境也有两种方法:一是先安装conda&#xf…

爬虫学习-requests模块

python中原生的一款基于网络请求的模块,功能强大,简单便捷,效率极高作用:模拟游览器发请求(15条消息) Header:请求头参数详解_平常心丷的博客-CSDN博客_headers参数(15条消息) requests的get方法和post方法_不问散人的博客-CSDN博…

二十九、之Java 数据结构

Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration)位集合(BitSet)向量(Vector)栈(Stack)字典&#xff…

Linux 下安装多个mysql

1、下载mysql https://downloads.mysql.com/archives/community/2、创建用户组 groupadd mysql 3、创建用户 useradd -r -g mysql5736 mysql5736 4、解压文件 tar zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 5、重命名 mv mysql-5.7.39-linux-glibc2.12-x86_64 …

随着企业信息化发展之源代码防泄密需求分析

源代码防泄密需求: 随着企业信息化发展的日益增长,软件行业厂商之间的竞争也愈加白热化,加上国内对知识产权的不够重视、山寨模仿产品的横行。保护源代码、保证企业的核心竞争力,成为众多软件研发企业的第一要务。那么企业应该如…

深度学习入门(六十一)循环神经网络——长短期记忆网络LSTM

深度学习入门(六十一)循环神经网络——长短期记忆网络LSTM前言循环神经网络——长短期记忆网络LSTM课件长短期记忆网络门候选记忆单元记忆单元隐状态总结教材1 门控记忆元1.1 输入门、忘记门和输出门1.2 候选记忆元1.3 记忆元1.4 隐状态2 从零开始实现2.…

mysql常用操作(亲测自用,持续更新...)

文章目录一、新建数据库1、字符集1.1 字符集作用1.2 常用选择2、排序规则2.1 排序规则作用2.2 常用选择二、新建表1、字符串类型1.1 CHAR 和 VARCHAR 的定义1.2 字符占用三、常用基础知识1、什么是方言?2、SQL书写规范3、SQL分类1)DDL (data …

day6 递推

P1928 外星密码 对于 100% 的数据&#xff1a;解压后的字符串长度在 20000 以内&#xff0c;最多只有十重压缩。保证只包含数字、大写字母、[ 和 ]。 #include <bits/stdc.h> using namespace std;string fun(){char ch;//输入字符 int n;//复制次数 string ans"&…

Teststand-控件

文章目录管理控件应用程序管理控件序列文件视图管理控件执行视图管理控件可视化控件视图连接列表连接命令连接信息源连接在 LabVIEW 中&#xff0c;TestStand 相关的所有控件都在estStand 选板上这些控件全部是Active X控件&#xff0c;LabVIEW对它的编程是属性节点、方法节点及…

ActivityManagerService,给我启动个App瞅瞅呗

前言 其实早在几年前&#xff0c;我就有一个疑问。 为什么我们的逻辑代码写在Activity中&#xff0c;在App启动后就会执行到它。为什么第三方库的初始化要写在Application中&#xff0c;而它为什么执行顺序比Activity还要靠前。 如果您想搞清楚这些原因&#xff0c;那么本文…

3年经验去面试20k测试岗,看到这样的面试题我还是心虚了....

我是着急忙慌的准备简历——3年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;3年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&#xff0c;自信满满去面试&#…

Python 数据分析之 3 —— pandas 数据分析

第1关:了解数据集特征 任务描述 本关任务:载入网贷数据集,了解数据概况。 共包含多个子任务: 1.1 读取Training_Master.csv文件,命名为master; 1.2 读取Training_Userupdate.csv文件,命名为user; 1.3 读取Training_LogInfo.csv文件,命名为log; 1.4 分别输出它们的形…