机器学习篇---常见的聚类方法以及选择
可以把聚类想象成你有一大堆混在一起的乐高积木现在要只根据积木本身的形状和颜色把它们自动分成几堆事先并不知道哪一堆应该是什么样子。这就是聚类的核心——无监督学习在没有任何标签的情况下把相似的数据点归为一组让组内相似度高、组间差异大。一、聚类问题的本质要理解各种方法先抓住两个关键用什么尺子量“相似性”最常用的是欧氏距离两点间的直线距离但也有曼哈顿距离城市街区距离、余弦相似度看方向不看长度等。二维平面上的欧氏距离余弦相似度常用于文本比较两个向量夹角的余弦值值越接近1方向越近内容越相似。怎么定义“一簇”不同算法对簇的定义截然不同这是它们思路差异的根源基于中心到一个中心点近的是一簇如K-Means。基于密度高密度区域连成一片的是一簇如DBSCAN。基于分布属于同一个概率分布模型的是一簇如高斯混合模型。基于层次像树一样可以一层层剥开或合并的是一簇如层次聚类。二、主流聚类方法详解下面像剥洋葱一样一层层地介绍5种核心方法。1. K-Means 聚类最经典的“分堆”方法核心思想要分几堆你就先随便选几个中心点。然后所有人“认领”离自己最近的中心点形成临时的堆。接着每堆重新计算出真正的中心大家再根据新中心重新“认领”。如此往复直到中心点不再变化。可以用一个城管规划菜市场的比喻先随便找几个点作为摊位摊贩自动向最近摊位靠拢形成临时市场然后每个市场在摊贩最密集处重新设摊摊贩再次归队最终形成稳定市场。优点简单、高效是处理大数据集的首选。缺点“K”难定必须事先指定簇数。对“种子”敏感初始中心选得不好结果可能很糟所以常用K-Means优化初始点选择。只能发现球形簇对长条、月牙形等复杂形状无能为力。受异常值影响大一个离群点就可能把中心“拉偏”。2. DBSCAN能识别“任意形状”的密度方法核心思想不求中心而是从任意点出发像病毒传播一样如果周围指定半径内的邻居数足够多就都算作一簇并继续“传染”邻居的邻居。找不到足够邻居的点就被暂时当作噪声。它用两个关键参数定义密度eps (半径)判断邻居的范围圈有多大。MinPts (最小点数)圈里至少有几个点才算作核心点。根据邻居数量数据点被分为三类核心点邻居数 ≥ MinPts。边界点邻居数 MinPts但它在某个核心点的圈内。噪声点既不是核心点也不在任何核心点的圈内。优点能发现任意形状的簇。自动识别并过滤噪声。不需要指定簇数K。缺点参数调参难eps和MinPts的设置非常敏感。对密度不均的数据效果差如果数据块有疏有密一组参数难以兼顾。3. 层次聚类构造“族谱”式结构核心思想构建一个树状的聚类关系图主要分两种策略自底向上初始每个点自己是一簇然后不断合并最相似的两簇直到全合成一簇。自顶向下从一个全数据的大簇开始不断分裂直到每个点各成一簇。其中衡量簇间相似度的方式有三种单链接取两簇中最近的两个点的距离。完全链接取两簇中最远的两个点的距离。平均链接取两簇间所有点对距离的平均值。优点不用指定簇数K事后从树状图上切割即可。生成的树状图能清晰地展示数据嵌套结构非常适合可视化。缺点计算和存储复杂度高不适合大数据集。合并或分裂后无法回溯一步走错全局皆错。4. 高斯混合模型概率视角的“软”聚类核心思想它认为数据是由多个不同的高斯分布混合生成的。它的目标就是找到每个分布的参数均值、协方差并判断每个点有多大概率来自哪个分布。与K-Means给出“非黑即白”的硬性归属标签硬聚类不同GMM给出的是属于每个簇的概率软聚类。优点软聚类量化了归属不确定性。可以拟合椭圆形状的簇比K-Means更灵活。缺点计算复杂容易陷入局部最优。需要指定分量数K对初始值敏感。5. 基于图的聚类复杂的“关系网”切割核心思想把数据点看作图的节点相似度作为边和权重然后通过“图切割”来找簇要求切掉边后子图内部权重高子图之间权重低。谱聚类是典型代表它不直接在原始数据上切割而是在数据的图拉普拉斯矩阵的特征向量空间里进行K-Means聚类。优点能捕捉非常复杂的数据结构通常效果出色。缺点计算特征分解的开销很大对参数如近邻图尺度敏感不太适合海量数据。三、如何选择一张决策指南面对问题时可以按这个思路来选数据量大、追求效率→ 首选K-Means。数据形状诡异、噪声多、不知道分几类→ 试试DBSCAN。需要数据嵌套的层级关系或可视化→ 选层次聚类。需要知道每个点归属的不确定性硬vs软聚类→ 用高斯混合模型 (GMM)。数据量适中、对复杂结构要求极高→ 可以用谱聚类来挑战上限。