给定欧几里得空间中一个点集,以欧几里得距离使用K均值对它进行聚类,在赋值时使用三角不等式避免计算每个点到每个簇质心的距离。

在使用 K 均值聚类算法时,赋值阶段通常需要计算每个点到每个簇质心的距离,以找到最接近的簇。然而,通过利用三角不等式,我们可以减少一些不必要的距离计算,从而加快聚类过程。以下是利用三角不等式减少计算的一般步骤:

三角不等式

三角不等式说明,对于任何三个点 \( A, B, C \):

\[ d(A, C) \le d(A, B) + d(B, C) \]

这个特性可以帮助确定某些点到簇质心的距离无需计算。

一般步骤

1. 初始化:
    - 随机选择 \( K \) 个点作为初始簇质心。
    - 用 \( \mathbf{C} = \{c_1, c_2, \ldots, c_K\} \) 表示簇质心的集合,其中 \( c_k \) 是第 \( k \) 个簇的质心。
    - 假设点集为 \( \mathbf{X} = \{x_1, x_2, \ldots, x_n\} \)。

2. 计算质心间的距离:
    - 计算并存储每对质心之间的距离 \( d(c_i, c_j) \)。
    - 用矩阵 \( D \) 表示这些距离, \( D_{ij} = d(c_i, c_j) \)。

3. 初始分配:
    - 计算每个点 \( x_i \) 到每个质心 \( c_k \) 的距离,并将点分配给最近的质心,形成初始簇。

4. 主要迭代过程:

    1. 更新质心:
        - 计算每个簇的新质心。
        - 更新质心集合 \( \mathbf{C} \)。

    2. 更新质心间的距离:
        - 重新计算并存储更新后的质心之间的距离矩阵 \( D \)。

    3. 重新分配点:

        - 对于每个点 \( x_i \),假设它当前分配到簇 \( c_a \),即 \( x_i \in C_a \)。

        - 对于每个另一个簇质心 \( c_b \),检查三角不等式是否可以用于避免计算 \( d(x_i, c_b) \):
            - 计算 \( d(x_i, c_a) \) 并存储。
            - 检查条件:
                \[
                d(x_i, c_a) \le \frac{d(c_a, c_b)}{2}
                \]
            - 如果满足,则 \( d(x_i, c_b) \) 必然大于 \( d(x_i, c_a) \),无需计算, \( x_i \) 仍归属于 \( c_a \)。
            - 如果不满足,则计算 \( d(x_i, c_b) \),并检查是否要将 \( x_i \) 分配给新的质心 \( c_b \):
                \[
                d(x_i, c_b) < d(x_i, c_a)
                \]
            - 如满足,则更新 \( x_i \) 的分配,将 \( x_i \) 移动到新的簇 \( c_b \)。

5.重复上述过程,直到簇质心不再发生显著变化或达到最大迭代次数:

    - 不需要每次计算所有点与所有质心的距离。
    - 使用三角不等式显著减少不必要的距离计算以节省时间。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值