标签:image 图片 clust 理想 样本 关联 img 技术 结果
K-均值(K-Means)算法用于解决无监督学习中聚类问题,其输入为聚类组数量$K$,以及数据集${x^{(1)},x^{(2)},dots,x^{(m)}}$,其中$x^{(i)}inmathbb{R}^n$(不再添加$x^{(i)}_0=1$这一项)。算法步骤为:
首先需要随机选取$K$个聚类中心(Cluster Centroid)$mu_1,mu_2,dots,mu_Kinmathbb R^n$。
重复上面的步骤直至算法收敛,即聚类分组情况不再改变。
在算法的迭代过程中,可能遇到某个聚类中心没有关联到任何样本的情况(即没有样本与该聚类中心的距离最近),我们的解决办法通常是随机指定一个新的聚类中心替换掉它,或者直接淘汰该聚类组。
由上面的过程得知K-均值算法的代价函数为:
优化目标是:
K-均值算法的代价函数又称为畸变函数(Distortion Function),在迭代过程中,代价函数的值不可能增大,应该是一直减小的。
关于$K$个聚类中心的初始化,我们通常在数据集中选择$K$个不同的样本作为聚类中心的初始值。另外需要注意的是,选择不同的聚类中心初始值,可能使算法收敛于不同的结果,可能收敛于局部最优解而非全局最优解,如下图所示:
右上角的结果为最优解,但如果聚类中心的初始值不同,可能收敛于下面两张图片表示的非最优解。
为避免这种情况,我们往往会多次运行K-均值算法,每次随机选择聚类中心的初始值,然后找到使代价函数值最小的聚类分组情况,作为我们最终的聚类分组结果。不过这种方法往往在聚类组数量较小时使用(通常为$Klt10$),如果$K$很大,即使算法没有收敛于全局最优解,往往也能输出理想的聚类分组结果,使用该方法的收效可能不大。
另外一个问题是如何选择聚类组数量$K$。显然,在聚类问题中,聚类组数目$K$通常应该小于样本数$m$。有时我们可能会使用“肘部法则”帮助我们选择$K$,其原理是在不同的$K$值下,计算算法收敛后的代价函数值,我们可能会得到如下图所示的“胳膊肘”曲线:
随着$K$的增大,$J$的值一定会减小,除非我们的算法收敛于一个糟糕的局部最优解。我们根据上面的函数曲线,选择“肘关节”处$K$的值。但在实际情况中,函数曲线通常不会呈现出“胳膊肘”的形状(曲线较为平滑,没有斜率急剧变小的点),我们更普遍的做法依然是根据具体的问题和需求指定$K$的值。
标签:image 图片 clust 理想 样本 关联 img 技术 结果
原文地址:https://www.cnblogs.com/petewell/p/11614980.html