【K-Means聚类算法 + agglomerative层次聚类算法】 机器学习公式推导计算+详细过程
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-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=1∑kx∈Ci∑∣∣x−μi∣∣22
(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=∣Ci∣1x∈Ci∑x
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,…,k,CjC_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=1∑kx∈Ci∑∣∣x−μi∣∣2
上式中,CiC_iCi是第iii簇,xxx是CiC_iCi中的样本点,μi\mu_iμi是CiC_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_jp∈Ci,q∈Cj
-
最大距离公式(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_jp∈Ci,q∈Cj
- 平均距离公式(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)=∣Ci∣∣Cj∣1p∈Ci∑q∈Cj∑dist(p,q)
- 上式中,Ci,CjC_i, C_jCi,Cj为聚类簇,p∈Ci,q∈Cjp \in C_i, q \in C_jp∈Ci,q∈Cj
Hierarchical算法流程
1.将每个样本作为一个簇。
2.计算任意两侧簇之间的距离,选取距离最近的两个簇。
3.将步骤2中的两个簇合并成一个新的簇,删除合并前的那两个簇。
4.重复步骤2、步骤3,直到所有簇仅剩一个簇,迭代结束。
欢迎大家交流学习,任何问题都可以留言
更多推荐
所有评论(0)