K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点

分类知识

  分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中。机器学习中常见的分类算法有:SVM(支持向量机)、KNN(最邻近法)、Decision Tree(决策树分类法)、Naive Bayes(朴素贝叶斯分类)、Neural Networks(神经网络法)等。

  但当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选择非监督学习的聚类算法,如K-Means Clustering(K均值聚类)。


算法原理

选择K个不相同的点作为初始质心  
repeat  
    将每个点指派到最近的质心,形成K个簇  
    重新计算每个簇的质心  
until 簇不发生变化或达到最大迭代次数  

质心计算

  对于分类后的产生的k个簇,分别计算到簇内其他点距离均值最小的点作为质心(对于拥有坐标的簇可以计算每个簇坐标的均值作为质心)


距离度量

  一般情况下,在欧式空间中采用的是欧式距离,在处理文档中采用的是余弦相似度函数,有时候也采用曼哈顿距离作为度量

欧式距离:

d ( x , y ) = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + ⋯ + ( x n − y n ) 2 = ∑ i = 1 n ( x i − y i ) 2 d(x, y)=\sqrt{\left(x_{1}-y_{1}\right)^{2}+\left(x_{2}-y_{2}\right)^{2}+\cdots+\left(x_{n}-y_{n}\right)^{2}}=\sqrt{\sum_{i=1}^{n}\left(x_{i}-y_{i}\right)^{2}} d(x,y)=(x1y1)2+(x2y2)2++(xnyn)2 =i=1n(xiyi)2

余弦相似度:

  给定两个属性向量,A和B,其余弦相似性 θ 由点积和向量长度给出,如下所示:

             cos ⁡ ( θ ) = A ⋅ B ∥ A ∥ ∥ B ∥ = ∑ i = 1 n A i × B i ∑ i = 1 n ( A i ) 2 × ∑ i = 1 n ( B i ) 2 \cos (\theta)=\frac{A \cdot B}{\|A\|\|B\|}=\frac{\sum_{i=1}^{n} A_{i} \times B_{i}}{\sqrt{\sum_{i=1}^{n}\left(A_{i}\right)^{2}} \times \sqrt{\sum_{i=1}^{n}\left(B_{i}\right)^{2}}} cos(θ)=ABAB=i=1n(Ai)2 ×i=1n(Bi)2 i=1nAi×Bi

  给出的相似性范围从-1到1:-1意味着两个向量指向的方向正好截然相反,1表示它们的指向是完全相同的,0通常表示它们之间是独立的,而在这之间的值则表示中间的相似性或相异性。

曼哈顿距离:

               d ( i , j ) = ∣ x i − x j ∣ + ∣ y i − y j ∣ d(i, j)=|xi-xj|+|yi-yj| d(i,j)=xixj+yiyj


聚类效果评价

   轮廓系数结合了聚类的凝聚度和分离度, 用于评估聚类的效果。该值处于-1~1之间,值越大,表示聚类效果越好。具体计算方法如下:

  1. 对于每个样本点 i i i,计算点i与其同一个簇内的所有其他元素距离的平均值,记作 a ( i ) a(i) a(i),用于量化簇内的凝聚度。
  2. 选取i外的一个簇 b b b,计算 i i i b b b中所有点的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作 b ( i ) b(i) b(i),即为i的邻居类,用于量化簇之间分离度。
  3. 对于样本点 i i i,轮廓系数 s ( i ) = ( b ( i ) – a ( i ) ) / ( m a x ( a ( i ) , b ( i ) ) ) s(i) = (b(i) – a(i))/(max({a(i),b(i)})) s(i)=(b(i)a(i))/(max(a(i),b(i)))计算所有i的轮廓系数,求出平均值即为当前聚类的整体轮廓系数,度量数据聚类的紧密程度。

  从上面的公式,不难发现若 s ( i ) s(i) s(i)小于0,说明i与其簇内元素的平均距离大于最近的其他簇,表示聚类效果不好。如果 a ( i ) a(i) a(i)趋于0,或者 b ( i ) b(i) b(i)足够大,即 a ( i ) a(i) a(i)远远小于 b ( i ) b(i) b(i),那么 s ( i ) s(i) s(i)趋近与1,说明聚类效果比较好。另外需要注意的是,使用轮廓系数,族数量必须大于等于2

  另外,还有sklearn聚类算法评估方法:Calinski-Harabaz Index、互信息…


K-Means算法优缺点

优点

  1. 原理易懂、易于实现;
  2. 当簇间的区别较明显时,聚类效果较好;

缺点

  1. 当样本集规模大时,收敛速度会变慢;
  2. 容易局部最优,对孤立点数据敏感,少量噪声就会对平均值造成较大影响;
  3. k的取值十分关键,对不同数据集,k选择没有参考性,需要大量实验;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值