博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密度峰值聚类算法——心得总结
阅读量:4626 次
发布时间:2019-06-09

本文共 822 字,大约阅读时间需要 2 分钟。

这是离开公司前做的最后一个算法,之前做的一些算法,由于老大的指点,少走了很多弯路,密度峰值聚类这个是纯粹自己做的,走了很多弯路,在这里和大家分享借鉴一下,共勉!

 

一、简单介绍及原理

顾名思义,这是一种基于密度的聚类算法,以高密度区域作为判断依据,这种非参数的方法,和传统方法比,适用于处理任何形状的数据集,而且无需提前设置簇的数量。

这里提到一个聚类中心的概念:类簇的中心是由一些局部密度较低的点所围绕,且这些点距离其他高密度的点的距离都比较远,通过计算最近邻的距离,得到聚类中心,并依据密度大小进行排列。

我在这里借鉴了——马春来,单洪,马涛.一种基于簇中心点自动选择策略的密度峰值聚类算法.计算机科学.2016,43(7)。这个文献中提供了一种自动选择策略的方法,大家有兴趣可以看一下。

对于一个数据集D={p1,p2,……pn}的点pi,计算每个点的局部密度ρi和相邻密度点的距离di,这里提出一个概念,簇中心权值:γi= ρi * di  。

通过将簇中心权值降序排列,我们可以通过下降的趋势(斜率)找出拐点所在。

下图为选择聚类中心的方法

省略了不少东西,大家可以下载那份文献自己细细研读。

 

二、一些遇到的问题及我的心得

1、有现成的代码固然好,但是别人的代码解决的问题终归和你的问题不一样。不如自己从头到尾撸一遍,结合自己的情况进行修改。

2、传统的密度峰值聚类需要自己设置参数,稍微加以改进可以扔掉参数,让它自己迭代。

3、为什么要将密度和距离相乘:这样可以避免某一项的值过小,导致特征不明显

4、注意归一化的问题,具体情况具体对待。(在归一化这个问题坑了我蛮久)

5、拐点的确定问题,在算法构建的初始阶段,最好人工重复确认一下,避免盲目自信到后面找不到问题所在。

6、若某两个或多个聚类点距离较近,将其归为一个同一个聚类中心。

 

转载于:https://www.cnblogs.com/bo-liang/p/9799034.html

你可能感兴趣的文章
OpenCV---环境安装和初次使用
查看>>
回调函数的经典代码使用
查看>>
【学术篇】bzoj3262 陌上花开. cdq分治入门
查看>>
daily scrum 12.8
查看>>
Nginx初识
查看>>
EOJ 2847 路由结点
查看>>
题解 化学反应
查看>>
题解 楼房重建
查看>>
Python汉字转换成拼音
查看>>
高德地图:定位、覆盖物
查看>>
抽象类不能实例化对象
查看>>
树状数组(hdu-4325,hdu-1166,pat-1057)
查看>>
C#引用类型参数,ref按引用传值
查看>>
Flume简介与使用(二)——Thrift Source采集数据
查看>>
原生对象-Array
查看>>
词法解析的基本原理
查看>>
IDEA安装
查看>>
MySQL分库分表
查看>>
PyQt5--TextDrag
查看>>
Netty轻量级对象池实现分析
查看>>