当前位置: 首页 > news >正文

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=1kxCixμi2
    其中:
  • ( 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=1kxCixμi2
      其中:
  • ( 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=1nlog(j=1kπ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) 个高斯分布的概率密度函数。
    这些算法分别用于不同的数据特性和应用场景,可以根据数据的特征选择合适的聚类算法。
http://www.lryc.cn/news/371683.html

相关文章:

  • 天降流量于雀巢?元老品牌如何创新营销策略焕新生
  • 新疆在线测宽仪配套软件实现的9大功能!
  • 考研计组chap3存储系统
  • 杨氏矩阵和杨辉三角的空间复杂度较小的解题思路
  • 【第六篇】SpringSecurity的权限管理
  • 未来工作场所:数字化转型的无限可能
  • Landsat8的质量评估波段的一个应用
  • OpenZeppelin Ownable合约 怎么使用
  • vue3框架基本使用(基础指令)
  • ubuntu20.04设置共享文件夹
  • 三十五、 欧盟是如何对法律政策环境进行评估的?
  • 项目实战--文档搜索引擎
  • 计算机视觉基础课程知识点总结
  • 编译原理:语法分析
  • React 中的 Lanes
  • 【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】线性分类模型损失函数对比
  • 数组(C语言)(详细过程!!!)
  • 视频生成模型 Dream Machine 开放试用;微软将停止 Copilot GPTs丨 RTE 开发者日报 Vol.224
  • Vue30-自定义指令:对象式
  • 2024/06/13--代码随想录算法(贪心)3/6|134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列
  • 机器学习的分类
  • 【Linux】进程控制3——进程程序替换
  • PFC旁路二极管、继电器驱动电路以及PFC主功率
  • CrossOver 2024软件下载-CrossOver 2024详细安装教程
  • Spark MLlib机器学习
  • React Native将 ipad 端软件设置为横屏显示后关闭 Modal 弹窗报错
  • JavaEE大作业之班级通讯录系统(前端HTML+后端JavaEE实现)PS:也可选网络留言板、图书借阅系统、寝室管理系统
  • 代码随想录算法训练营第37天|● 56.合并区间● 738.单调递增的数字
  • SQL Server中的CTE和临时表优化
  • CCRC信息安全服务资质认证是什么