CFDP:聚类算法

news2025/1/13 7:23:45

Clustering by Fast Search and Find of Density Peaks(CFDP)  - 发表于2014 science期刊

聚类算法,作为机器学习里常用的一种无监督方法,一直以来都受到很大的关注。聚类算法,是希望把同一类的样本或者样本聚到一起,比如说常见的图像分类,我们希望猫的图片能聚到一起,狗的图片能聚到一起,不希望猫和狗的图片混在一起。经典的聚类算法K-means是通过指定聚类中心,再通过迭代的方式更新聚类中心的方式,由于每个点都被指派到距离最近的聚类中心,所以导致其不能检测非球面类别的数据分布。虽然有DBSCAN(density-based spatial clustering of applications with noise)对于任意形状分布的进行聚类,但是必须指定一个密度阈值,从而去除低于此密度阈值的噪音点。

该算法假设:

  1. 聚类中心周围都是密度比其低的点;

  2. 这些点距离该聚类中心的距离相比于其他聚类中心来说是最近的。

CFDP算法就是基于这两个假设来识别和查找聚类中心:

1、局部密度:

已知任意两点 i 和 j 间的距离的度量为dij

  • dc为参数,用来体现邻域的大小;

  • ρi越大表示点 i 局部密度越大,越有可能成为聚类中心。

2、相对距离:

  • δi 表示密度大于点 i 的点中到点i的最小距离,该值越大,表示点 i 距离高密度点的距离越远,则点 i 越有可能成为聚类中心;

  • 如果点 i 的密度为全局最大,则令δi的值为到点 i 的最大距离。

根据上述步骤,我们已经求的了样本点距离向量和密度向量。根据公式,将距离值和密度值综合考虑:

将点成得到大小为mx1的向量记为score,将score从大到小排序后,若需要N个聚类,则从score中取出前N个点作为聚类中心。如下图,得到聚类中心1、10。

当聚类中心确定之后,就要为m个样本点分配它们所属的类别了:

例如4样本点的上级是3,那么我们需要去寻找3的上级是谁,得到3的上级是1且为聚类中心,那么就停止寻找。此时4的类别就是1了。所以最终得到下图类别所属向量里面的元素只有1和2。

下面就是该算法最让我惊艳的部分了,它可以自动筛出噪点,无需人为设置阈值,更加的“自动化”。

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

首先为每个类簇定义一个边界区域,即分配到该类簇但于其它类簇的点的距离小于dc(截断距离)的点的集合。然后为每个类簇找到其边界区域中密度最高的点,并以该点的密度作为阀值来筛选类簇。

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

最后做个总结:

找到聚类中心后,对每一个点进行簇的归属,相比其他的算法,CFDP不需要迭代计算,要远低于K-means算法的复杂度。

算法可以得到非球形的聚类结果,很好地描述数据分布。左图为CFDP结果,右图为K-MEANS结果,迭代10000步。K-means方法是在使用了正确的K值的条件进行优化。在大多数情况下,聚类结果都不符合视觉结果。而CFDP算法能适应各种不规则的数据分布

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

大家有更好的想法欢迎到评论区留言互动~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BIRT 横向分栏

【问题】 I have a table which will displays User ids in one column. I want to display that column as two columns Ex. In First Row, First user id in Column 1 and Second user id in Column2, In Second Row, second user id in Column 1 and third user id in Co…

教育机构客户管理系统功能方案详解!

前言&#xff1a; 教育机构客户管理系统怎么做&#xff1f;哪个好&#xff1f;还在为客户流失而烦恼的你&#xff0c;一定很困恼&#xff0c;别人是怎么留住客户的呢&#xff1f;今天就来告诉你。 随着我国产业结构升级&#xff0c;在政策顶层推动和经济主体需求转变的共同影…

nlp工具库spacy

文章目录spacy能做什么如何安装案例 分词功能spacy是一个辅助自然语言处理的工具库。 spacy能做什么 它集成了各种实用的句子分析功能&#xff0c;包括分词、词性分析、词性还原等等&#xff0c;所有功能特性可参考官网 spacy-101的features一章&#xff0c;有Tokenization、…

ROS MarkerArray的几种常见用法

ros使用过程中&#xff0c;经常会用到rviz可视化各种数据。而在rviz中&#xff0c;marker与markerarray是常用的一种可视化工具&#xff0c;最近也用到过几次了&#xff0c;这里随手记录一下。 1、makerarray画线 在marker中常见的就是表示两点之间的连线&#xff0c;而marke…

【LeetCode】1752. 检查数组是否经排序和轮转得到

题目描述 给你一个数组 nums 。nums 的源数组中&#xff0c;所有元素与 nums 相同&#xff0c;但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置&#xff08;包括 0 个位置&#xff09;得到&#xff0c;则返回 true &#xff1b;否则&#xff0c;返回 false 。 源数组…

怎么提高外贸开发信的回复率?

写客户开发信是每个外贸人都必备的技能。对于成本预算小的企业来讲&#xff0c;开发信是性价比非常高的一种方式。但是&#xff0c;很多人在写完开发信之后并没有收获到比较好的回复效果&#xff0c;可能是因为他们没有把握写开发信的技巧。怎么提高外贸开发信的回复率&#xf…

挖掘数据价值,华为云大数据BI解决方案有绝招

在没有接触电子商务时&#xff0c;就一直很好奇&#xff0c;他们是怎么知道我需要什么并及时推送给我的&#xff0c;直到后来自己也开始做电商的时候&#xff0c;才知道原来电子商务必不可少的是大数据分析方案。在这里我强烈给同业者们安利一下华为云的大数据BI解决方案&#…

大厂都在用MyBatis,跳槽的时候MyBatis更是面试必问的内容,那你对于MyBatis又掌握了多少呢?这份MyBatis源码解析值得拥有!

MyBatis作为一个流行的半自动ORM框架&#xff0c;里面融合了许多优秀的设计理念&#xff0c;分析其源码骨架能够帮你建立良好的项目设计经验。由于其比较复杂&#xff0c;我会分成几篇来讲&#xff0c;一起踏上征服的旅程吧&#xff01; 首先把MyBatis源码包导入到idea&#x…

PC_非连续内存分配方式@分页存储管理@地址变换机构@快表@有效访存时间

文章目录非连续内存分配方式&#x1f388;分页存储管理基本分页存储管理页面和页面大小分块和碎片逻辑地址结构页表页表项结构页表项和地址比较&#x1f388;页表项地址地址变换机构基本地址变换机构结构图映射过程Note:页表长度页表项长度页表大小例小结ref具有快表的地址变换…

xxl-job安装部署

一、简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 中文文档English Documentation 二、安装 xxl-job需要的提前安装好以下环境&#xff1a;jdk、m…

A-Level物理例题解析及练习Projectile Motion

今日知识点&#xff1a;Magnetic Force例题 Q: A proton p and an electron e, with the same velocity, enter a magnetic field which is perpendicular to the direction of their motion. The field acts into the page. Which of the following diagrams best represents …

Spire.XLS for Java 12.11.8 Excel to PDF bug Fix

谷歌找破解版Spire.XLS for Java is a professional Java Excel API that enables developers to create, manage, manipulate, convert and print Excel worksheets without using Microsoft Office or Microsoft Excel. Spire.XLS for Java supports both for the old Excel …

Spark系列之Spark的Shuffle详解及相关参数调优

title: Spark系列 第七章 Spark的Shuffle详解及相关参数调优 ​ 大多数Spark作业的性能主要就是消耗在了shuffle环节&#xff0c;因为该环节包含了大量的磁盘IO、序列化、网 络数据传输等操作。因此&#xff0c;如果要让作业的性能更上一层楼&#xff0c;就有必要对shuffle过程…

数图互通高校房产管理——公房管理功能详解

数图互通房产管理系统在这方面做得比较全面&#xff1b; 公用房管理 1 房屋档案 可维护校区信息、公房的楼栋信息、公房的房间信息&#xff0c;记录校区的名称、建成年份、占地面积、建筑面积等基本信息。记录楼栋的编号、名称、建筑面积、使用面积等基本信息&#xff0c;同…

[附源码]计算机毕业设计springboot超市商品管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

企业研发数据:省级工业企业研发费用、企业非真实研发支出原始数据加计算stata do代码两大维度指标

1、省级工业企业研发费用 1、数据来源&#xff1a;Wind 2、时间跨度&#xff1a;2008-2019年 3、区域范围&#xff1a;全国31省(区分了东中西部地区&#xff09; 4、指标说明&#xff1a; 包含如下指标&#xff1a; 省级规模以上工业企业R&D经费 省级规模以上工业企…

Kotlin高仿微信-第8篇-单聊

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

http和dubbo接口调用主动设置超时时间

http接口超时方案 方案1&#xff1a;多个resttemplate&#xff0c;不同超时时间的使用不同的template&#xff0c;优点&#xff1a;简单&#xff0c;扩展起来复制粘贴&#xff0c;缺点&#xff1a;代码冗余&#xff0c;多个template占用内存不够优雅 方案2&#xff1a;单个res…

MySQL事务和锁

目录 1、四大特性 2、事务引发的问题 3、事务控制演进 3.1、排队 3.2、排它锁 3.3、读写锁 3.4、MVCC 4、事务的隔离级别 4.1、四种隔离级别 4.2、事务隔离级别和锁的关系 4.3、MySQL隔离级别控制 5、锁机制和实战 5.1、锁分类 5.1.1、按操作粒度分类 5.1.2、按…

CDMP选修课都有什么?

大家都知道CDMP认证考试有四个级别。分别是A级&#xff08;基础级&#xff09;P级&#xff08;实践级&#xff09;M级&#xff08;专业级&#xff09;F级&#xff08;大师级&#xff09;。级别越高&#xff0c;考试难度就越大&#xff0c;分数比例要求也更高&#xff0c;相对应…