二分K均值(bisecting k-means)算法

二分K均值(bisecting k-means)算法--good

 http://m.blog.csdn.net/blog/hwwn2009/38312613html

 

机器学习算法与Python实践之(六)二分k均值聚类http://blog.csdn.net/zouxy09/article/details/17590137web

 

 

算法主要分为如下步骤,一开始是把全部数据初始化为一个cluster,第二步从全部cluster 中选其中一个出来用基本k-means算法(k设为2)再划分红两个cluster(初始时只有一个cluster).而后是一直重复第二步的划分(选一个cluster划成两个)直到获得k个cluster算法中止。算法

   从算法能够知道每次划分都是用k-means划分,但是问题是从已有的cluster中应该选哪一个cluster出来进行划分呢。从网上较多人转载Michael Steinbach的文章“A Comparison of Document Clustering Techniques”摘抄如下算法:机器学习

Basic Bisecting K-means Algorithm for finding K clusters.
1. Pick a cluster to split.
2. Find 2 sub-clusters using the basic K-means algorithm. (Bisecting step)
3. Repeat step 2, the bisecting step, for ITER times and take the split that produces the
clustering with the highest overall similarity.
4. Repeat steps 1, 2 and 3 until the desired number of clusters is reached.学习

 

在这篇文章中,做者说到了选取cluster有两种策略,第一种就是每次选的时候,都对已有的cluster计算偏差和(SSE,MSE,RMSE,R-square(转)),而后选一个SSE最大的一个cluster来进行划分。第二种是每次都挑数据最多的那个cluster来进行划分。通常都是采起第一种策略。除此之外,每次不仅用一次k-means来划分,而是预先设置一个ITER 值,而后对这个cluster进行Iter次循环执行k-means算法。由于k-means每次一开始都是随机选k个质心来执行,因此通常来讲 ITER次执行k-means,每次都会获得不一样的两个cluster。那么应该选哪对cluster来做为划分之后的cluster呢?答案就是在每次循环中,每次都计算经过当次k-means划分出来的两个cluster的SSE和,那么最后就选SSE和最少的那对cluster做为划分之后的cluster。url


算法以下:spa

1. 把全部数据做为一个cluster加入cluster list.net

2. Repeatorm

3.        从cluster list中挑选一个SSE[最大]的cluster出来htm

4.        for i=1 to 预设的循环次数

5.                 用k-means算法把挑出来的cluster划分红两个子cluster

6.                 计算两个子cluster的SSE和

7.         end for

8.         把for循环中 [sse和最小的] 那两个子cluster加入cluster list

9. until   cluster list 拥有k 个cluster

相关文章
相关标签/搜索