spark MLlib (DataFrame-based) 中的聚类算法Bisecting K-Means、K-Means、Gaussian Mixture

Bisecting K-Means

核心原理:

Bisecting K-Means 是一种层次 K-Means 聚类算法,基于 Steinbach、Karypis 和 Kumar 的论文《A comparison of document clustering techniques》,并对 Spark 环境进行了修改和适应。

该算法通过递归地将数据集分割为二叉树结构的子集群来执行聚类。开始时,整个数据集视为单个聚类,然后通过以下步骤逐步分割:

  1. 选择当前具有最大 SSE(Sum of Squared Errors)的聚类进行分割。
  2. 在选定的聚类中执行 K-Means 聚类,根据距离选择最佳的分割点。
    这种分割方法不断重复,直到达到预定的聚类数量或无法进一步分割。
    数学表达式:
    对于 Bisecting K-Means,其核心是基于 K-Means 的分割操作,数学表达式如下所示:
    C = arg ⁡ min ⁡ C ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 \mathbf{C} = \arg \min_{C} \sum_{i=1}^{k} \sum_{\mathbf{x} \in C_i} \|\mathbf{x} - \mathbf{\mu}_i\|^2 C=argCmini=1∑kx∈Ci∑∥x−μi∥2
    其中:
  • ( C ) ( \mathbf{C} ) (C) 表示聚类结果,包含 ( k ) ( k ) (k) 个聚类 ( C i ) ( C_i ) (Ci)。
  • ( x ) ( \mathbf{x} ) (x) 是数据点。
  • ( μ i ) ( \mathbf{\mu}_i ) (μi) 是第 ( i ) ( i ) (i) 个聚类 ( C i ) ( C_i ) (Ci) 的中心点。

K-Means

核心原理:

K-Means 是一种经典的聚类算法,通过最小化每个聚类中所有数据点与其所属聚类中心点之间的平方距离的总和来进行聚类。

该算法的步骤如下:

  1. 初始化 :随机初始化 ( k ) ( k ) (k) 个聚类中心点。
  2. 迭代优化 :
    • 将每个数据点分配到最近的聚类中心。
    • 更新每个聚类中心为其分配的所有数据点的平均值。
    • 重复以上两步,直到收敛(即聚类中心不再变化或变化很小)。
      数学表达式:
      K-Means 的优化目标是最小化以下损失函数:
      C = arg ⁡ min ⁡ C ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 \mathbf{C} = \arg \min_{C} \sum_{i=1}^{k} \sum_{\mathbf{x} \in C_i} \|\mathbf{x} - \mathbf{\mu}_i\|^2 C=argCmini=1∑kx∈Ci∑∥x−μi∥2
      其中:
  • ( C ) ( \mathbf{C} ) (C) 表示聚类结果,包含 ( k ) ( k ) (k) 个聚类 ( C i ) ( C_i ) (Ci)。
  • ( x ) ( \mathbf{x} ) (x) 是数据点。
  • ( μ i ) ( \mathbf{\mu}_i ) (μi) 是第 ( i ) ( i ) (i) 个聚类 ( C i ) ( C_i ) (Ci) 的中心点。

Gaussian Mixture

核心原理:

高斯混合模型(Gaussian Mixture Model,GMM)是一种概率模型,假设数据是由多个高斯分布组成的混合体。每个高斯分布代表一个聚类,数据点是从这些高斯分布中生成的。

GMM 通过最大化似然函数来估计模型参数,即数据点出现的概率:
Θ = arg ⁡ max ⁡ Θ ∑ i = 1 n log ⁡ ( ∑ j = 1 k π j N ( x i ∣ μ j , Σ j ) ) \mathbf{\Theta} = \arg \max_{\Theta} \sum_{i=1}^{n} \log \left( \sum_{j=1}^{k} \pi_j \mathcal{N}(\mathbf{x}_i | \mathbf{\mu}_j, \mathbf{\Sigma}_j) \right) Θ=argΘmaxi=1∑nlog(j=1∑kπjN(xi∣μj,Σj))

其中:

  • ( Θ ) ( \mathbf{\Theta} ) (Θ) 是 GMM 的参数集合,包括每个高斯分布的均值 ( μ j ) ( \mathbf{\mu}_j ) (μj)、协方差矩阵 ( Σ j ) ( \mathbf{\Sigma}_j ) (Σj) 和混合系数 ( π j ) ( \pi_j ) (πj)。
  • ( x i ) ( \mathbf{x}_i ) (xi) 是数据点。
  • ( N ( x ∣ μ j , Σ j ) ) ( \mathcal{N}(\mathbf{x} | \mathbf{\mu}_j, \mathbf{\Sigma}_j) ) (N(x∣μj,Σj)) 是第 ( j ) ( j ) (j) 个高斯分布的概率密度函数。
    这些算法分别用于不同的数据特性和应用场景,可以根据数据的特征选择合适的聚类算法。
相关推荐
加宝的起点雷达5 小时前
40 条候选里 38 条来自同一个源,主卡整屏重样
人工智能·算法·创业
秋天的怀念_David5 小时前
算法一千零一夜 · 第二十六夜 协议的母语
java·spring boot·算法
闻缺陷则喜何志丹8 小时前
【C++特性】四种类型转
c++·算法·类型转换
喵本喵叁肆8 小时前
用 Boosting 把弱隐私算法炼成强隐私算法(英文原题:Boosting and Differential Privacy (FOCS 2010))
算法·集成学习·boosting
青梅味猪大肠9 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
其实防守也摸鱼1 天前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
Nuanyt1 天前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
w_zero_one1 天前
递归算法(一)
java·开发语言·算法