赞
踩
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性基于密度的聚类算法,在机器学习领域也是占有一席之地。
他的基本思想就是根据数据的分布密度,按照我们给定的两个必要的参数,半径参数和最少点个数参数,来基于密度的分布遍历数据集中的所有点,为每个数据给出相应的类别。
具体的算法流程首先要设定两个超参数
算法会根据这两个参数,搜索分别在半径内的所有数据,如果数据的个数大于minPts,则认为是一类,否则不是,继续遍历下一个点
首先随机选择一个点作为起始点遍历
图中,所有的黑色点就是数据,然后随机选择一个进行遍历,遍历后的点会标记,然后记录搜索半径内的数据个数,看是否符合minPts,然后接着遍历下一个点
重复步骤2,直到所有的点都遍历完毕
直到所有的点遍历结束,DBSCAN算法执行完毕
点画的太多,坑害了自己,大家就觉得已经遍历完成了就好
在遍历完成之后那么应该怎么才能给定相应的类别呢??
这个时候就要引入几个将为重要的概念
核心对象:就是作为圆心出现的数据
直接密度可达:圆内的点到圆心称为直接密度可达
密度可达:如果q到Q直接密度可达,Q到P直接密度可达,则q到p密度可达
密度相连:类似于密度可达,只是非核心点属于密度相连
数据点的类型分为三类:
核心点:当了圆的圆心
边界点:没有当圆心,但是在符合簇内
噪声点:不属于任何一类
如果设置minPts=4,那么下图的三个类型的数据如图
在划分簇的时候
将直接密度可达、密度可达、密度相连的数据划分为同一簇,就是同一个类型
算法流程和数据类型以及数据关系都讲述完了,但是还有一个很容易忽视的点,就是半径参数eps设置完了之后,其数据间的距离该怎么计算???
我们首先能想到的肯定就是初中所学的不知道叫什么的距离计算方式,给定两个点(x1,y1)和(x2,y2),它俩的距离就是开根号(x1-x2)2+(y1-y2)2。这个在我们初中的坐标系距离计算中经常用到,其实这个距离计算方式就是欧式距离
1、欧氏距离
用于两个数据点之间的直线距离
2、余弦距离
简单来说,余弦相似度,就是计算两个向量间的夹角的余弦值,余弦距离的取值范围是[0, 2]
3、Hausdorff距离
测定数据集之间的距离
4、明可夫斯基距离
不同的n代表不同的距离方程,n=1时就是曼哈顿距离;n=2时就是欧氏距离;n>2时就是Hausdorff距离
距离计算方式的选择也是数据之间相似性度量的重要凭证,要根据不同的数据集特点选择合适的距离计算方式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。