博客
关于我
K-means 和 EM 比较
阅读量:412 次
发布时间:2019-03-06

本文共 1712 字,大约阅读时间需要 5 分钟。

k-means与EM算法深度解析

回顾

k-means算法是机器学习领域中的经典聚类方法之一。其基本思想是通过计算数据点与潜在中心点(cluster center)的距离,实现“物以类聚”的目标。与传统的k-nearest neighbor (KNN)算法不同,k-means采用了迭代优化的方式,通过不断更新中心点,逐步逼近最优解。这种算法简单易懂,适合入门者学习,实现起来也相当直接。

相比之下,Expectation-Maximization (EM)算法则显得更加复杂。EM算法主要用于解决当总体参数无法直接观测时,仍能通过隐变量和参数估计来推断问题。其核心概念包括隐变量、参数估计、先验分布和贝叶斯推断。这些概念在统计学中乃是基础,尤其是在样本估计、极大似然法、全概率与贝叶斯方法等方面。

为了更直观地理解EM算法,常常会通过简单案例来说明其E步骤和M步骤。例如,抛硬币的问题可以直观地展示E步骤和M步骤的操作流程。此外,引入高斯混合模型可以更深入地推导EM算法的工作原理,并证明其收敛性。推导过程中的关键点在于如何定义E步骤和M步骤,常用Jensen不等式和全概率与贝叶斯的关系进行化简。

K-means与EM的异同

其实,高斯混合模型中的EM算法与k-means算法有着相似之处。从EM算法的角度来看,k-means可以看作是一种特殊情况,其具体表现为:

  • Expectation (E步骤): 每个数据点赋值(概率为1)一个cluster。
  • Maximization (M步骤): 更新每个cluster的中心点。
  • 由此可见,k-means算法本质上是EM算法的一种特殊实现。与k-means的“硬分配”(将数据点强制归入一个cluster)不同,EM算法采用“软分配”(将数据点视为多个cluster的混合物),这种区别体现在数据的概率分配上。

    以气质类型的判别为例,k-means算法会简单地将小陈同学归入“抑郁型”;而EM算法则会根据其行为习惯,计算出不同气质类型的概率分布,例如小陈同学有30%的多血质特征,50%的粘液质特征,抑郁和胆汁质各占10%。

    从偏理论来看

    E步骤

    在k-means算法中,判别每个样本属于对应的类别k的函数( r_{nk} )定义为:

    • 如果( k = \arg \min_j |x_n - u_k|^2 ),则返回1;
    • 否则,返回0。

    这相当于逐个计算每个样本到各中心点的距离,选择距离最小的中心点,将其归入该类别。这种判别方法的复杂度为O(kn),类似于高斯混合模型中的( w_j^{(i)} )计算。

    而EM算法的判别则为:[ p^{(i)}(k|n) = \frac{p_k^{(i)} g(x_n; m_k^{(i)}, \sigma_k^{(i)})}{\sum_{m=1}^K p_k^{(i)} g(x_n; m_k^{(i)}, \sigma_k^{(i)})} ]这正是全概率下的贝叶斯判别。

    M步骤

    无论是k-means还是EM算法,M步骤的核心都是更新cluster中心点。对于k-means,其更新公式为:[ \mu_k = \frac{\sum_{n} r_{nk} x_n}{\sum_{n} r_{nk}} ]而EM算法的更新公式为:[ m_k^{(i+1)} = \frac{\sum_{n=1}^N p^{(i)}(k|n) x_n}{\sum_{n=1}^N p^{(i)}(k|n)} ]

    总体而言,k-means和EM算法在M步骤上有着相似的目标,即通过最大似然估计更新cluster中心点。然而,EM算法引入了概率分布和贝叶斯框架,使得参数估计更加灵活和高效。

    总结

    通过对比k-means和EM算法,可以看出两者的异同点。k-means算法简单易懂,适合用于“硬分配”场景,而EM算法则更具灵活性,能够处理“软分配”的复杂问题。EM算法涉及概率论、统计学和优化的多个核心知识点,因此学习和实现起来相对更具挑战性。

    在实际应用中,选择哪种算法取决于具体的场景需求。无论是哪种算法,理解其工作原理和优化过程都是提升算法应用能力的关键。

    转载地址:http://ktokz.baihongyu.com/

    你可能感兴趣的文章
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(二):GD32E23xx FreeRTOS移植
    查看>>
    OpenMetadata 命令执行漏洞复现(CVE-2024-28255)
    查看>>
    OpenMMLab | S4模型详解:应对长序列建模的有效方法
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
    查看>>
    OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    openpyxl 模块的使用
    查看>>
    OpenResty(nginx扩展)实现防cc攻击
    查看>>
    Openresty框架入门详解
    查看>>
    OpenResty(1):openresty介绍
    查看>>
    OpenResty(2):OpenResty开发环境搭建
    查看>>
    OpenResty(4):OpenResty快速入门
    查看>>