当前位置: 首页 > news >正文

DPC和DPC-KNN算法

密度峰值聚类(Density Peaks Clustering, DPC)算法详细描述

DPC是2014年提出的一种无监督聚类算法,核心思想是通过识别“局部密度高且与更高密度点距离远”的密度峰值点作为聚类中心,再将剩余样本分配到最近的聚类中心所属类别,无需预设聚类数量。

一、核心思想

DPC基于两个关键观察,定义聚类中心的核心特征:

  1. 局部密度高:聚类中心周围应该有较多的样本(即局部密度高于大部分邻居);
  2. 与更高密度点距离远:聚类中心与其他密度更高的点(仅比自身密度高的点)之间的距离应该较大(避免被归为其他聚类的“边缘点”)。

通过这两个特征,DPC能自动区分“聚类中心”“簇内样本”和“噪声点”(密度极低且与聚类中心距离远的样本)。

二、关键定义与公式

1. 距离矩阵(Distance Matrix)

首先计算所有样本间的距离(如欧氏距离、曼哈顿距离,需根据数据类型选择),得到距离矩阵 dijd_{ij}dijdijd_{ij}dij 表示样本 iii 与样本 jjj 的距离,dii=0d_{ii}=0dii=0)。

2. 局部密度(Local Density, ρ i \rho_i ρi

衡量样本 iii 周围的样本密集程度,有两种计算方式:

  • 截断核(Cut-off Kernel):更常用,需预设截断距离 dcd_cdc(核心参数,通常选择使每个样本平均有5%-20%的邻居落在 dcd_cdc 内)。
    公式:ρi=∑j≠iχ(dij−dc)\rho_i = \sum_{j \neq i} \chi(d_{ij} - d_c)ρi=j=iχ(dijdc),其中 χ(x)=1\chi(x) = 1χ(x)=1x<0x < 0x<0(即 dij<dcd_{ij} < d_cdij<dc),否则 χ(x)=0\chi(x) = 0χ(x)=0
    含义:样本 iii 周围距离小于 dcd_cdc 的样本数量,直接反映局部“拥挤程度”。
  • 高斯核(Gaussian Kernel):无需严格截断,适合对密度敏感的场景。
    公式:ρi=∑j≠iexp⁡(−(dij/dc)2)\rho_i = \sum_{j \neq i} \exp(-(d_{ij}/d_c)^2)ρi=j=iexp((dij/dc)2),距离越近的样本对 ρi\rho_iρi 的贡献越大。

3. 相对距离(Relative Distance, δ i \delta_i δi

衡量样本 iii所有密度高于自身的样本之间的最小距离,仅用于判断“是否为聚类中心”:

  • 若样本 iii全局密度最高的样本(无更高密度样本):δi=max⁡j(dij)\delta_i = \max_j(d_{ij})δi=maxj(dij)(取与所有样本的最大距离,确保其被识别为聚类中心);
  • 若样本 iii 不是全局密度最高:δi=min⁡j:ρj>ρidij\delta_i = \min_{j: \rho_j > \rho_i} d_{ij}δi=minj:ρj>ρidij(仅找密度比自身高的样本,取其中最小距离)。

4. 决策值(Decision Score, γ i \gamma_i γi

综合 ρi\rho_iρiδi\delta_iδi,量化样本 iii 作为聚类中心的可能性,γi\gamma_iγi 越大,越可能是聚类中心:
公式:γi=ρi×δi\gamma_i = \rho_i \times \delta_iγi=ρi×δi

三、算法步骤(核心流程)

DPC流程清晰,可分为5步,无需迭代计算:

  1. 计算距离矩阵:根据数据类型选择距离度量,生成所有样本间的 dijd_{ij}dij
  2. 计算局部密度 ρi\rho_iρi:选择核函数(通常用截断核),预设 dcd_cdc,计算每个样本的 ρi\rho_iρi
  3. 计算相对距离 δi\delta_iδi:对每个样本,找到密度更高的样本集合,计算最小距离(全局密度最高样本取最大距离);
  4. 识别聚类中心
    • 绘制 决策图(Decision Graph):以 ρi\rho_iρi 为横轴、δi\delta_iδi 为纵轴,每个样本对应一个点;
    • 手动或自动筛选 γi\gamma_iγi 显著高于其他样本的点(决策图中“孤立的高点”),这些点即为聚类中心;
  5. 分配剩余样本:对非聚类中心的样本,将其分配到“密度高于自身且距离最近的样本”所属的聚类(确保簇内样本的连续性)。

四、关键参数与调优

DPC的性能高度依赖 截断距离 dcd_cdc,调优逻辑如下:

  • 过小:大部分样本的 ρi=0\rho_i=0ρi=0(周围无样本),无法形成有效聚类中心;
  • 过大:所有样本的 ρi\rho_iρi 接近(全局密度均匀),难以区分聚类中心;
  • 调优方法:通常通过“平均邻居数”控制,使 dcd_cdc 满足“每个样本平均有5%-20%的邻居距离小于 dcd_cdc”,或通过多次实验观察决策图的清晰度(聚类中心是否明显)。

五、优缺点分析

优点

  1. 无需预设聚类数:通过决策图自动识别聚类中心,避免K-Means等算法“猜K值”的问题;
  2. 能处理非球形簇:不依赖“簇是凸集”的假设,可处理环形、条形等复杂形状的簇;
  3. 计算效率高:时间复杂度为 O(n2)O(n^2)O(n2)nnn 为样本数),无需迭代,适合中小样本(n<104n < 10^4n<104);
  4. 可识别噪声:密度极低且 δi\delta_iδi 较大的样本(γi\gamma_iγi 很小)可直接标记为噪声,无需额外处理。

缺点

  1. dcd_cdc 敏感dcd_cdc 的微小变化可能导致 ρi\rho_iρi 计算结果大幅波动,影响聚类中心识别;
  2. 高维数据表现差:高维数据中“距离”的区分度下降(维度灾难),导致局部密度计算不准,聚类效果退化;
  3. 大样本效率低O(n2)O(n^2)O(n2) 复杂度在 n>104n > 10^4n>104 时,距离矩阵存储和计算成本显著增加(需结合近似算法优化);
  4. 难处理密度差异大的簇:若两个簇的局部密度差异悬殊,低密度簇的中心可能因 ρi\rho_iρi 小而被误判为噪声。

六、适用场景

  • 数据规模:中小样本集(如语音情感特征片段、心理健康文本的小批量特征数据,匹配你的自杀风险预测研究中“局部样本分析”场景);
  • 簇形状:非球形、非凸形的复杂簇(如语音数据中不同情绪类别的特征簇);
  • 噪声容忍:需要自动过滤噪声的场景(如剔除语音数据中的无效片段)。

七、与其他聚类算法的核心区别

算法核心逻辑是否需预设聚类数适合簇形状时间复杂度
DPC密度峰值点作为聚类中心非球形O(n2)O(n^2)O(n2)
K-Means最小化簇内平方和球形O(nkt)O(nkt)O(nkt)(k=簇数,t=迭代次数)
DBSCAN基于“核心点-边界点-噪声”非球形O(nlog⁡n)O(n\log n)O(nlogn)

DPC的核心优势是“无预设簇数+复杂簇处理”,但效率低于DBSCAN,高维数据表现不如基于降维的聚类(如先通过PCA降维再用DPC)。

DPC-KNN(基于K近邻的密度峰值聚类算法)

DPC-KNN算法是在密度峰值聚类(DPC) 基础上,结合k近邻(KNN) 思想提出的改进聚类算法。其核心目标是解决原DPC对全局截断距离 dcd_cdc 敏感、高维数据表现差、大样本计算效率低等问题,通过KNN的“局部邻域”特性优化局部密度和相对距离的计算,增强算法的适应性和稳定性。

一、核心改进动机

原DPC的局限性主要源于:

  1. 局部密度 ρi\rho_iρi 依赖全局截断距离 dcd_cdc,而 dcd_cdc 难以适应数据的局部分布差异(如同一数据集内不同区域密度悬殊时,dcd_cdc 无法兼顾);
  2. 计算全局距离矩阵的时间复杂度为 O(n2)O(n^2)O(n2),大样本(n>104n > 10^4n>104)场景下效率极低;
  3. 高维数据中“全局距离”的区分度下降(维度灾难),导致局部密度和相对距离计算失真。

KNN的优势在于:通过“每个样本的k个最近邻居”定义局部结构,不依赖全局参数,能更好捕捉数据的局部分布,且可通过KD树、球树等结构高效计算(时间复杂度约 O(nlog⁡n)O(n\log n)O(nlogn))。因此,DPC-KNN通过KNN重构DPC的核心计算步骤,兼顾聚类效果与效率。

二、关键定义与改进

DPC-KNN保留DPC“密度峰值作为聚类中心”的核心逻辑,但对局部密度相对距离的计算方式进行了根本性调整,用“k近邻邻域”替代原DPC的“全局截断距离邻域”。

1. k近邻邻域(KNN Neighborhood)

对每个样本 iii,先找到其k个最近的样本(通过欧氏距离、余弦距离等度量),构成局部邻域 Ni={j1,j2,...,jk}N_i = \{ j_1, j_2, ..., j_k \}Ni={j1,j2,...,jk},其中 j1j_1j1 是与 iii 距离最近的样本,jkj_kjk 是第k近的样本。

  • 优势:邻域大小由k控制(而非全局 dcd_cdc),能自适应不同区域的局部密度(密集区域邻域距离小,稀疏区域邻域距离大)。

2. 局部密度(Local Density, ρ i \rho_i ρi

基于k近邻邻域计算,更贴合局部数据分布,常用两种方式:

  • 计数型:直接以k近邻内的样本数(即k)作为局部密度(适用于密度均匀的场景),但忽略距离差异。
    公式:ρi=k\rho_i = kρi=k(简化版,强调邻域存在性)。
  • 距离加权型:考虑样本与k近邻的距离,距离越近权重越大,更能反映局部“拥挤程度”。
    公式:ρi=∑j∈Ni1dij\rho_i = \sum_{j \in N_i} \frac{1}{d_{ij}}ρi=jNidij1ρi=∑j∈Niexp⁡(−dij2)\rho_i = \sum_{j \in N_i} \exp(-d_{ij}^2)ρi=jNiexp(dij2)(距离越近,贡献越大)。

3. 相对距离(Relative Distance, δ i \delta_i δi

原DPC中 δi\delta_iδi 依赖“全局高密度样本”,DPC-KNN改为基于“k近邻内的高密度样本”,减少全局搜索成本:

  • 若样本 iii全局密度最高的样本δi\delta_iδi 定义为与k近邻中最远样本的距离(或全局最远距离,确保其为聚类中心);
  • 否则:δi=min⁡j∈Ni,ρj>ρidij\delta_i = \min_{j \in N_i, \rho_j > \rho_i} d_{ij}δi=minjNi,ρj>ρidij(仅在k近邻中找密度更高的样本,取最小距离)。
  • 优势:避免全局遍历所有样本,计算效率从 O(n2)O(n^2)O(n2) 降至 O(nk)O(nk)O(nk)(k远小于n)。

4. 决策值( γ i \gamma_i γi

与DPC一致,仍为局部密度与相对距离的乘积,用于衡量样本作为聚类中心的可能性:
γi=ρi×δi\gamma_i = \rho_i \times \delta_iγi=ρi×δiγi\gamma_iγi 越大,越可能是聚类中心。

三、算法步骤

DPC-KNN的流程在DPC基础上优化,核心步骤如下:

  1. 计算k近邻邻域
    对每个样本 iii,用KNN算法找到其k个最近邻,构建邻域 NiN_iNi,并记录邻域内样本的距离 dijd_{ij}dijj∈Nij \in N_ijNi)。

  2. 计算局部密度 ρi\rho_iρi
    基于邻域 NiN_iNi,选择计数型或距离加权型公式计算 ρi\rho_iρi(推荐加权型,更精准)。

  3. 计算相对距离 δi\delta_iδi
    对每个样本 iii,在其k近邻 NiN_iNi 中筛选密度高于自身的样本(ρj>ρi\rho_j > \rho_iρj>ρi),取其中最小距离作为 δi\delta_iδi;若邻域内无更高密度样本,则在全局找密度更高的样本(仅针对低密度样本,减少计算量)。

  4. 识别聚类中心
    绘制决策图(横轴 ρi\rho_iρi,纵轴 δi\delta_iδi),筛选 γi\gamma_iγi 显著高于其他样本的点作为聚类中心(与DPC逻辑一致)。

  5. 分配剩余样本
    对非聚类中心样本,将其分配到“k近邻中密度最高且距离最近的样本”所属的聚类(确保局部连续性,避免跨簇分配)。

四、关键参数与调优

DPC-KNN的核心参数是近邻数k(替代原DPC的 dcd_cdc),调优逻辑如下:

  • k过小:邻域覆盖不足,局部密度计算片面,易误判聚类中心;
  • k过大:邻域包含过多远样本,局部结构被稀释,难以区分不同簇;
  • 调优方法:通常取 k=5∼20k = 5 \sim 20k=520(根据样本量调整,大样本可适当增大k),或通过“肘部法”观察聚类效果(如轮廓系数最大时的k)。

五、优缺点分析

优点

  1. 参数更易调优:用k(近邻数)替代全局 dcd_cdc,k的物理意义更直观(“每个样本参考多少个邻居”),且对数据局部分布的适应性更强;
  2. 效率大幅提升:避免计算全局距离矩阵,时间复杂度降至 O(nk)O(nk)O(nk)(k远小于n),可处理大样本(n>105n > 10^5n>105);
  3. 高维数据适应性更好:KNN的局部邻域能缓解高维数据中“全局距离失效”问题,局部密度计算更可靠;
  4. 继承DPC的优势:无需预设聚类数,可处理非球形簇,能识别噪声(低密度且 δi\delta_iδi 大的样本)。

缺点

  1. 对k仍敏感:不同k可能导致邻域结构差异,影响局部密度和聚类中心识别(但比 dcd_cdc 更稳定);
  2. 簇密度差异大时仍有挑战:若两个簇的局部密度差异悬殊,低密度簇的中心可能因 ρi\rho_iρi 较小被误判为非中心;
  3. 依赖KNN的距离度量:高维数据中若距离度量(如欧氏距离)失效,KNN邻域不准确,会传导至后续计算。

六、与原DPC的核心差异

对比维度DPCDPC-KNN
邻域定义全局截断距离 dcd_cdc 内的样本每个样本的k个最近邻
局部密度计算依赖全局距离矩阵基于局部k近邻(加权或计数)
时间复杂度O(n2)O(n^2)O(n2)(全局距离计算)O(nk)O(nk)O(nk)(k为近邻数)
参数敏感性dcd_cdc 高度敏感对k较敏感,但调优更简单
大样本/高维适配较好(依赖KNN优化)

七、适用场景

  • 数据规模:中大型样本集(如用户行为数据、图像特征向量,n=104∼106n = 10^4 \sim 10^6n=104106);
  • 数据维度:中高维数据(如文本TF-IDF特征、语音频谱特征,维度50~500);
  • 簇分布:局部密度差异大但整体有明显聚类中心的场景(如用户分群中“活跃用户”与“低频用户”的聚类)。

综上,DPC-KNN通过KNN的局部邻域思想重构了DPC的核心计算,在保持聚类灵活性的同时,显著提升了效率和高维数据适应性,是对DPC的重要改进。

http://www.dtcms.com/a/507834.html

相关文章:

  • git中tag标签远程管理
  • Babylon.js UtilityLayerRenderer 深度解析:创建3D工具与调试层的完整指南
  • 如何制造一个网站网站的图片怎么更换
  • 区块链安全评估:守护数字世界的“安全密码”
  • 多语言网站建设公司教你做企业网站
  • 第19节-非规范化数据类型-Drop-Type
  • docker desktop的容器间通信
  • 宝安做网站的公司企业文化经典句子
  • 学校二级网站建设百度关键词优化怎么做
  • 百度前端面试准备
  • 立创EDA学习(一、新建项目与自定义元件)
  • dify项目智能记账
  • 使用Jmeter进行接口测试:HTTP请求与响应报文结构详解
  • 前端6:CSS3 2D转换,CSS3动画,CSS3 3D转换
  • Python中使用SQLite
  • 简约个人网站欣赏wordpress pdf view
  • JVM 的启动器类解读 -- sun.misc.Launcher
  • java Servlet 概念讲解 以及和Golang概念对比
  • CoAtNet:让卷积与注意力在所有数据规模上“联姻”,CNN+Transformer融合
  • 个人网站的建设流程博物馆网站做的好的
  • 中间件与CORS(基于fastapi)
  • 【Go】P8 Go 语言核心数据结构:深入解析切片 (Slice)
  • 使用Wireshark测试手机APP网络通信完整指南
  • 【AI论文】MemMamba:对状态空间模型中记忆模式的重新思考
  • 郴州建站扁平化网站后台
  • 请问做网站和编程哪个容易些网站建设一般的流程
  • 三地两中心架构介绍
  • Harmony鸿蒙开发0基础入门到精通Day01--JavaScript篇
  • CCIE好像越来越销声匿迹了......
  • 自己做ppt网站汕头网站制作哪里好