聚类——kmeans和dbscan

这是无监督学习算法的经典算法

问题,有堆样本,要把里面相似的样本分到一组。

解决:

1、指定要把样本分为k簇。

2、利用距离度量每个族的样本的准则。

优化目标:

 工作流程(假设K=2):

1、先在样本中任意的指定两个点A和B,遍历所有的样本到两点距离,哪个近就认为样本是属于哪个AB点。

2、再分别计算每个属于AB点的所有样本的质点,也就是各个维度取平均,这个质点是新的AB点。

3、重复1。直到没有变化。

缺点:1、K值难定。2、样本多的时候,因为要遍历所有,所以比较复杂。3、很难发现任意形状的簇。


为了解决这个问题,引入了DBSCAN算法。

kmeans是设置k簇,DBSCAN设置为邻域个数最小值和邻域半径。

这里引入了一些概念:

1、核心对象,就是某个点的密度达到算法设定了阈值为核心点,就是r邻域内的数量不小于minpts。

2、邻域的阈值,设置半径r。

3、直接密度可达,若某个点p在q的r邻域内,q是核心点,则p到q是直接密度可达。这里可以看出密度可达可以传播。

其实算法核心步骤就是:画圈,找点,发展下线。


半径可以依靠突变点设置,当数据集中点p到集合中的点距离突然变大,就可以设置为半径。

minpts可以多次尝试。

猜你喜欢

转载自blog.csdn.net/N_Sapientia/article/details/80653784