标签:
K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。
有一组附标记(
Unsupervised Learning
如图所示, 现在我有一些 没加标签的数据, 而我想将这些数据分成两个簇:
执行K均值算法,首先我随机选择两个点 ,这两个点叫做聚类中心 (cluster centroids) ,就是图上边的两个叉(一个红色一个蓝色) 这两个就是聚类中心 (因为要分成 两个簇,所以需要两个聚类中心)
K均值是一个迭代方法:
移动聚类中心
簇分配 :
在K均值算法的每次循环中,第一步是要进行簇分配,这就是说,我要遍历所有的样本 ,就是图上所有的绿色的点 ,然后依据 每一个点 是更接近红色的这个中心 还是蓝色的这个中心,来将每个数据点分配到两个不同的聚类中心中。
具体来讲 ,指的是对数据集中的所有点 ,依据他们更接近红色这个中心 ,还是蓝色这个中心 进行染色 ,染色之后的结果如图所示:
移动聚类中心:
我们将两个聚类中心,也就是说红色的叉和蓝色的叉移动到和它一样颜色的那堆点的均值处,那么我们要做的是找出所有红色的点计算出它们的均值,就是所有红色的点 平均下来的位置。然后我们就把红色点的聚类中心移动到蓝色的点也是这样 ,找出所有蓝色的点 计算它们的均值, 把蓝色的叉放到那里。将按照图上所示这么移动 :
最终,当算法收敛,即聚类中心不再变化时,聚类完成:
这里是计算聚类中心的公式:
K-means algorithm:
对于每个聚类中心,也就是说小写k从1循环到K 将
PS:那么如果存在一个没有点分配给它的聚类中心 ,那怎么办? 通常在这种情况下 我们就直接移除那个聚类中心。如果这么做了,最终将会得到K-1个簇,而不是K个簇,如果就是要K个簇 ,不多不少 ,但是有个没有点分配给它的聚类中心,你所要做的是重新随机找一个聚类中心。但是直接移除那个中心是更为常见的方法。不过在实际过程中,这个问题不会经常出现。
Optimization objective:
K均值算法要做的事情就是,它将找到参数
《大数据——互联网大规模数据挖掘与分布式处理》中提到:给定一个合适的类簇指标,比如平均半径或直径,只要我们假设的类簇的数目等于或者高于真实的类簇的数目时,该指标上升会很缓慢,而一旦试图得到少于真实数目的类簇时,该指标会急剧上升。
类簇的半径是指类簇内所有点到类簇中心距离的最大值。
下图是当K的取值从2到9时,聚类效果和类簇指标的效果图:
但如果你绘制出这些特征 ,你也许会发现在这里, 每个国家 用一个点z(i)表示, z(i)是一个二维数据。
可以用这二维数据概括。
这部分内容详见:http://blog.csdn.net/dingchenxixi/article/details/51643523
Coursera机器学习-第八周-Unsupervised Learning(K-Means)
标签:
原文地址:http://blog.csdn.net/dingchenxixi/article/details/51635634