聚类算法(K-MEANS、DBSCAN、轮廓系数)

聚类概念:

        无监督问题:我们手里没有标签了

        聚类:相似的东西分到一组

        难点:如何评估,如何调参

1、K-MEANS算法

基本概念:

        要得到簇的个数,需要制定k值(几堆数据);

        质心:均值,即向量各维取平均即可(后续迭代需要用);

        距离的度量:常用欧几里得距离和余弦相似度(先标准化);

        优化目标:

        在图片中随机选择两个质心,判断所有的点到两个质心的距离,离哪个近就是什么颜色。随后更新依据,即重新计算两个质心的位置,然后重新遍历所有点到质心的距离,然后看谁小就把谁划分到哪个簇。重复以上过程,直至所有点都不再发生变化!

优势:简单、快速、适合常规数据集

劣势:k值难确定、复杂度与样本呈线性关系、很难发现任意形状的簇。

        该算法对初始值的设定至关重要(不同的初始点会对结果产生很大的影响),如下图,再迭代无数次,也无法正确聚类。因此在设置时,多取几次初始值,做平均。

 2、DBSCAN算法

        基本概念Density-Based Spatial Clustering of Applications with Noise是一种密度聚类算法,用于将数据集中的样本点划分为不同的簇。与传统的基于距离的聚类算法(如K-means)不同,DBSCAN利用样本点的密度来确定簇的边界。

        核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即r邻域内点的数量不小于minPts)。

        \epsilon-邻域的距离阈值:设定的半径r。

        直接密度可达:若某点p在点q的r邻域内,且q是核心点则p-q直接密度可达。

        密度可达:若有一个点的序列q0、q1、...qk,对任意qi到qi-1是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可阿达的“传播”。

        密度相连:若从某核心点p出发,点q和点k都是密度可达的,称点q和点k是密度相连的。

        边界点:属于某一个类的非核心点,不能发展下线了。

        噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。

算法的步骤如下:

  1. 初始化参数:设定半径ε和最小样本点数MinPts(密度阈值)。
  2. 随机选择一个未访问的样本点p。
  3. 如果p是一个核心点,则找到所有由p密度直接可达的样本点,以及它们的密度可达样本点,将它们划入同一簇。
  4. 重复步骤3,直到不能再找到新样本点被划入簇为止。
  5. 如果p不是核心点,则标记p为噪声点。
  6. 选择下一个未被访问的样本点,重复步骤3和步骤4。
  7. 直到所有样本点都被访问过为止,结束算法。

        优势:不需要指定簇个数、可以发现任意形状的簇、擅长找到离群点(检测任务)、两个参数就够了。劣势:高维数据有些困难(可以做降维)、参数难以选择(参数对结果的影响非常大)、Sklearn中效率很慢(数据消减策略)。

3、轮廓系数

        轮廓系数(Silhouette Coefficient)是一种用于评估聚类质量的指标,它将同一簇内的样本点距离尽量小、不同簇之间的距离尽量大作为优化目标。对于一个样本点i,其轮廓系数的计算方法如下:

  • a(i):样本点i与同一簇内所有其他样本点之间的平均距离。
  • b(i):样本点i与距离它最近的其他簇中所有样本点的平均距离。
  • s(i):样本点i的轮廓系数,即(s(i) = b(i) - a(i)) / max(a(i), b(i))。

        其中,轮廓系数s(i)取值范围在[-1, 1]之间,当s(i)越接近于1时,表示样本点i聚类效果越好;当s(i)越接近于-1时,表示样本点i被错误的聚类到了错误的簇中;当s(i)接近于0时,则表明样本点i在两个簇的边界上。

        对于整个聚类结果,可以计算所有样本点的轮廓系数的平均值来衡量聚类的整体质量,该平均值越趋近于1则表示聚类效果越好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: k-meansdbscan都是常用的聚类算法k-means算法是一种基于距离的聚类算法,它将数据集划分为k个簇,每个簇的中心点是该簇中所有点的平均值。该算法的优点是简单易懂,计算速度快,但需要预先指定簇的数量k,且对初始中心点的选择敏感。 dbscan算法是一种基于密度的聚类算法,它将数据集中的点分为核心点、边界点和噪声点三类。核心点是指在半径为ε内至少有MinPts个点的点,边界点是指在半径为ε内不足MinPts个点但与核心点相邻的点,噪声点是指既不是核心点也不是边界点的点。该算法的优点是不需要预先指定簇的数量,能够发现任意形状的簇,但对于不同密度的簇效果可能不同,且需要设置合适的参数ε和MinPts。 ### 回答2: K-meansDBSCAN都是常用的聚类算法K-means算法是一种基于中心点的聚类算法,其目标是将数据点划分到不同的簇中,使得同一簇内的数据点彼此相似度高,不同簇间的数据点相似度低。算法工作流程如下: 1. 随机选择K个初始中心点; 2. 将各个数据点分配给最近的中心点,形成K个簇; 3. 对于每个簇,计算其中所有数据点的平均值,将该平均值作为新的中心点; 4. 重复步骤2和步骤3,直到簇的中心点不再发生变化或达到预设迭代次数。 K-means算法的优点是简单易懂、计算时间短,对于大规模数据也有不错的效果。但是其缺点也比较明显,如需要指定簇的数量,且对于空间形状不规则的数据或噪声数据处理效果较差。 DBSCAN算法是一种基于密度的聚类算法,其核心思想是将密度相连的数据点划分为一个簇中,将稀疏区域中的数据点划分为噪声数据。算法工作流程如下: 1. 选择一个数据点,检查其邻域内是否有足够多的数据点,如果有足够多的数据点,则将该数据点作为核心点; 2. 核心点的邻域内所有的点组成一个簇,将所有邻域内密度不足的点视为噪声数据,未被分配簇的点到簇中; 3. 扫描所有未被访问的点,如果该点被一个簇访问,则将其加入该簇中。 DBSCAN算法的优点是可以发现任意形状的簇,不需要指定簇的数量,而且可以有效处理噪声数据。但是其缺点也比较明显,如容易受到密度相差悬殊的数据分布影响,计算时间随着数据规模的增大而呈指数增长。 综上,两种算法各有优缺点,需要根据应用场景选择合适的算法。 ### 回答3: K-meansDBSCAN是常用的聚类算法,它们可以用于将数据集中的数据对象分组成不同的簇。虽然K-meansDBSCAN都是聚类算法,但它们之间有很多的区别。 K-means是一种迭代算法,其原理是将所有数据对象划分为K个簇,在每次迭代中,计算每个簇的中心点,并将与中心点最近的数据对象划分到该簇中。然后重新计算每个簇的中心点,并再次将数据对象划分到最近的簇中,直到收敛为止。K-means算法简单且易于理解,但需要人工对簇的数量做出选择。 DBSCAN是一种基于密度的聚类算法,它的核心思想是,一个簇是由相互密集连接的数据对象组成的,而簇与簇之间的密度差别较大。DBSCAN算法的过程是首先选取一个未被访问的数据对象,然后找出该对象的密度可达的所有数据对象,将它们归为一个簇,并递归地找出这些簇的邻居,直到所有的数据对象都被归为一个簇或者标记为噪声点。DBSCAN算法不需要人工指定簇的数量,因此比K-means更加灵活和自适应。 总之,K-meansDBSCAN算法聚类过程中采用了不同的原理和策略,各有其适用的场景。K-means适用于数据分布比较规则和簇的数量明确的情况下,而DBSCAN适用于数据分布不规则、簇的数量不确定或者簇的密度变化不同的情况下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值