POCS: 볼록 세트에 대한 투영. 수학에서 볼록 집합은 두 점 사이의 선분이 집합 내에 있는 집합입니다. 투영은 한 점을 다른 공간의 하위 공간에 매핑하는 작업입니다. 볼록 집합과 점이 주어지면 점의 볼록 집합에 대한 투영을 찾아 연산할 수 있습니다. 투영은 점에 가장 가까운 볼록 집합의 점이며 이 점과 볼록 집합의 다른 점 사이의 거리를 최소화하여 계산할 수 있습니다. 투영이기 때문에 특징을 다른 공간의 볼록한 집합에 매핑할 수 있으므로 클러스터링이나 차원 축소와 같은 작업을 수행할 수 있습니다.
이 글에서는 볼록 집합 투영법 기반의 클러스터링 알고리즘, 즉 POCS 기반의 클러스터링 알고리즘을 검토합니다. 원본 논문은 IWIS2022에 게재되었습니다.
볼록 집합은 데이터 점 집합으로 정의되며, 집합의 두 점 x1과 x2를 연결하는 선분은 이 집합에 완전히 포함됩니다. 볼록 집합의 정의에 따르면 빈 집합 ∅, 단일 집합, 선분, 초평면 및 유클리드 구는 모두 볼록 집합으로 간주됩니다. 데이터 포인트는 싱글톤 세트(단 하나의 요소만 포함하는 세트)이기 때문에 볼록 세트로 간주됩니다. 이는 클러스터링된 데이터 포인트에 POCS 개념을 적용하기 위한 새로운 경로를 열어줍니다.
POCS 방법은 대략 교대형과 병렬형의 두 가지 유형으로 나눌 수 있습니다.
데이터 공간의 임의 지점에서 시작하면 이 지점에서 두 개(또는 그 이상)의 교차하는 볼록 집합으로의 교대 투영은 다음 그림과 같이 집합 교점 내의 한 지점으로 수렴됩니다.
pip install pocs-based-clustering10개의 클러스터를 중심으로 5000개의 데이터 포인트로 구성된 간단한 데이터 세트 만들기:
# Import packages import time import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from pocs_based_clustering.tools import clustering # 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://arxiv.org/abs/2208.08888
作者发布的源代码在这里:https://github.com/tranleanh/pocs-based-clustering
위 내용은 볼록 집합 투영(POCS)을 기반으로 하는 클러스터링 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!