二分 K-Means 算法

该算法补充自 《机器学习实战》 一书

常规的 K-Means 算法的误差通常只能收敛到局部最小,在此,引入一种称为二分 K-Means(bisecting kmeans)的算法,相较于常规的 K-Means,二分 K-Means 不急于一来就随机 KKK 个聚类中心,而是首先把所有点归为一个簇,然后将该簇一分为二。计算各个所得簇的失真函数(即误差),选择误差最大的簇再进行划分(即最大程度地减少误差),重复该过程直至达到期望的簇数目。

二分 KMeans 算法流程大致如下:

  1. 初始时,所有样本被看做在同一个簇:
    c(1)=c(2)=...=c(m)c^{(1)}=c^{(2)}=\ ... \ =c^{(m)}c(1)=c(2)= ... =c(m)

  2. whilenum<kwhile\ num<kwhile num<k ( numnumnum 表示当前的簇数):

fori=1tonumfor\quad i=1\ to\ numfori=1 to num (对于每一个簇):

  • 计算误差
  • 在该簇上进行 K-Means 聚类,其中 k=2k=2k=2
  • 计算将该簇一分为二后的总误差,该误差在之后将会被用于比较

选择使得总误差最小的簇进行划分。

虽然二分 K-Means 能带来全局最优解,但是我们也可以看到,该算法是一个贪心算法,因此计算量不小。

6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授相关推荐

  1. 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授

    机器学习系统设计–垃圾邮件分类 假定我们现有一封邮件,其内容如下: From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subjec ...

  2. 6.2 K-Means 算法步骤-机器学习笔记-斯坦福吴恩达教授

    K-Means 算法步骤 那么,K-Means 这个算法是如何完成聚类过程的呢?其实算法名称中对此已有体现: K: 描述了簇的数量,也就是应当聚合成的几何数. Means:均值求解会是该算法的核心. ...

  3. 8.3 算法流程与评估-机器学习笔记-斯坦福吴恩达教授

    算法流程与评估 算法流程 有了前面的知识,我们可以得到,采用了高斯分布的异常检测算法流程如下: 选择一些足够反映异常样本的特征 xjx_jxj​ . 对各个特征进行参数估计: μj=1m∑i=1mxj ...

  4. 4.7 程序示例--算法诊断-机器学习笔记-斯坦福吴恩达教授

    程序示例–算法诊断 我们手头有一份大坝水的流量与水位关系的数据,首先我们将其划分为训练集.交叉验证集和测试集: # coding: utf-8 # algorithm_analysis/diagnos ...

  5. 6.3 优化-机器学习笔记-斯坦福吴恩达教授

    优化 和其他机器学习算法一样,K-Means 也要评估并且最小化聚类代价,在引入 K-Means 的代价函数之前,先引入如下定义: μc(i)=样本x(i)被分配到的聚类中心μ^{(i)}_c=样本\ ...

  6. 5.7 程序示例--基于 SMO 的 SVM 模型-机器学习笔记-斯坦福吴恩达教授

    程序示例–基于 SMO 的 SVM 模型 在这里,我们会实现一个基于 SMO 的 SVM 模型,在其中,提供了简化版 SMO 和 完整版 SMO 的实现. 简化版 SMO:不使用启发式方法选择 (α( ...

  7. 10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授

    梯度下降 批量梯度下降法(Batch gradient descent) 拥有了大数据,就意味着,我们的算法模型中得面临一个很大的 m 值.回顾到我们的批量梯度下降法: 重复直到收敛:重复直到收敛:重 ...

  8. 10.1 掌握大数据-机器学习笔记-斯坦福吴恩达教授

    掌握大数据 在算法分析与优化一节中,我们就提到,在机器学习界流传着这样一句话: It's not who has the best algorithm that wins. It's who has ...

  9. 9.2 协同过滤-机器学习笔记-斯坦福吴恩达教授

    协同过滤(Collaborative Filtering) 回到上一节的问题,每部电影,我们都有评价其内容的特征向量 xxx : 但是,在现实中,不会有任何网站,任何人有精力,有能力去评估每部电影所具 ...

最新文章

  1. python与c混合编程 版本_python与C、C++混编的四种方式(小结)
  2. 【专场】揭秘端到端视频技术
  3. Linux和Windows下部署BeetleX服务网关
  4. 把旧系统迁移到.Net Core 2.0 日记(1) - Startup.cs 解析
  5. 互联网晚报 | 11月7日 星期日 | EDG夺得《英雄联盟》S11总冠军;拼多多推出“超拼夜”系列;VMware与戴尔完成分拆...
  6. 电机与拖动:异步交流电动机改变电压,转子电阻及频率的机械特性曲线(Matlab实现方法)
  7. 微信推送消息通知接口汇总
  8. 拳王虚拟项目公社:虚拟资源项目超详解,人人皆可熟练操作
  9. pgm概率图模型_概率图形模型(PGM)算法| 机器学习
  10. 大小写字母ASCII码对照表
  11. Eclipse编写代码时出现The word 'localhost' is not correctly spelled.禁告
  12. iPhones刷机怎么备份微信记录 iPhone手机微信记录怎么备份
  13. 乐高太多没处放?解放女朋友双手,1 个顶 100 个的乐高智能分拣机来了!
  14. 斐讯路由器虚拟服务器怎么设置,斐讯PSG1218路由器如何设置
  15. c# 获取进程cpu的使用率 简单试验
  16. ARM uboot 的移植3 -从 uboot 官方标准uboot开始移植
  17. [廖雪峰python教程列表生成器练习]杨辉三角定义如下,把每一行看做一个list,试写一个generator,不断输出下一行的list
  18. 电力行业数字孪生技术应用白皮书(2022)
  19. Semi-Supervised Semantic Segmentation with Pixel-Level Contrastive Learning from a Class-wise Memory
  20. JavaCV开发详解专栏文章目录(JavaCV速查手册)

热门文章

  1. Dijstra算法求最短路径
  2. android 中国通信乱码问题
  3. Android设置布局背景为白色的三种方法
  4. 2008-2013年写的10个小软件
  5. CentOS系统安装桌面
  6. System.DBNull
  7. IIS6+asp.net 2.0+HTTP 错误 404 - 文件或目录未找到:您正在搜索的页面可能已经删除、更名或暂时不可用。...
  8. 洛谷 P4284 [SHOI2014]概率充电器 解题报告
  9. (21) java web的struts2框架的使用-Action实现的三种方式
  10. Android Studio2.0 教程从入门到精通Windows版