「Machine Learning」K-Means Clustering Algorithm from CS229 Lecture Notes

Sina Weibo:小锋子Shawn
Tencent E-mail:403568338@qq.com
http://blog.csdn.net/dgyuanshaofeng/article/details/83389083

CS229 课程笔记地址:K-Means Clustering
聚类问题描述:给定训练集合{x_1, x_2, …, x_m}, x_i belongs to R_n, 没有标注/标签y_i, 聚类算法要将训练集合分成指定组数或簇数(groups, clusters)的数据, 或找出数据的结构。这是一个无监督学习问题, 因为没有标注信息。
k-means clustering algorithm如下:
第一, 随机初始化聚类中心(cluster centroids), mu_1, mu_2, …, mu_k, mu_j belongs to R_n (because x_i belongs to R_n)。因此, 这里存在两个问题就是, 如何初始化才好(随机k个数据点, 空间上k个数据点)?如何确定聚类中心的数目k。
第二, 重复以下步骤, 直到收敛或迭代给定次数
{
第一步, 对于每一i, 也就是对于每一训练数据x_i, 计算c_i = arg min_j ||x_i - mu_j||^2, 也就是找出训练数据x_i离哪个聚类中心最近(通过计算x_i到每一个聚类中心mu_j的距离), 代价基于欧氏距离的平方。因此, 这里存在一个问题是, 是否可以用其他距离/测度?
第二步, 对于每一j, 也就是对于每一聚类中心mu_j, 计算mu_j = sum_i_1_m[I{c_i=j}*x_i]/sum_i_1_m[I{c_i=j}], 也就是根据聚类中心的控制范围内的数据点更新聚类中心, 数据点的均值作为新聚类中心。
}
扭曲函数/偏差函数/代价函数(distortion function): J(c, mu) = sum_i_1_m[||x_i - u_c_i||^2], J必定是单调下降的, 因为J必定收敛。J为非凸函数, 因此不保证收敛到全局最小值(the global minimum)。解决方法: 尝试不同的初始值, 然后基于J选择聚类中心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值