聚类分析(或聚类)是一种数据分析技术,它能够探索和分组一组向量(或数据点),使同一聚类中的向量彼此之间比其他聚类中的向量更相似。聚类算法被广泛应用于例如数据分析、模式识别和图像处理等许多应用场景中。
(资料图)
译者 | 朱先忠
审校 | 重楼
聚类分析(或聚类)是一种数据分析技术,它能够探索和分组一组向量(或数据点),使同一聚类中的向量彼此之间比其他聚类中的向量更相似。聚类算法被广泛应用于例如数据分析、模式识别和图像处理等许多应用场景中。
本文将介绍一种新的基于凸集投影(POCS:Projection onto Convex Sets)方法的聚类算法,称为基于POCS的聚类算法。最初的论文在IWIS2022中介绍,源代码也已在Github上发布。
凸集被定义为一组数据点,其中连接该集合中任意两个点x1和x2的线段完全包含在该集合中。根据凸集的定义,空集∅、单例集、线段、超平面和欧氏球都被认为是凸集。数据点也被认为是凸集,因为它是单例集(一个只有一个元素的集合)。由这一概念启示我们可发现一条新的研究路径,即凸集投影的概念可以应用于聚类数据点。
首先,让我们一起简单回顾一下凸集投影的概念(没有方程形式)。凸集投影的方法大致可以分为两种形式:交替和平行。
从数据空间中的任意点开始,从该点到两个(或多个)相交凸集的交替投影将收敛到集合的交点内的一个点。下图给出了相应的图形化说明。
当凸集不相交时,交替投影将收敛到贪婪极限环,贪婪极限环取决于投影的阶数。
与交替形式不同,并行形式的凸集投影同时执行从数据点到所有凸集的投影,并且每个投影具有重要的权重。对于两个非空相交凸集,类似于交替版本,平行投影收敛到集合的相交点。
在不相交凸集的情况下,投影将收敛到最小化解。基于凸集投影的聚类算法的主要思想正是从这一性质出发产生的。
有关凸集投影的更多详细信息,您可以访问原始论文和/或其他一些推荐论文(包括可用的pdf文件):
模糊凸集上的交替投影膨胀凸集投影:极小极大凸优化利用并行凸集投影方法的收敛性,作者提出了一种非常简单但(在一定程度上)有效的聚类算法。该算法以类似于经典K-Means算法的精神进行操作,但每个算法处理每个数据点的方式存在差异,即K-Means方法以相等的加权重要性处理每个数据点。然而,另一方面,基于凸集投影的聚类算法,以不同的重要性权重处理每个数据点,该重要性权重与从数据点到集群原型的距离成正比。
该算法的伪代码如下所示:
作者们从网站聚类基本基准出发,在一些公共基准数据集上检验了基于凸集投影的聚类算法的性能。下表总结了这些数据集的描述。
在本文中,作者将基于凸集投影的聚类算法与其他传统聚类方法(包括K-Means和模糊C-Means算法)的性能进行了比较。下表总结了针对执行时间和集群错误方面的评估结果。
可视化聚类结果也如下图所示:
有关更多详细信息,您可以在此处查看原始论文。
让我们在一个非常简单的数据集上使用这个算法。为了简单起见,可以使用以下命令安装已发布的算法包:
pip install pocs-based-clustering
首先,让我们导入几个必要的包,并创建一个简单的数据集,其中以10个集群为中心,周围环绕着5000个数据点:
#导入包import timeimport matplotlib.pyplot as pltfrom sklearn.datasets import make_blobsfrom pocs_based_clustering.tools import clustering# 生成一个简单的数据集num_clusters = 10X, 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()
现在,使用内置函数执行聚类并显示实验结果:
# 基于凸集投影方法的聚类算法centroids, labels = clustering(X, num_clusters, 100)# 显示结果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)方法的简单而有效的聚类技术,称为基于凸集投影的聚类算法。该算法利用凸集投影的收敛性将其应用于聚类任务,并在一定程度上实现了可行的改进。该算法的有效性已经在一些基准数据集上得到了验证。
原始论文可以在arXiv(预印本:https://arxiv.org/abs/2208.08888)或IEEE Xplore(已发表论文:https://ieeexplore.ieee.org/document/9920762)上找到。该代码也在Github代码仓库网站上发布。
我很高兴并欢迎您来到我的Facebook页面分享有关机器学习的内容:深入机器学习。我的其他值得您注意的帖子也可以在下面这些内容中找到:
EDN-GTMMetaFormerDarkerasEFPN:扩展特征金字塔网络Data augmentation(数据增强)Data Distillation(数据蒸馏)以及我的网页中的其他文章。推荐阅读
关于我们| 联系方式| 版权声明| 供稿服务| 友情链接
咕噜网 www.cngulu.com 版权所有,未经书面授权禁止使用
Copyright©2008-2023 By All Rights Reserved 皖ICP备2022009963号-10
联系我们: 39 60 29 14 2@qq.com