本文基于《X-means》和《BIC-notes》(原论文中BIC公式有误,这是对BIC的补充)

K-means的缺点
  • 每一轮迭代的计算花费大
  • 需要用户指定K
  • 易于收敛到局部最优解
X-means的改进
  • 使用kd-tree加速原K-means的每一轮迭代
  • 用户指定K所属的范围,根据BIC score选到最优K
  • 每一轮迭代只进行2-means(2-means对局部最优解不敏感

X-means算法步骤

  • 用户输入 \(k\_{min},k\_{max}\),数据集 \(D\)
  1. 运行\(K_{min}\)-means
  2. 在每个聚类上,运行2-means
    根据BIC score(只在该聚类上计算,即只计算本聚类数据只分成1类和两类时的BIC score)决定是否二分聚类
  3. 如果\(K<K_{max}\),继续进行步骤2,否则返回结果
  • 样例
  1. 首先将\(D\)分成3个聚类
  2. 再将每个子聚类分成2个聚类
    计算BIC score决定是否二分

BIC score(Bayesian Information Criterion)

  • \(BIC(\phi)=\hat{l_{\phi}}(D)-\frac{p_{\phi}}{2}\cdot log\ R\)
    其中\(\phi\)表示模型,\(\hat{l_{\phi}}(D)\)为likelihood,\(p_{\phi}\)为模型的复杂度(自由参数个数)
  • X-means的假设:identical spherical assumption
    数据由X个高斯函数残生,每个高斯函数有一样的方差\(\sigma\)(每个维度上的变量不相关,协方差矩阵为\(diag(\sigma)\))、不同的\(\mu_i\);
    数据生成时,根据概率\(p_i\)选择一个高斯函数\(g_i\),然后生成一个点
    所以似然函数为:
    \(l_{\phi}(D) = \sum_{i=1}^R [log\ p(g_{(i)})+log\ p(x_i)]\)
    其中\(p(g_{(i)})\)为生成点\(x_i\)的高斯函数被选到的概率
  • 计算BIC,需要计算最大化的\(\hat{l_{\phi}}(D)\),所以需要对参数进行估计
    \(p(g_k)=\frac{R_k}{R}\)
    \(\sigma^2=\frac{1}{MR}\sum_{k=1}^{K}\sum_{x_i\in D_k}{\left\|x_i-\mu_k\right\|}^2\)
    文中使用无偏估计,即\(\sigma^2=\frac{1}{M(R-K)}\sum_{k=1}^{K}\sum_{x_i\in D_k}{\left\|x_i-\mu_k\right\|}^2\)
  • \(p_{\phi}\)自由参数个数
    K-1个高斯函数选择到的概率,MK 个每个高斯函数每个维度上的mean,1个方差
    所以\(p_{\phi}=(M+1)K\)

KD-tree加速K-means

转载于:https://www.cnblogs.com/porco/p/xmeans_intro.html

[x-means] 1.x-means简介相关推荐

  1. cdo matlab,CDO学习1 CDO简介

    参考自如下网站 介绍 一个有几百种操作符的单独命令 CDO受NCO启发,通过命令行,提供了一系列的气候数据相关的操作 主要是被设计用在操作netCDF3/4,GRIB1/2 众多的函数可以被用在任何N ...

  2. cap3拼接sanger序列:在线+本地分析方法实战

    文章目录 简介 在线版使用 本地版使用 安装 程序运行命令行 准备输入文件 运行拼接 Reference 简介 Cap3是一款历史悠久的序列拼接软件,非常适合Sanger序列拼接.此软件于1999年发 ...

  3. getopts命令行参数处理

    getopts命令行参数处理 一.getopts 简介 由于shell命令行的灵活性,自己编写代码判断时,复杂度会比较高.使用内部命令 getopts 可以很方便地处理命令行参数.一般格式为: get ...

  4. php执行sql内存溢出_SQL Server 2017:SQL排序,溢出,内存和自适应内存授予反馈

    php执行sql内存溢出 This article explores SQL Sort, Spill, Memory and Adaptive Memory Grant Feedback mechan ...

  5. Blast中文手册(6)

    Appendices Created: June 23, 2008; Updated: March 14, 2021. Conversion from C toolkit applications(从 ...

  6. 第三方数据源大型库| CnOpenData全球专利及引用被引用数据

    全球专利及其引用被引用数据简介 目录 全球专利及其引用被引用数据简介 一.数据简介 二.字段展示 三.样本数据 __全球专利基本信息表__ __全球专利被引信息表__ __全球专利事务表__ 四.数据 ...

  7. 机器学习实战(一):Document clustering 文档聚类

    机器学习实战(一):Document clustering 文档聚类 1. 简介 2.数据解析 3. 符号化和词根化 4. 词向量化 5.K means 6.绘图 1. 简介   文档聚类是指根据文档 ...

  8. C++ Learning

    第二章 C++的学习 为查看输出,必须在程序的最后加上一些代码: cin.get(); //读取下一次键击,因此上述语句让程序等待,直到按下了Enter键 C语言输入和输出 如果已经使用过C语言进行编 ...

  9. 【MATLAB实验】MATLAB图形绘制相关函数与定积分计算

    MATLAB实验 Matlab中的图形 对数图.极坐标图及条形图 填充图 三维作图 与mesh相关的几个函数 Matlab符号运算 matlab的常见6大符号运算 matlab特殊函数与图形 定积分的 ...

  10. matplotlib绘图案例

    Python图表绘制:matplotlib绘图库入门 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为 ...

最新文章

  1. CA验证数字证书的有效性
  2. BZOJ 2820 YY的GCD 莫比乌斯反演
  3. 【转】sudo命令情景分析
  4. 【笔记】MATLAB中的图形(2)
  5. centos 7 防火墙和端口配置
  6. AcWing 1234. 倍数问题
  7. 服务器php只显示文本,服务器上的php echos文件是文本而不是二进制文件
  8. sql中替换逗号为换行符_使用T-SQL将逗号或其他定界符转换为SQL Server中的表或列表
  9. MediaInfo源代码分析 1:整体结构
  10. NYOJ 105 其余9个
  11. 最流行6种微服务RPC技术,你一定要知道
  12. NVIDIA控制面板不见了解决方法
  13. cad详图怎么画_CAD结构图怎么画?手把手教你CAD结构图的绘制方法
  14. Arch Linux 硬盘引导-联网安装
  15. 51单片机的nop延时延时函数
  16. MATLAB基于Randon变换的图像倾斜校正算法及实现
  17. oracle导出dmp文件教程
  18. java佳沃贴吧,十年沉淀 — 2019“JAVA(佳沃)杯”第十届凤凰山山地自行车挑战赛...
  19. C语言中逗号运算符和逗号表达式
  20. drozer安装与使用

热门文章

  1. Logstash 日志搜集处理框架 安装配置
  2. apache 2.4.4 自动分割日志,按年月日生成
  3. Android Studio 应用目录结构说明
  4. 小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_17、SpringBootTest单元测试实战...
  5. Lintcode203 Segment Tree Modify solution 题解
  6. WPF设计の画刷(Brush)
  7. javaScript中的变量作用域的闭包处理
  8. nginx root alias 文件路径配置
  9. save与persist差别
  10. fedora15下GNOME3使用笔记