聚类-机器学习(machine learning)笔记(Andrew Ng)

聚类

无监督学习介绍

在无监督学习中,我们的数据不带有任何标签(y值):
这里写图片描述

我们希望通过这些不带标签的输入,找到一些隐含在数据中的结构。比如上图,我们可以找到两组分开的点集(簇)。这种能找到这些簇的方法我们称之为聚类算法。

聚类的作用

这里写图片描述

k-means

最热门最为广泛运用的聚类算法。

定义
我们使用图像来说明k-means:
这里写图片描述
首先我们先找两(k=2)个点作为聚类中心,目的是为了将样本划分成两类。
迭代算法:

  • 簇分配

计算每个绿点与两个聚类中心的距离,然后进行分配
这里写图片描述

  • 移动聚类中心

我们分别计算蓝色样本的均值和红色样本的均值作为新一轮迭代的聚类中心
这里写图片描述

最终,我们会得到如下图的结果,并且再进行迭代聚类中心也不会变:
这里写图片描述

算法内容
k-means算法接受两个输入:

  • k(簇的数量)
  • 训练集

算法过程:
这里写图片描述

第一步随机初始化k个聚类中心。第一个for循环进行簇分配,第二个for循环计算新的聚类中心。
如果存在没有点分配的聚类中心,最简单的方法是移除那个聚类中心。否则的话,可以选择重新初始化这个聚类中心。

优化目标

先介绍几个变量:

  • c ( i ) :样本 x ( i ) 的簇索引
  • μ k :第k个聚类中心
  • μ c ( i ) :样本 x ( i ) 被分配到的聚类中心

优化目标:
这里写图片描述

Σ 后面的东西表示的是每个样本和他所分配到的聚类中心之间的距离。

我们可以用优化函数J来调试K-means算法,帮助证明k-means算法是收敛的并且能正常运行。

如何初始化k-means及避开局部最优

介绍一种方法:
理所当然我们应该取K < m。首先,随机取K个训练样本,设置 μ 1 . . . μ K 为这K个样本的位置。

局部最优
这里写图片描述
如果优化的好,那么可以达到上图中右上角的图的局部最优,同时也是全局最优。如果不好,则会陷入另外两张图的局部最优。
这里写图片描述
我们要做得是从这100种结果中选择具有最小代价函数的簇。事实证明,当k较小时,这种方法能够得到全局最优。

选取聚类数量

在无监督学习中,数据没有标签,所以并不总是有一个明确的答案告诉你有多少分类。因此,使用自动化的方法来选择簇的个数是非常困难的。

肘部法则
有一种选择聚类个数的方法叫做“肘部法则”:
这里写图片描述
我们改变K的大小,从1开始,可以发现在K=3的时候经历了一个转折,就像人的“肘部”一样。我们选取K=3作为最终的聚类个数选择。
但是并不是每次都能得到上述的图的,当遇到下面这种情况的时候,使用肘部法则选择就变的困难了。
这里写图片描述

另一种方法是:选择K的时候看哪个聚类数量能更好的应用于后续目的。比如市场划分,选择制定T恤的大小。我们可以选择3种T恤s m l或者5种T恤xs s m l xl。
这里写图片描述
这时候要问问自己运行k-means聚类的目的是什么。

猜你喜欢

转载自blog.csdn.net/sinat_25721683/article/details/81704591