k-means确定初始中心值的方法
来源:互联网 发布:linux tomcat常用命令 编辑:程序博客网 时间:2024/04/28 11:00
KMeans算法本身思想比较简单,但是合理的确定K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响。
总结了一下,大概有以下几种方法。
1.随机选择,选择批次距离尽可能远的K个点
(1)随机选一个点作为一个类簇的初始中心点
(2)然后选取距离这个点最远的点作为第二个点
(3)之后选与前两个点距离和最远的点作为第三个点,一次类推。(有的说法是选择与前两个点最近距离最大的点作为第三个点)
(4)递归依次选择接下来的点
2.选用层次聚类或者Canopy算法进行初始聚类,然后利用这些类簇的中心点作为KMeans算法初始类簇中心点。
常用的层次聚类算法有BIRCH和ROCK,在此不作介绍,下面简单介绍一下Canopy算法,主要摘自Mahout的Wiki:
首先定义两个距离T1和T2,T1>T2.从初始的点的集合S中随机移除一个点P,然后对于还在S中的每个点I,计算该点I与点P的距离,如果距离小于T1,则将点I加入到点P所代表的Canopy中,如果距离小于T2,则将点I从集合S中移除,并将点I加入到点P所代表的Canopy中。迭代完一次之后,重新从集合S中随机选择一个点作为新的点P,然后重复执行以上步骤。
Canopy算法执行完毕后会得到很多Canopy,可以认为每个Canopy都是一个Cluster,与KMeans等硬划分算法不同,Canopy的聚类结果中每个点有可能属于多个Canopy。我们可以选择距离每个Canopy的中心点最近的那个数据点,或者直接选择每个Canopy的中心点作为KMeans的初始K个类簇中心点。
还有其它选择初始中心点的方法,比如随机生成几个数,然后计算样本点均值,拿这些点除以均值得到初始中心点等。
不过效果比较好的应该是使用一些层次聚类算法做预处理然后选取初始中心点了。
- k-means确定初始中心值的方法
- PSO算法确定k-means初始聚类中心
- k-means初始中心的选择
- 一个确定初始聚类中心的更好方法
- k-means初始点的选取
- K-means中的K值选择与初始点的选择
- CenteredTransformInitializer 确定 Transform 初始中心
- kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
- kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
- kmeans 的k值确定方法
- K-means 方法概括
- 使用轮廓系数来确定K-means算法簇的数量
- K-Means++的代码
- K-Means 方法及应用
- k-means中基于密度的k值发现。
- k-means聚类方法的简单java实现
- 关于K-means的详细介绍和优化方法
- 基于距离的聚类方法--K-means
- 初学android开发--day07
- char[],char *,string之间转换
- 62. Unique Paths
- c/c++基础知识点
- PHPStorm获取免费社区激活
- k-means确定初始中心值的方法
- 观察者模式
- Android开发 MeasureSpec介绍
- C++全局变量(编译后)去哪儿
- 22. Generate Parentheses
- 卸载redhat6.5的yum,安装centos6的yum,配置第三房yum源
- iOS小技巧 - 获取指定文件夹下的所有相对路径(包括子文件夹路径),并实现指定文件夹下的所有文件的全部移动
- 153. Find Minimum in Rotated Sorted Array
- 【USACO题库】3.2.5 Magic Squares魔板