类似于linear regression,K-means算法也optimization objective或者是试图使cost function求最小值。
了解K-means算法的optimization objective有助于我们(1)调试算法时,看算法是否运行正确(在本节中可以看到)(2)使算法找到更好的cluster,避免局部最优解(在下节中会讲)
K-means optimization objective
uc(i):表示x(i)分给的那个cluster的cluster centroid
K表示有K个cluster,k表示cluster centoid的index.
cost function为x(i)到属于它的cluster的cluster centroid的距离的平方的累加
通过求cost function的最小值来求得参数c与u.
这个cost function有时也称为distortion cost function(失真代价函数)
K-means算法
wrt: with respect to(关于)
Cluster assignment step:就是将u固定,C做为参数来求cost function J(C)的最小值时的C值
move centroid step: C固定,u做为参数来求cost function J(u)的最小值时的u值
通过循环来收敛求得最后的C与u
所以我们可以通过迭代次数与cost function之间的函数的关系来看程序是否是正确运行。正确运行的程序应该是随着迭代次数的增加,cost function递减而收敛
总结
- K-means算法的过程就是最小化cost function J来求最优化参数的过程
- 通过cost function是否随着迭代次数的增加而收敛来判断算法是否正确运行