K-Means算法

  • K-Means聚类算法是非监督学习方法。对于样本数据,按样本之间的距离大小,将样本划分为K个簇。让簇内的点之间距离尽可能的小,同时让簇之间的距离尽可能的大。

  • 簇划分为(C1,C2,C3,…,Ck)(C_1, C_2, C_3, …, C_k)C1,C2,C3,,Ck

目标函数,最小化平方误差
E=∑i=1k∑x∈Ci∣∣x−μi∣∣22 E = \sum_{i=1} ^ k \sum_{x \in C_i} ||x - \mu_i||^{2}_2 \quad E=i=1kxCixμi22

(11.1)式中,$ \mu_i 是簇是簇 C_i $的均值向量,即为质心。

μi=1∣Ci∣∑x∈Cix \mu_i = \frac{1}{|C_i|}\sum_{x \in C_i} x \quad μi=Ci1xCix

K-Means算法流程

  • input:样本D, 簇个数k, 最大迭代次数T

D=x1,x2,x3,…,xn D = {x_1, x_2, x_3, …,x_n} D=x1,x2,x3,,xn

  • output:簇划分

C=(C1,C2,C3,…,Ck) C =(C_1, C_2, C_3, …, C_k)C=C1,C2,C3,,Ck

1.从样本DDD中随机选择kkk个样本作为初始的k个质心向量:μ1,μ2,μ3,…,μk{\mu_1,\mu_2, \mu_3, …, \mu_k}μ1μ2,μ3,,μk,将每个簇初始化为∅\emptyset

2.对于t=1,2,3,…,Tt = 1, 2, 3, …, Tt=1,2,3,,T

(1)对于i=1,2,3,…,Ni = 1, 2, 3, …, Ni=1,2,3,,N,计算样本xix_ixi和各个执行向量μj,j=1,2,3,…,k\mu_j, j = 1, 2, 3, …, kμj,j=1,2,3,,k的欧氏距离,将xix_ixi划分到最近的簇中,更新Cj=Cj⋃{xi}C_j = C_j \bigcup \{x_i\}Cj=Cj{xi}

(2)对于j=1,2,3,…,kj = 1, 2, 3, …, kj=1,2,3,,kCjC_jCj中所有的样本点重新计算新的质心

(3)如果所有的kkk个质心向量都没有发生变化,那么跳转到步骤(3)

3.最终输出簇划分

C=(C1,C2,C3,…,Ck) C =(C_1, C_2, C_3, …, C_k)C=C1,C2,C3,,Ck

评估方法-肘部法则公式

SSE=∑i=1k∑x∈Ci∣∣x−μi∣∣2 SSE = \sum_{i=1} ^ k \sum_{x \in C_i} ||x - \mu_i||^{2} \quad SSE=i=1kxCixμi2

上式中,CiC_iCi是第iii簇,xxxCiC_iCi中的样本点,μi\mu_iμiCiC_iCi的质心,即CiC_iCi所有样本的均值,SSESSESSE是所有样本的聚类误差。

agglomerative算法

  • agglomerative算法有两种实现方式:一种是“自底向上”的Hierarchical;另一种是“自顶向下”的Divisive。

** Hierarchical算法 **

  • Hierarchical算法:“自底向上”。首先每个样本点各自为一个类别,然后每一次迭代去距离最近的两个类别将他们合并,最后只有一个类别时,迭代结束。

** 计算距离公式 **

  • 最小距离公式(single-linkage):

dmin(Ci,Cj)=mindist(p,q) d_{min}(C_i, C_j) = min \quad dist(p, q) \quad dmin(Ci,Cj)=mindist(p,q)

  • 上式中,Ci,CjC_i, C_jCi,Cj为聚类簇,p∈Ci,q∈Cjp \in C_i, q \in C_jpCi,qCj

  • 最大距离公式(complete-linkage)

dmax(Ci,Cj)=maxdist(p,q) d_{max}(C_i, C_j) = max \quad dist(p, q) \quaddmax(Ci,Cj)=maxdist(p,q)

*上式中,Ci,CjC_i, C_jCi,Cj为聚类簇,p∈Ci,q∈Cjp \in C_i, q \in C_jpCi,qCj

  • 平均距离公式(average-linkage)

davg(Ci,Cj)=1∣Ci∣∣Cj∣∑p∈Ci∑q∈Cjdist(p,q) d_{avg}(C_i, C_j) = \frac{1}{|C_i||C_j|} \sum_{p \in C_i} \sum_{q \in C_j} dist(p, q) \quad davg(Ci,Cj)=CiCj1pCiqCjdist(p,q)

  • 上式中,Ci,CjC_i, C_jCi,Cj为聚类簇,p∈Ci,q∈Cjp \in C_i, q \in C_jpCi,qCj

Hierarchical算法流程

1.将每个样本作为一个簇。

2.计算任意两侧簇之间的距离,选取距离最近的两个簇。

3.将步骤2中的两个簇合并成一个新的簇,删除合并前的那两个簇。

4.重复步骤2、步骤3,直到所有簇仅剩一个簇,迭代结束。

欢迎大家交流学习,任何问题都可以留言
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐