【K-Means聚类算法 + agglomerative层次聚类算法】 机器学习公式推导计算+详细过程

K-Means算法

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

  • 簇划分为 ( C 1 , C 2 , C 3 , … , C k ) (C_1, C_2, C_3, …, C_k) C1,C2,C3,,Ck

目标函数,最小化平方误差
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 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 ∣ C i ∣ ∑ x ∈ C i x \mu_i = \frac{1}{|C_i|}\sum_{x \in C_i} x \quad μi=Ci1xCix

K-Means算法流程

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

D = x 1 , x 2 , x 3 , … , x n D = {x_1, x_2, x_3, …,x_n} D=x1,x2,x3,,xn

  • output:簇划分

C = ( C 1 , C 2 , C 3 , … , C k ) C =(C_1, C_2, C_3, …, C_k) C=C1,C2,C3,,Ck

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

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

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

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

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

3.最终输出簇划分

C = ( C 1 , C 2 , C 3 , … , C k ) C =(C_1, C_2, C_3, …, C_k) C=C1,C2,C3,,Ck

评估方法-肘部法则公式

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

上式中, C i C_i Ci是第 i i i簇, x x x C i C_i Ci中的样本点, μ i \mu_i μi C i C_i Ci的质心,即 C i C_i Ci所有样本的均值, S S E SSE SSE是所有样本的聚类误差。

agglomerative算法

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

** Hierarchical算法 **

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

** 计算距离公式 **

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

d m i n ( C i , C j ) = m i n d i s t ( p , q ) d_{min}(C_i, C_j) = min \quad dist(p, q) \quad dmin(Ci,Cj)=mindist(p,q)

  • 上式中, C i , C j C_i, C_j Ci,Cj为聚类簇, p ∈ C i , q ∈ C j p \in C_i, q \in C_j pCi,qCj

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

d m a x ( C i , C j ) = m a x d i s t ( p , q ) d_{max}(C_i, C_j) = max \quad dist(p, q) \quad dmax(Ci,Cj)=maxdist(p,q)

*上式中, C i , C j C_i, C_j Ci,Cj为聚类簇, p ∈ C i , q ∈ C j p \in C_i, q \in C_j pCi,qCj

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

d a v g ( C i , C j ) = 1 ∣ C i ∣ ∣ C j ∣ ∑ p ∈ C i ∑ q ∈ C j d i s t ( 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)

  • 上式中, C i , C j C_i, C_j Ci,Cj为聚类簇, p ∈ C i , q ∈ C j p \in C_i, q \in C_j pCi,qCj

Hierarchical算法流程

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

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

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

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

欢迎大家交流学习,任何问题都可以留言
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值