当我们在谈论kmeans(5)
本系列意在长期连载分享,内容上可能也会有所删改;
因此如果转载,请务必保留源地址,非常感谢!
博客园:http://www.cnblogs.com/data-miner/(暂时公式显示有问题)
其他:建设中…
当我们在谈论kmeans:总结
概述
通过前面阅读K-means相关论文,大致能梳理出K-means算法发展过程中的一些轨迹。由于本人所阅读的仅仅是一部分,因此还会有更多的方面,欢迎大家补充(补充时请给出具体例子)。
- K-means算法的提出
- 对K-means算法的性质进行分析的文章相继发出
- 对K-means算法思想进行扩展:
- 有作者提出“Maximum Entropy”算法,并表示K-means为其一种特殊形式
- 后又有作者提出“Mean Shift”算法,并表示“Maximum Entropy”也是其特殊形式
- 针对K-means缺陷,对K-means算法进行修改(一般仅适用于某场景):
- 提出online的K-means
- 提出针对非凸数据集的K-means
- 提出应用在FPGA中的K-means
- 提出自动对特征进行加权的K-means
- Intelligent K-means算法使用异常检测的思想聚类
- 对K-means算法进行优化:
- KD树加速的K-means
- 利用SVD分解加速K-means
- K-means++的初始化聚类中心算法
- 将K-means与新提出的思想融合:
- 结合Ensembling与K-means
K-means存在的问题
K-means由于简单有效被大量的用于数据预处理、数据分析等。在K-means被实际应用的过程中,大家也逐渐发现它本身存在很多的问题。如:
- 计算量大
- 聚类数量K需要提前设定,并影响聚类效果
- 聚类中心需要人为初始化,并影响聚类效果
- 异常点的存在,会影响聚类效果
- 只能收敛到局部最优
其中每个问题都有作者分析,并尝试提出解决办法:
- 计算量大
- KD树加速K-means
- 聚类数量K需要提前设定,并影响聚类效果
- 各种估计K的方法
- 聚类中心需要人为初始化,并影响聚类效果
- K-means++方法
- 其他初始化聚类中心方法
- 异常点的存在,会影响聚类效果
- 数据预处理
- 只能收敛到局部最优
- 未知
以下我们对其中两点(“类别数量估计”,“初始化聚类中心”)进行更多的介绍
类别数量估计
估计类别数量,现在还没有很通用的方法。以下介绍常见的估计类别数量的一些方式
数据的先验知识,或者数据进行简单分析能得到
基于变化的算法:即定义一个函数,认为在正确的K时会产生极值。
基于结构的算法:即比较类内距离、类间距离以确定K。
基于一致性矩阵的算法:即认为在正确的K时,不同聚类的结果会更加相似,以此确定K。
基于层次聚类:即基于合并或分裂的思想,在一定情况下停止获得K。
基于采样的算法:即对样本采样,分别做聚类;根据这些结果的相似性确定K。
初始化聚类中心
接下来介绍几个看到的初始化聚类中心的方法。需要强调的是,在任何场景下都合适的方法是不存在的。理想情况应该是针对数据的特点,挑选或设计出适合的方法。
- K-means++已经被证明是一种简单、好用的方法
- 先计算整体样本中心,然后根据样本点到中心的距离,由近至远均匀采样作为初试聚类中心
- 初步将数据分成K个区域,将每个区域中心作为初始聚类中心
- 计算出每个点的”密度“,认为”密度“较大的是聚类中心。先把”密度“最大的挑出作为第一个聚类中心,从剩下的点中找出密度最大,且离所有已有聚类中心大于一定距离的点作为下一个聚类中心,直到选择了K个
- 计算整体均值,作为第一个聚类中心。从剩下的点中顺序寻找,当遇到离所有已有聚类中心大于一定距离的点,则作为下一个聚类中心,直到选择了K个
其他聚类算法总结
ING。。。
当我们在谈论kmeans(5)的更多相关文章
- 当我们在谈论kmeans(1)
本稿为初稿,后续可能还会修改:如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/ 简书:建设中... 知乎:建设中... 当我们在谈论 ...
- 当我们在谈论kmeans(2)
本稿为初稿,后续可能还会修改:如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/ 其他:建设中- 当我们在谈论kmeans(2 ...
- 当我们在谈论kmeans(3)
本系列意在长期连载分享,内容上可能也会有所删改: 因此如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/(暂时公式显示有问题) ...
- K-Means 聚类算法
K-Means 概念定义: K-Means 是一种基于距离的排他的聚类划分方法. 上面的 K-Means 描述中包含了几个概念: 聚类(Clustering):K-Means 是一种聚类分析(Clus ...
- 用scikit-learn学习K-Means聚类
在K-Means聚类算法原理中,我们对K-Means的原理做了总结,本文我们就来讨论用scikit-learn来学习K-Means聚类.重点讲述如何选择合适的k值. 1. K-Means类概述 在sc ...
- K-Means聚类算法原理
K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体 ...
- [Erlang 0117] 当我们谈论Erlang Maps时,我们谈论什么 Part 2
声明:本文讨论的Erlang Maps是基于17.0-rc2,时间2014-3-4.后续Maps可能会出现语法或函数API上的有所调整,特此说明. 前情提要: [Erlang 0116] 当我们谈论E ...
- [Erlang 0116] 当我们谈论Erlang Maps时,我们谈论什么 Part 1
Erlang 增加 Maps数据类型并不是很突然,因为这个提议已经进行了2~3年之久,只不过Joe Armstrong老爷子最近一篇文章Big changes to Erlang掀起不小了风 ...
- kmeans算法并行化的mpi程序
用c语言写了kmeans算法的串行程序,再用mpi来写并行版的,貌似参照着串行版来写并行版,效果不是很赏心悦目~ 并行化思路: 使用主从模式.由一个节点充当主节点负责数据的划分与分配,其他节点完成本地 ...
随机推荐
- C#调用Outlook来发送邮件
原文:C#调用Outlook来发送邮件 写了一个简单的Windows Form程序,实现利用Outlook来发送电子邮件的功能.下面逐步讲解如何实现,再加上具体的代码. 打开VS2010, 新建一个W ...
- 工欲善其事:编辑器之神Vim(一)
本篇文章收集了Vim最常用和实用的一些命令,掌握这些命令就可以使用Vim了 本文仅列举个人认为常用的命令,本系列文章更像是自己的学习笔记,而不是VIM使用教程. 如果你想了解vim的更多,可以看看Co ...
- Rails当你运行一个数据库回滚错误:ActiveRecord::IrreversibleMigration exception
最近rails3.2在更改数据库表字段,然后要回滚取消,但在运行rake db:rollback命令,错误: rake aborted! An error has occurred, all late ...
- 2014年3I工作室成员的正式名单
后3I认真审议和审查工作室的老师及相关人员,今天,新成员首次正式发布,如以下:博才文(11软件).黄彩云(11软件).朱小丹(11软件).海(11软件).欧剑灵(11此计).黄思源(12软件).黄龙营 ...
- 使用rem设计移动端自适应页面三(转载)
使用rem 然后根据媒体查询实现自适应.跟使用JS来自适应也是同个道理,不过是js更精确一点.使用媒体查询: html { font-size: 62.5% } @media only screen ...
- Windows Azure
Windows Azure初体验 目前在IT界,云这个概念的第一意思不再是词典里的解释了.不过它们还是有相同点的——也许确实会酝酿出一块大蛋糕,可也是飘在天上,众神分食之,与我等P民无关.所谓云,不过 ...
- 老调重弹--面向对象设计原则--S.O.L.I.D设计原则
SRP - 单一职责原则 全称:Single Responsibility Principle 定义:每一个上下文对象(类.函数.变量等等)的定义应该仅仅包含单一的职责 描述:对象提供单一职责的高度封 ...
- james+javamail入门
James+Javamail构建邮件服务(一) 本文描述如何使用James搭建具备一定邮件过滤.邮件操作功能的邮件服务器,以及使用Javamail实现对James服务器邮件的收发功能. 1关于Jame ...
- Redis简介与简单安装
Redis简介与简单安装 一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类 ...
- 带你走近AngularJS 之创建自定义指令
带你走近AngularJS 之创建自定义指令 为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义 ...