[x-means] 1.x-means简介
本文基于《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\)
- 运行\(K_{min}\)-means
- 在每个聚类上,运行2-means
根据BIC score(只在该聚类上计算,即只计算本聚类数据只分成1类和两类时的BIC score)决定是否二分聚类 - 如果\(K<K_{max}\),继续进行步骤2,否则返回结果
- 样例
- 首先将\(D\)分成3个聚类
- 再将每个子聚类分成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
[x-means] 1.x-means简介的更多相关文章
- linux命令getopts
一.getopts 简介 由于shell命令行的灵活性,自己编写代码判断时,复杂度会比较高.使用内部命令 getopts 可以很方便地处理命令行参数.一般格式为: getopts options va ...
- <airsim文档学习> Street View Image, Pose, and 3D Cities Dataset
原文地址: https://github.com/amir32002/3D_Street_View 说明:个人学习笔记,翻译整理自github/airsim. 简介 该存储库共享包含6DOF相机姿态 ...
- JavaScript 日期权威指南
简介 JavaScript通过强大的对象为我们提供日期处理功能:日期. 本文确实_不是_谈论 Moment.js ,我认为它是处理日期的最佳库,你应该在处理日期时几乎总是使用它. Date对象 Dat ...
- MS4W安装教程
简介 欢迎使用MS4W,这是由Gateway Geomatics开发的快速简便的安装程序,用于为Windows及其附带应用程序(如Geomoose.MapBender.Openlayers等)设置Ma ...
- 【4】蛋白质组学鉴定软件之MSGFPlus
目录 1.简介 2.安装运行 3.结果 1.简介 MSGF+也是近年来应用得比较多的蛋白鉴定软件.java写的,2008年初次发表JPR,2014年升级发表NC,免费开源,持续更新维护,良心软件.而且 ...
- 恢复SQL Server被误删除的数据(再扩展)
恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
- 恢复SQL Server被误删除的数据
恢复SQL Server被误删除的数据 <恢复SQL Server被误删除的数据(再扩展)> 地址:http://www.cnblogs.com/lyhabc/p/4620764.html ...
- 数据库中数据DELETE了怎样恢复
USE [BBDAS_FP_DATA] GO /****** Object: StoredProcedure [dbo].[Recover_Deleted_Data_Proc] Script Date ...
- Linux File Recovery Study
Background Today I did stupid things that I went into the ~/Downloads/ and pressed [Alt] + [A] then ...
- Python2.7.6标准库内建函数
Built-in Functions abs() divmod() input() open() staticmethod() all() enumerate() int() ord( ...
随机推荐
- UESTC_冰雪奇缘 CDOJ 843
艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的面积. 注:多块冰砖之间会互相重叠,重叠部分要多 ...
- XMPP通讯开发-1
有关XMPP的相关知识这里就不讲解了,网上有很多,这里我使用的NetBeans+Openire+smack搭建一个以XMPP协议的通讯工具,对于这部分知识我也不是很了解,也是初识吧,可能有些概念会混淆 ...
- Strurts(四)——从Struts原型模拟看大道至简(含实例下载)
首先,需要再次声明的是:struts是web层的框架.在介绍struts的第一篇文章就已经有了论述,如果不使用struts框架同样可以进行开发,但是需要在Servlet里面写大量的“if……else… ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- cf#366....
惨惨惨.... 我需要av.. b题意看错想了个加强版博弈结果发现完全没必要= =....cwa12到结束....中途想看d....只会n^4暴力啊.. 题解明天补上
- telnet查看memcached运行参数说明
在Linux/Windows系统中启动memcached的命令请查看http://weilingfeng98.iteye.com/admin/blogs/1741179 启动完memcached服务器 ...
- ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...
- andorid 控件 Bootstrap3.0风格的控件 精美UI控件库
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...
- java-随学随记之基础篇
一.Java是一门高级语言,具有跨平台性(一次编译到处运行) 1.javac.exe命令,编译器 javac 源文件名.java 2.java.exe命令,启动虚拟机 java 类名 二.环境变量 ...
- Asp.Net Identity自定义user类的运用,ClaimsIdentity
mvc5自动生成的用户验证是比较好用的,还可以扩展,可是要求code first,目前使用sqlite,支持entity framework,但不支持code first. 只有自已简单模仿一下了.经 ...