第八周 - Lecture 13
聚类问题(clustering) / 无监督学习(unsupervised learning)
无标记数据的分类
- K-means算法( K-means algorithm)
输入:
K:类别的数量
训练数据集
Randomly initialize K cluster centroid
/ *随机初始化K个分类的中心点 */
Repeat {
for i = 1 to m
/ *等于
属于哪个分类
( x与哪个“聚类中心”最近) */
for k= 1 to K
/ * = 新的“聚类中心点” 为第k个聚类所有x值的平均数据,例如:分在第2个聚类有
即
*/
}
优化目标:
最小化
- 如何始始化
如果随机从训练集x取出K个值做为分类中心点会导致局部最优,所以建议循环100次,每次都随机取中心点,求出,找出最小的代价函数是J值.
但这个方法也不是总是有效,对于K值为2-10有较好的效果。
编程作业:聚类问题的一个应用,把24位的图像变成4位的图像
3.如何选择聚类的数量K
方法一:Elbow method:
画出K值和代价函数Cost J的曲线,可以找到“肘部”(elbow),如下左图,“肘部”对应的是K=3, 当前K>3 时,增加K值Const J不会下降;但实际上很多情况是找不到“肘部”,如右图

方法二:手工选择
例如T-shirt生产商将生产的T-shirt分为S, M,L三类,将所有样本人员的身高、体重进行聚类,这些K值就是3。
网友评论