当前位置: 首页 > news >正文

K-近邻算法(二)

三、 kd
问题导⼊:
        实现k 近邻算法时, 主要考虑的问题是如何对训练数据进⾏快速 k 近邻搜索。这在特征空间的维数⼤及训练数据容量⼤时尤其必要。
k 近邻法最简单的实现是线性扫描(穷举搜索),即要计算输⼊实例与每⼀个训练实例的距离。计算并存储好以后,再 查找 K 近邻。 当训练集很⼤时,计算⾮常耗时。
为了提⾼ kNN 搜索的效率,可以考虑使⽤特殊的结构存储训练数据,以减⼩计算距离的次数。
3.1 kd 树简介
3.1.1 什么是 kd
根据 KNN 每次需要预测⼀个点时,我们都需要计算训练数据集⾥每个点到这个点的距离,然后选出距离最近的 k 个点进
⾏投票。 当数据集很⼤时,这个计算成本⾮常⾼,针对 N 个样本, D 个特征的数据集,其算法复杂度为 O DN 2
kd :为了避免每次都重新计算⼀遍距离,算法会把距离信息保存在⼀棵树⾥,这样在计算之前从树⾥查询距离信息, 尽量避免重新计算。其基本原理是,如果 A B 距离很远, B C 距离很近,那么 A C 的距离也很远 。有了这个信息, 就可以在合适的时候跳过距离远的点。
这样优化后的算法复杂度可降低到 O DNlog N ))。感兴趣的读者可参阅论⽂: Bentley J.L. Communications of the ACM( 1975 )。
1989 年,另外⼀种称为 Ball Tree 的算法,在 kd Tree 的基础上对性能进⼀步进⾏了优化。感兴趣的读者可以搜索 Five balltree construction algorithms 来了解详细的算法信息。
1. 树的建⽴;
2. 最近邻域搜索( Nearest-Neighbor Lookup
kd (K-dimension tree) ⼀种对 k 维空间中的实例点进⾏存储以便对其进⾏快速检索的树形数据结构。 kd 树是⼀种⼆叉 树,表示对k 维空间的⼀个划分, 构造 kd 树相当于不断地⽤垂直于坐标轴的超平⾯将 K 维空间切分,构成⼀系列的 K 维超 矩形区域 kd 树的每个结点对应于⼀个 k 维超矩形区域。 利⽤ kd 树可以省去对⼤部分数据点的搜索,从⽽减少搜索的计 算量。
类⽐ ⼆分查找 :给出⼀组数据: [9 1 4 7 2 5 0 3 8] ,要查找 8 。如果挨个查找(线性扫描),那么将会把数据集都遍历 ⼀遍。⽽如果排⼀下序那数据集就变成了:[0 1 2 3 4 5 6 7 8 9] ,按前⼀种⽅式我们进⾏了很多没有必要的查找,现在 如果我们以5 为分界点,那么数据集就被划分为了左右两个 ” [0 1 2 3 4] [6 7 8 9]
因此,根本就没有必要进⼊第⼀个簇,可以直接进⼊第⼆个簇进⾏查找。把⼆分查找中的数据点换成 k 维数据点,这样 的划分就变成了⽤超平⾯对k 维空间的划分。空间划分就是对数据点进⾏类, 挨得近 的数据点就在⼀个空间⾥⾯。
2 构造⽅法
1 构造根结点,使根结点对应于 K 维空间中包含所有实例点的超矩形区域;
2 通过递归的⽅法,不断地对 k 维空间进⾏切分,⽣成⼦结点。 在超矩形区域上选择⼀个坐标轴和在此坐标轴上的⼀ 个切分点,确定⼀个超平⾯,这个超平⾯通过选定的切分点并垂直于选定的坐标轴,将当前超矩形区域切分为左右两个子区域(⼦结点);这时,实例被分到两个⼦区域。
3 上述过程直到⼦区域内没有实例时终⽌(终⽌时的结点为叶结点) 。在此过程中,将实例保存在相应的结点上。
4 )通常,循环的选择坐标轴对空间切分,选择训练实例点在坐标轴上的中位数为切分点,这样得到的 kd 树是平衡的 (平衡⼆叉树:它是⼀棵空树,或其左⼦树和右⼦树的深度之差的绝对值不超过1 ,且它的左⼦树和右⼦树都是平衡⼆ 叉树)。
KD 树中每个节点是⼀个向量,和⼆叉树按照数的⼤⼩划分不同的是, KD 树每层需要选定向量中的某⼀维,然后根据这
⼀维按左⼩右⼤的⽅式划分数据。在构建 KD 树时,关键需要解决 2 个问题:
1 )选择向量的哪⼀维进⾏划分;
2 )如何划分数据;
第⼀个问题简单的解决⽅法可以是随机选择某⼀维或按顺序选择,但是 更好的⽅法应该是在数据⽐较分散的那⼀维进⾏ 划分(分散的程度可以根据⽅差来衡量)
第⼆个问题中,好的划分⽅法可以使构建的树⽐较平衡,可以每次选择中位数来进⾏划分。

相关文章:

K-近邻算法(二)

三、 kd 树 问题导⼊: 实现k 近邻算法时, 主要考虑的问题是如何对训练数据进⾏快速 k 近邻搜索。这在特征空间的维数⼤及训练数据容量⼤时尤其必要。 k 近邻法最简单的实现是线性扫描(穷举搜索),即要计算输⼊实例与…...

WPF学习(2)-UniformGrid控件(均分布局)+StackPanel控件(栈式布局)

UniformGrid控件(均分布局) UniformGrid和Grid有些相似,只不过UniformGrid的每个单元格面积都是相等的,不管是横向的单元格,或是纵向的单元格,它们会平分整个UniformGrid。 UniformGrid控件提供了3个属性…...

ANTSDR E310

ANTSDR E310是一款由微相科技有限公司(MicroPhase)推出的软件无线电(SDR)平台,专为现场部署设计。以下是对ANTSDR E310的详细介绍: 一、主要特点 独立运行的软件无线电:ANTSDR E310具备独立运…...

MySQL 5.7 DDL 与 GH-OST 对比分析

作者:来自 vivo 互联网存储研发团队- Xia Qianyong 本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率、空间占用、锁阻塞、binlog日志产生量、主备延时等方面,对比GH-OST和MySQL5.7 DDL的差异。 一、背景介绍 在 MySQL 数据库中&…...

【Python】爬取网易新闻今日热点列表数据并导出

1. 需求 从网易新闻的科技模块爬取今日热点的列表数据,其中包括标题、图片、标签、发表时间、路径、详细文本内容,最后导出这些列表数据到Excel中。 网易科技新闻网址:https://tech.163.com 2. 解决步骤 2.1 前期准备 爬虫脚本中需要引用…...

软件设计之HTML5

软件设计之HTML5 【狂神说Java】HTML5完整教学通俗易懂 学习内容: 软件开发技能点参照:软件开发,小白变大佬,这套学习路线让你少走弯路是认真的,欢迎讨论 软件开发技能点参照:Java学习完整路线&#xff…...

CnosDB 元数据集群 – 分布式时序数据库的大脑

CnosDB 是一个分布式时序数据库系统,其中元数据集群是核心组件之一,负责管理整个集群的元数据信息。 1. 概述 CnosDB 是一个分布式时序数据库系统,其中元数据集群是核心组件之一,负责管理整个集群的元数据信息。元数据包括数据库…...

白骑士的Matlab教学进阶篇 2.5 Simulink

Simulink是MATLAB的扩展工具,提供了一个图形化的建模和仿真环境。它广泛应用于系统设计、仿真、自动控制、信号处理等领域。本文将详细介绍Simulink的简介与基本使用、建立与仿真模型、控制系统设计与仿真、与MATLAB的集成。 Simulink简介与基本使用 什么是Simuli…...

linux安装anaconda

参考 如何在Linux服务器上安装Anaconda(超详细)_linux安装anconda-CSDN博客 官网 Index of / 安装网站 https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Lin…...

python装饰器作用和使用场景

当谈到装饰器时,很多初学者很迷糊,有一个经典的例子可以帮助理解它们的作用。装饰器允许你在不修改函数代码的情况下,动态地改变函数的行为。 一、用法 假设我们有一个简单的函数,用来输出一条简单的问候语: 复制代码…...

Apache Tomcat 7下载、安装、环境变量配置 详细教程

Apache Tomcat 7下载、安装、环境变量配置 详细教程 Apache Tomcat 7下载Apache Tomcat 7 安装Apache Tomcat 7 环境变量配置启动 Apache Tomcat 7测试Tomcat7是否启动成功 Apache Tomcat 7下载 1、下载地址,找到Archives 链接: 官网下载地址 2、找到Tomcat 7&…...

SQL注入实例(sqli-labs/less-20)

0、初始页面 1、确定闭合字符 2、爆库名 3、爆表名 4、爆列名 5、查询最终目标...

Linux Shell面试题大全及参考答案(3万字长文)

目录 解释Shell脚本是什么以及它的主要用途 主要用途 Shell脚本中的注释如何编写? 如何在Shell脚本中定义和使用变量? Shell支持哪些数据类型? 什么是Shell的命令替换?请举例说明。 管道(pipe)和重定向(redirection)有什么区别? 如何在Shell脚本中使用条件语句…...

速盾:cdn优化静态资源加载速度机制

CDN(Content Delivery Network)是一种优化静态资源加载速度的机制。它通过在全球多个地点部署服务器,将静态资源缓存到离用户最近的服务器上,从而提高资源加载速度。 在传统的网络架构中,当用户访问一个网站时&#x…...

04.C++类和对象(中)

1.类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重…...

【代码随想录训练营第42期 Day23打卡 回溯Part2 - LeetCode 39. 组合总和 40.组合总和II 131.分割回文串

目录 一、做题心得 二、题目与题解 题目一:39. 组合总和 题目链接 题解:回溯 题目二:40.组合总和II 题目链接 题解:回溯 题目三:131.分割回文串 题目链接 题解:回溯 三、小结 一、做题心得 今天是代码随想录…...

书生.浦江大模型实战训练营——(三)Git基本操作与分支管理

最近在学习书生.浦江大模型实战训练营,所有课程都免费,以关卡的形式学习,也比较有意思,提供免费的算力实战,真的很不错(无广)!欢迎大家一起学习,打开LLM探索大门&#xf…...

数据可视化Axure大屏原型制作分享

数据可视化大屏通过清晰、直观且易于理解的方式呈现大量复杂数据,已成为各行各业中不可或缺的工具。Axure作为一款功能强大的原型设计工具,为数据可视化大屏的制作提供了强大的支持和丰富的资源。 Axure RP 是一款强大的原型设计工具,非常适…...

Python3安装

更新镜像: yum -y install epel-release.noarch 1.安装Python3 [root18 ~]# yum -y install python3 2.查看版本: [root18 ~]# python3 --version Python 3.6.8 3.执行镜像包: pip3 install -i https://pypi.tuna.tsinghua.edu.cn/sim…...

基于Python的数据科学系列(4):函数

引言 在前几篇文章中,我们探讨了Python中的基本数据类型、列表、元组和字典。在本文中,我们将深入研究Python中的函数。函数是编程中非常重要的概念,它允许我们将代码组织成模块化、可重用的组件。通过学习如何定义和使用函数,我们…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...