K-means学习笔记

1 K-mean

1.1 K-mean要做什么

  1. 根据要分成几类随机初始化几个点,称为聚类中心 。 而类别在聚类问题中称为
  2. 将样本根据与1中初始化点的距离远近进行归类
  3. 将代表类别的各聚类中心移到所属他们样本点的均值处
  4. 重复前三个步骤,直到聚类中心不再改变位置,此时我们称K-mean已经聚合

1.2算法过程

###1.2.1 input:

  • K(number of clusters)
  • Training set {x1,x2,x3,x4…xm} 每个向量必须是同一维度

###1.2.2 Output:

  • 随机初始化 μ 1 … … μ K \mu_1 ……\mu_K μ1μK

  • for i = 1 to m c i : = m i n k ∣ ∣ x i − μ k ∣ ∣ 2 c^i := min^k||x^i- \mu_k||^2 ci:=minkxiμk2

  • for k= 1 to K μ k : = 此 簇 中 所 有 样 本 的 均 值 \mu_k:=此簇中所有样本的均值 μk:=

故最后某点 x i x_i xi所属的簇称为 μ c i \mu_{c^i} μci

###1.2.3 Cost Function:

J ( c 1 , . . . . , c m , μ 1 … . , μ K ) = 1 m ∑ 1 m ∣ ∣ x i − μ c i ∣ ∣ 2 J(c^1,....,c^m,\mu_1….,\mu_K)=\cfrac{1}{m}\sum_1^m||x^i-\mu_{c^i}||^2 J(c1,....,cm,μ1.,μK)=m11mxiμci2 失真代价函数(distortion)

找出 m i n J min J minJ c 1 − c m 和 μ 1 − μ K c^1-c^m和\mu_1-\mu_K c1cmμ1μK .

数 学 证 明 可 证 明 2 过 程 中 两 个 f o r 循 环 实 际 上 就 是 在 选 择 c 和 μ 来 m i n i m i z e 损 失 函 数 J 数学证明可证明2过程中两个for循环实际上就是在选择c和\mu来minimize 损失函数J 2forcμminimizeJ

1.3 Tricks

1.3.1 随机初始化方法

  1. 首先确认K是否小于样本数m,为了下面的选择
  2. 随机地选择K个训练样本
  3. μ 1 , . . . , μ K \mu_1,...,\mu_K μ1,...,μK等于2中选到的K个样本。

1.3.2 局部最优的解决办法

​ 由于聚类中心随机初始化的随机性,聚类最终有可能会得到局部最优解,通常的解决方案是随机初始化50-1000次,运行50-1000次K-mean,然后选择Cost Function最小的那一种结果。

​ 这种方法更适用于K取值较小时(如2-10次),当K取值较大时,随机初始化不会有太大的改善效果。这是因为K值较大时,往往没那么容易取到局部最优。

1.3.3 选择聚类数量K

​ 1. 通常我们会使用肘部法则(Elbow method)

​ 我们取K为1,2,3,…并计算其代价函数J,如果得到下图所示的数据,那么K=3就是我们需要的K值了,因为K取3时,J在这里有个明显的转折点,很像人的肘部。

在这里插入图片描述

在实际过程中,得到的数据可能是如下图的曲线,那么Elbow method就不太管用了。

在这里插入图片描述

  1. 实际情况中,应该根据实际需要的情况选择K值。如我们要将一万件T恤衫的尺寸数据聚类,我们想分成xs,s,m,l,xl五个尺码,那么就选择K=5.

1.4 总结

​ K-mean是无监督学习的代表算法,优点有模型简单、参数少、收敛速度也还不错。但缺点是非凸函数容易造成局部最优的问题,K值的选取难以把握。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值