机器学习: K-means 聚类

今天介绍机器学习里常见的一种无监督聚类算法,K-means。我们先来考虑在一个高维空间的一组数据集,S={x1,x2,...,xN}S={x1,x2,...,xN}xRDx∈RD,假设我们需要把这组数据聚集长 KK 类,不失一般性,我们可以假设每个聚好的类都有一个中心 μkμk,如果聚类完成的话,那么数据集中的每一个点 xx 会有一个中心 μkμk 离这个点的距离最近。可以构造一个变量 rnk={0,1}rnk={0,1} 表示变量 xx 离第 kk 类最近 rnk=1rnk=1,离其他的类更远 rnj=0,jkrnj=0,j≠k,那么我们可以定义如下的目标函数:

J=n=1Nk=1Krnk||xnμk||2J=∑n=1N∑k=1Krnk||xn−μk||2

这个目标函数就是要求 rnk,μkrnk,μk,使得目标函数 JJ 的值最小。

为了解决上面这个问题,因为要同时求 rnk,μkrnk,μk 两个变量,所以我们会采取分步迭代的方法,当我们求 rnkrnk 可以让 μkμk 固定不动,当我们求 μkμk 的时候,可以让 rnkrnk 固定不动。

很显然,当我们求 rnkrnk,只有比较每一个 xnxnμkμk 的距离,选择距离最近的一个类即可:

rnk=1if=argminj||xnμj||2rnk=1if=arg⁡minj||xn−μj||2

而求 μkμk 的时候,我们可以 让 rnkrnk 固定不动, 对目标函数 JJ 求导,

2n=1Nrnk(xnμk)=02∑n=1Nrnk(xn−μk)=0

从而我们可以求得 μkμk :

μk=nrnkxnnrnkμk=∑nrnkxn∑nrnk

通过这样的反复迭代,直到所有的 rnk,μkrnk,μk 都不再变化。

转载于:https://www.cnblogs.com/mtcnn/p/9412103.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值