一种新型聚类算法(Clustering by fast search and find of density peaksd)

2023-12-24 17:38

本文主要是介绍一种新型聚类算法(Clustering by fast search and find of density peaksd),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者在这篇文章中介绍了一种新型的聚类算法 -- 基于密度的聚类算法。

灵感来源

经典的聚类算法K-means是通过指定聚类中心,再通过迭代的方式更新聚类中心的方式,由于每个点都被指派到距离最近的聚类中心,所以导致其不能检测非球面类别的数据分布。虽然有DBSCAN(density-based spatial clustering of applications with noise)对于任意形状分布的进行聚类,但是必须指定一个密度阈值,从而去除低于此密度阈值的噪音点。

这篇文章假设聚类中心周围都是密度比其低的点,同时这些点距离该聚类中心的距离相比于其他聚类中心最近。

聚类方法

对于每一个数据点i,需要计算两个量一个是局部密度 和与高于i点密度的最小距离。

局部密度定义如下:


 当x<0,,否则。这里是一个截断距离,文中为所有点的相互距离中由小到大排列占总数2%的位置距离数值定义。算法只关心的量级因此对于的选择比较鲁棒。

距离定义如下:



所有比i点密度高的所有点的最近距离表示。对于最大密度的点其为所有点与点距离的最大值

找出聚类中心:

以下A图为例,所有点的密度值按照由高到低排列,“1”表示密度最高的点。B图中画图每个点和的函数关系,从中可以看出“9”和“10”号点拥有相近的密度值但是其不同,这里“9”属于“1”号类别。“26”、“27”和“28”号点有一个相对较大的,但是其太小,这主要是因为它们是孤立点。 这里可以通过给定的min和min筛选出同时满足(>min)和(>min)条件的点作为距离中心点。




剩余点的类别指派:

当聚类中心确定之后,剩下的点的类别标签指定按照以下原则:

当前点的类别标签等于高于当前点密度的最近的点的标签一致。从而对所有点的类别进行了指定。如下图所示,编号表示密度高低,“1”表示密度最高,以此类推。“1”和“2”均为聚类中心,"3"号点的类别标签应该为与距离其最近的密度高于其的点一致,因此“3”号点属于聚类中心1,由于“4”号点最近的密度比其高的点为“3”号点,因此其类别标签与”3“号相同,也为聚类中心1。




在对每一个点指派所属类别之后,这里文章没有人为直接用噪音信号截断的方法去除噪音点,而是先算出类别之间的边界,然后找出边界中密度值最高的点的密度作为阈值只保留前类别中大于或等于此密度值的点,这里将此密度阈值记为

类别间边界确定:

以下图为例,对于类别1中的所有点,计算与其他类别中所有点距离小于等于的最大密度值,例如“1”号点由于其距离其他类别的点的距离均大于,因此不予考虑。由下图可以看出密度第6的值距离其他类别最近所以=(6),由于“7”号点的密度(7)<, 因此将其作为噪音点去除,最后得到的类别1的点为绿色圈所示“1”、“3”和“6”。





聚类效果展示

下图是一个非球形类分布图,同时加入黑色噪音点后,A图为类的概率分布,B、C图为4000个和1000个样本点,E和F生成的每个点对应的的函数图,可以明显看出类别中心及个数。F图为随着样本点的增加,错误指派点的比率。


以下是使用该算法在其他数据集上进行聚类的效果图




算法优点

        该聚类算法可以得到非球形的聚类结果,可以很好地描述数据分布,同时在算法复杂度上也比一般的K-means算法的复杂度低。

同时此算法的只考虑点与点之间的距离,因此不需要将点映射到一个向量空间中。

算法缺点

需要事先计算好所有点与点之间的距离。如果样本太大则整个距离矩阵的内存开销特别大,因此如果只需要得到最终聚类中心,则可以考虑牺牲速度的方式计算每一个样本点的,避免直接加载距离矩阵。


参考文献

Rodriguez, Alex, and Alessandro Laio. "Clustering by fast search and find of density peaks." Science 344.6191 (2014): 1492-1496.

这篇关于一种新型聚类算法(Clustering by fast search and find of density peaksd)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532581

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个