基于凸集上投影(POCS)的聚类算法

news2024/12/23 9:20:21

POCS:Projections onto Convex Sets。在数学中,凸集是指其中任意两点间的线段均在该集合内的集合。而投影则是将某个点映射到另一个空间中的某个子空间上的操作。给定一个凸集合和一个点,可以通过找到该点在该凸集合上的投影来进行操作。该投影是离该点最近的凸集内的点,可以通过最小化该点和凸集内任何其他点之间的距离来计算。既然是投影,那么我们就可以将特征映射到另一个空间中的凸集合上,这样就可以进行聚类或降维等操作。

本文综述了一种基于凸集投影法的聚类算法,即基于POCS的聚类算法。原始论文发布在IWIS2022上。

凸集

凸集定义为一个数据点集合,其中连接集合中任意两点x1和x2的线段完全包含在这个集合中。根据凸集的定义,认为空集∅、单集、线段、超平面、欧氏球都被认为是凸集。数据点也被认为是凸集,因为它是单例集(只有一个元素的集合)。这为 POCS 的概念应用于聚类数据点开辟了一条新路径。

凸集投影(POCS)

POCS方法大致可分为交替式和并行式两种。

1、交替式poc

从数据空间中的任意一点开始,从该点到两个(或多个)相交凸集的交替投影将收敛到集合交点内的一点,例如下图:

当凸集不相交时,交替投影将收敛到依赖于投影阶数的greedy limit cycles。

2、并行式 POCS

与交替形式不同,并行的POCS 是从数据点到所有凸集同时进行投影,并且每个投影都有一个重要性权重。对于两个非空相交凸集,类似于交替式版本,平行投影会收敛到集相交处的一个点。

在凸集不相交的情况下,投影将收敛到一个最小解。基于pocs的聚类算法的主要思想来源于这一特性。

有关POCS的更多细节,可以查看原论文

基于pocs的聚类算法

利用并行POCS方法的收敛性,论文作者提出了一种非常简单但在一定程度上有效的聚类算法。该算法的工作原理与经典的K-Means算法类似,但在处理每个数据点的方式上存在差异:K-Means算法对每个数据点的重要性加权相同,但是基于pocs的聚类算法对每个数据点的重要性加权不同,这与数据点到聚类原型的距离成正比。

算法的伪代码如下所示:

实验结果

作者在一些公共基准数据集上测试了基于pocs的聚类算法的性能。下表总结了这些数据集的描述。

作者比较了基于pocs的聚类算法与其他传统聚类方法的性能,包括k均值和模糊c均值算法。下表总结了执行时间和聚类错误方面的评估。

聚类结果如下图所示:

示例代码

我们在一个非常简单的数据集上使用这个算法。作者已经发布了直接使用的包,对于应用我们可以直接使用:

 pip install pocs-based-clustering

创建一个以10个簇为中心的5000个数据点的简单数据集:

 # Import packages
 importtime
 importmatplotlib.pyplotasplt
 
 fromsklearn.datasetsimportmake_blobs
 frompocs_based_clustering.toolsimportclustering
 
 
 # Generate a simple dataset
 num_clusters=10
 X, y=make_blobs(n_samples=5000, centers=num_clusters, \
                   cluster_std=0.5, random_state=0)
 
 plt.figure(figsize=(8,8))
 plt.scatter(X[:, 0], X[:, 1], s=50)
 plt.show()

执行聚类并显示结果:

 # POSC-based Clustering Algorithm
 centroids, labels=clustering(X, num_clusters, 100)
 
 # Display results
 plt.figure(figsize=(8,8))
 plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
 plt.scatter(centroids[:, 0], centroids[:, 1], s=100, c='red')
 plt.show()

总结

我们简要回顾了一种简单而有效的基于投影到凸集(POCS)方法的聚类技术,称为基于POCS的聚类算法。该算法利用POCS的收敛特性应用于聚类任务,并在一定程度上实现了可行的改进。在一些基准数据集上验证了该算法的有效性。

https://avoid.overfit.cn/post/bd811302f89c47fa8777c9f5bac8c59e

作者:LA Tran

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

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

相关文章

Vue3图片预览(Image)

本图片预览组件主要包括以下功能: 展示图片时,可设置鼠标悬浮时的预览文本;图像无法加载时要显示的描述;自定义图像高度和宽度;设置图像如何适应容器高度和宽度( fill(填充) | contain(等比缩放包含) | cov…

Node 06-包管理器

包管理工具 概念介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合 包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除, 上传等操作 借助包管理工具,可以…

ASEMI代理ADAU1701JSTZ-RL原装ADI车规级ADAU1701JSTZ-RL

编辑:ll ASEMI代理ADAU1701JSTZ-RL原装ADI车规级ADAU1701JSTZ-RL 型号:ADAU1701JSTZ-RL 品牌:ADI /亚德诺 封装:LQFP-48 批号:2023 安装类型:表面贴装型 引脚数量:48 类型:车…

向凯文·凯利提问:未来 5000 天我们将走向何处?

ChatGPT 的问世不禁让人遐想,接下来的 5000 天,将会发生什么事? 硅谷精神之父、世界互联网教父、《失控》《必然》的作者凯文凯利(Kevin Kelly,以下简称 K.K.)是这样预测的: 未来将会是一切都与…

WIFI-OmniPeek抓包

一、简介 有时候,我们需要抓取空口数据包来分析数据,此时就需要了解抓包软件如何使用。此时需要准备如下东西: SNIFFER:AC-12000 软件:OmniPeek 二:抓包 打开OmniPeek,新建捕获。 确认设备是否…

android studio ImageView和ImageButton和Button

1.ImageView 1.1代码显示 ImageView img findViewById(R.id.img); img.setImageResource(R.drawable.apple); 1.2XML <ImageViewandroid:layout_width"match_parent"android:layout_height"match_parent"android:id"id/img"android:src&qu…

如何用python写 翻译腔?时时刻刻优雅在线~

人生苦短&#xff0c;我用python 本文仅供参考 没有代码 看一乐呵就行 在家看完中配版国外经典电影之后&#xff0c;我的语气就变成了这样&#xff1a; " 我的老伙计&#xff0c;说真的&#xff0c;真是活见鬼。天气这么热&#xff0c;我们为什么不坐下喝杯咖啡呢&…

util-linix 实用程序包中包含了许多系统管理员常用的其它命令

util-linix 实用程序包中包含了许多系统管理员常用的其它命令。这些实用程序是由 Linux 内核组织发布的&#xff0c;这 107 条命令中几乎每一个都来自原本是三个单独的集合 —— fileutils、shellutils 和 textutils&#xff0c;2003 年它们被合并成一个包&#xff1a;util-lin…

家用洗地机有什么优缺点?平价洗地机推荐

随着社会经济的发展和人们生活水平的提高&#xff0c;对于清洁卫生的要求也越来越高。洗地机作为一种集高效、节能、环保、卫生等多重优点于一身的清洁设备&#xff0c;可以有效提高清洁效率和清洁质量&#xff0c;并且可以减少对环境的污染。不仅如此&#xff0c;洗地机的还有…

Linux线程:互斥锁、条件变量和信号量

本节重点&#xff1a; 1.学会线程同步。 2. 学会使用互斥量&#xff0c;条件变量&#xff0c;posix信号量&#xff0c;以及读写锁。 3. 理解基于读写锁的读者写者问题。 Linux线程互斥 相关概念&#xff1a; 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源 临界…

小红书达人种草怎么收费?

随着小红书平台的快速发展&#xff0c;用户数量在不断的上升&#xff0c;市场上也涌现出了很多的小红书营销公司&#xff0c;小红书营销主要是以小红书代写代发、品牌植入广告等方式来做品牌种草品宣。 小红书达人种草怎么收费这个问题&#xff0c;相信很多商家朋友都非常关心…

dockerfile 微服务 私有仓库

镜像编排 Dockerfile语法 CMD中的执行指令 放入前台运行 需要通过rpm -ql 包 | grep bao.service 看里面的启动命令 语法指令语法说明FROM基础镜像RUN制作镜像时执行的命令&#xff0c;可以有多个ADD复制文件到镜像&#xff0c;自动解压COPY复制文件到镜像&#xff0c;不解压…

Android Crash 前的最后抢救

众所周知,当 Andoird 程序发生未捕获的异常的时候,程序会直接 Crash 退出。而所谓安全气囊,是指在 Crash 发生时捕获异常,然后触发兜底逻辑,在程序退出前做最后的抢救。 一,Java捕获异常 在实现安全气囊之前,我们先思考一个问题,像 bugly、sentry 这种监控框架是如何…

深入认识VirtualPrivateNetwork

目录 一、认识什么是认证&#xff1f; 1.什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段? 2.什么是身份认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段? 二、认识什么是VPN 1.什么VPN技术? 2.VPN技术有哪些分类? 3.IPSEC技术能…

c++常见算法

目录 1、常见遍历算法 1.1、for_each遍历算法 1.2、、transform算法 2、常见的查找算法 2.1、find 算法查找元素 2.1.1、find 算法查找基本类型 2.1.2、find 算法查找自定义类型 2.2、find_if 按照条件查找 2.3、adjacent_find算法 查找相邻重复元素 2.4、binary_sear…

JavaSE-Map

Map集合 5.0 重点掌握 能够说出Map集合的特点能够使Map集合添加方法保存数据使用“键找值””键值对“的方式遍历Map集合使用HashMap存储自定义键值对的数据完成HashMap案例 5.1 Map集合概述 现实生活中&#xff0c;经常会出现这么一种集合&#xff1a;如 身份证与个人&…

web自动化测试入门篇06 —— 元素定位进阶技巧

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

camunda的manual task节点用途

Camunda的Manual Task用于在流程中暂停执行&#xff0c;直到人工干预完成某个任务。与User Task不同&#xff0c;Manual Task没有分配给特定用户或用户组&#xff0c;而是需要手动启动并指定下一步流程。 Manual Task可以用于以下场景&#xff1a; 1、流程执行需要等待人工干…

13-nginx

一 初始Nginx 1 Nginx概述 Nginx是一款轻量级的Web服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛应用。Nginx 专为性能优化而开发&#xff0c;使用异步非阻塞事件驱动模型。 常见服务器 …

MySQL基础——约束

前言 MySQL在我们工作中都会用到&#xff0c;那么我们最常接触的就是增删改查&#xff0c;而对于增删改查来说&#xff0c;我们更多的是查询。但是面试中&#xff0c;面试官又不会问你什么查询是怎么写的&#xff0c;都是问一些索引啊&#xff0c;事务啊&#xff0c; 底层结构…