详解基于凸集投影方法的聚类算法

译文 精选
大数据 数据分析
聚类分析(或聚类)是一种数据分析技术,它能够探索和分组一组向量(或数据点),使同一聚类中的向量彼此之间比其他聚类中的向量更相似。聚类算法被广泛应用于例如数据分析、模式识别和图像处理等许多应用场景中。

译者 | 朱先忠

审校 | 重楼

聚类分析(或聚类)是一种数据分析技术,它能够探索和分组一组向量(或数据点),使同一聚类中的向量彼此之间比其他聚类中的向量更相似。聚类算法被广泛应用于例如数据分析、模式识别和图像处理许多应用场景中。

本文介绍一种新的基于凸集投影(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 time
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from pocs_based_clustering.tools import clustering
# 生成一个简单的数据集
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()

现在,使用内置函数执行聚类并显示实验结果:

# 基于凸集投影方法的聚类算法
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页面分享有关机器学习的内容:深入机器学习。我的其他值得注意的帖子也可以在下面这些内容中找到:

译者介绍

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

原文标题:POCS-based Clustering Algorithm Explained,作者:LA Tran



责任编辑:华轩 来源: 51CTO
相关推荐

2023-04-02 14:16:45

凸集算法集合

2019-10-12 10:11:02

数据集聚类算法

2023-10-31 09:00:00

2017-04-07 13:00:49

机器学习大数据聚类算法

2017-04-05 09:20:14

聚类算法机器学习大数据

2014-07-02 10:34:08

聚类算法算法

2017-05-15 11:10:10

大数据聚类算法

2020-07-09 15:26:18

Python聚类算法语言

2020-05-13 15:57:59

聚类分析算法监督学习

2016-09-30 01:10:12

R语言聚类方法

2011-07-26 10:16:14

SQL Server数据挖掘

2011-07-25 15:39:49

SQL SERVER数聚类算法顺序聚类算法

2022-07-29 10:31:33

算法Python

2022-05-17 09:14:50

聚类算法python

2022-03-03 19:52:25

聚类算法D2CDBSCAN

2022-09-07 23:54:17

机器学习无监督学习算法

2018-05-28 15:33:09

无监督学习算法Python

2023-12-01 16:27:05

机器学习无监督学习

2023-11-26 18:26:26

聚类评价指标监督学习

2014-01-07 09:38:34

OpenFlowSDN测试
点赞
收藏

51CTO技术栈公众号