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

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


deephub
提供专业的CV NLP和数据挖掘知识,更多的干货请关注 公众号 Deephub-IMBA
74 声望
24 粉丝
0 条评论
推荐阅读
使用NLPAUG 进行文本数据的扩充增强
在机器学习中,训练数据集的质量在很大程度上决定了模型的有效性。我们往往没有足够的多样化数据,这影响了模型的准确性。这时数据增强技术就派上了用场。

deephub

封面图
基于Sanic的微服务基础架构
使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力。有些异步框架Tornado、Twisted、Gevent 等就是为了解决性能问题。这些框架在性能上有些提升,但是也出现了各种古怪的问题难以...

jysong6阅读 4k评论 3

又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。

良许6阅读 1.9k

TOPI 简介
这是 TVM 算子清单(TOPI)的入门教程。 TOPI 提供了 numpy 风格的通用操作和 schedule,其抽象程度高于 TVM。本教程将介绍 TOPI 是如何使得 TVM 中的代码不那么样板化的。

超神经HyperAI1阅读 90.7k

编译 MXNet 模型
本篇文章译自英文文档 Compile MXNet Models。作者是 Joshua Z. Zhang,Kazutaka Morita。更多 TVM 中文文档可访问 →TVM 中文站。本文将介绍如何用 Relay 部署 MXNet 模型。首先安装 mxnet 模块,可通过 pip 快速...

超神经HyperAI1阅读 67.1k

编译 PyTorch 模型
本篇文章译自英文文档 Compile PyTorch Models。作者是 Alex Wong。更多 TVM 中文文档可访问 →TVM 中文站。本文介绍了如何用 Relay 部署 PyTorch 模型。首先应安装 PyTorch。此外,还应安装 TorchVision,并将其...

超神经HyperAI1阅读 93.1k

科罗拉多州立大学发布CSU-MLP模型,用随机森林预测中期恶劣天气
内容一览:近期,来自美国科罗拉多州立大学与 SPC 的相关学者联合发布了一个基于随机森林的机器学习模型 CSU-MLP,该模型能够对中期 (4-8天) 范围内恶劣天气进行准确预报。目前该成果刊已发表在《Weather and For...

超神经HyperAI阅读 63.8k

封面图
74 声望
24 粉丝
宣传栏