Stanford 机器学习笔记 Week8 Unsupervised Learning

Clustering

K-Means Algorithm

一种经典的聚类算法,步骤很简单,分4步:

1.首先随机选择K个聚类中心
2.对于Training Set中的每个点i,计算离i最近的中心c(i),将该点标记为c(i)
3.对于每个中心k,重新计算该位置为:所有标记为k的点的平均位置
4.如果所有中心的位置都不变,算法结束。否则回到步骤2

当在第2步时发现对于某中心没有属于的点,可以直接将该中心删除。如果必须维持K个中心的话,则可以重新随机选择该中心位置。

K-Means同样可以解决分离不明显的training set:
Stanford 机器学习笔记 Week8 Unsupervised Learning_第1张图片
如右图所示。

Optimization Objective

之前的每个算法都有一个用来实施优化的公式(比如cost function),K-Means同样有,它的形式是:
Stanford 机器学习笔记 Week8 Unsupervised Learning_第2张图片
这个函数又被称为distortion function。

如果画一个图像,x轴是k-means算法循环设置新中心的次数,y轴是J函数的值。如果k-means算法编写正确的话,这个图像应该是单调递减的。

Random Initialization

一种比较好的初始化方法是把初始的K个中心设置为随机K个不同的training set中的点。

但是当初始化的情况很差时,可能会陷入一个比较差的局部最优解,如图:
Stanford 机器学习笔记 Week8 Unsupervised Learning_第3张图片
下面两个图就是陷入了局部最优解。

解决办法就是多次随机初始化,执行k-means后纪录distortion函数。
最终选择distortion函数值最小的分类方法作为答案。

Choosing the Number of Clusters

一种动态选择K值大小的方法是elbow method:
画出图像,x轴为K值大小,y轴为distortion值,这个值一定是单调递减的,如图:
Stanford 机器学习笔记 Week8 Unsupervised Learning_第4张图片

如果图像是左边这种情况,那么K=3那个位置就很像一个elbow,这个位置就是最佳的K值。
但是如果是右边图像的情况就不能明确的找出elbow,因此这不是一个能应用于所有情况的方法。

你可能感兴趣的:(机器学习)