Coursera ML笔记 -----week8-1 K-means

欢迎点击作者原文地址

前面学习了监督学习的两大类问题:分类和回归。
后面就开始学习无监督学习:密度估计和聚类

首先了解一下监督学习和无监督学习的差别,这一点可以直接从我们输入的数据看出来
supervise learning : {(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
unsupervise learning: {x(1),x(2),...,x(m)}
显然,监督学习的数据都是成对出现,带有lable y ,而无监督学习就没有

接下来开始一个聚类算法的学习,K-means
输入:K,{x(1),x(2),...,x(m)}
1. 随机初始 K 个中心点μ1,μ2,...,μKRn
2. 循环以下两个步骤:
- cluster assignment step: 找到 m 个点分别对应的距离最近的类,c(i)=k(表示第i个点所在的类)
- move centroid step: 分别计算 K 个类别的均值,作为新的中心点μk
(如果某个中心点所在的类一个点也没有,那么可以考虑把这个中心点去掉,把k个类变成k-1个类,也可以重新初始化k个中心点)

对于这个聚类算法,我们有如下的几个问题要解决:
1. 我们的k要怎么选取
2. 选定k以后,初始中心点 μk 要怎么选择
3. 如果出现了local optimal怎么办
4. optimization objective

optimization objective:
在监督学习中,我们都有一个cost function。在这里,我们显然也应有对应的 J 来进行衡量。于是,我们有distortion function :

J(c(1),c(2),...,c(m),μ1,μ2,...,μK)=1mi=1mx(i)μc(i)2

其中 μc(i) 是第i个点所在的类的中心点。
那么 J 其实就是每个点和它所在类的中心点的欧氏距离和的均值。

我们的optimization objective 就是:

minc(1),c(2),...,c(m),μ1,μ2,...,μKJ(c(1),c(2),...,c(m),μ1,μ2,...,μK)

在K-means循环的过程中,两个step分别对应不同的优化目标:
assignment step:固定了 μk ,不断地调整 c(i)
move step:不断地优化 μk

k怎么选择?
主要还是靠人工的方法进行选择?可供参考的方法有:
elbow method:就是选择不同的k计算distortion function,看在哪一个k下出现了明显的转折点elbow,那么就选择那个k作为我们的目标K
但是有一个问题是,我们在实际运用的过程中,我们会发现k之间的弯折程度并没有那么大,没有明显的转折点,有多个k可以选择。
更一般的方法是,选择不同的k进行聚类,然后在后续的过程中使用不同的维度评估不同的k的效果

初始中心点的选择:
直接在给出的example里面选择k个点作为初始的中心点。

但是上述的选择方法有时候容易出现local optimal,我们怎么解决:
K =2 - 10 之间的时候,我们使用multiple random initialization多次随机初始化的方法。不要就把一次聚类的解决当成最后的结果。要运行K-means算法多次,然后选择其中最小的distortion function J(c(1),c(2),...,c(m),μ1,μ2,...,μK)所对应的情形。
当然,在 K <script type="math/tex" id="MathJax-Element-22">K</script>比较大的时候,前面的这种方法的效果就比较有限了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值