无监督学习——聚类

机器学习

  • 一、无监督学习
  • 二、K-Means算法
  • 三、优化目标
  • 四、随机初始化
  • 五、选取聚类数量


提示:本文是基于吴恩达老师机器学习视频总结

一、无监督学习

回顾一下之前的监督,监督学习的数据都是有标记的数据,如下图所示:
无监督学习——聚类_第1张图片
而对于无监督学习来说,就是使用没有标记的数据,也就是不会有标签y,如下图所示:
无监督学习——聚类_第2张图片

二、K-Means算法

首先K均值算法是一个迭代算法,需要有两个输入:
1、K(聚类的个数)
2、训练集{x(1)、x(2)、…、x(m)}

其中x(i)是一个n维的实数向量。
无监督学习——聚类_第3张图片

无监督学习——聚类_第4张图片
从第一副图到第二幅图,不断进行迭代,使得每个样本到聚类中心的距离之和最小。
接下来是K-Means算法的具体实现步骤,如下图所示:
无监督学习——聚类_第5张图片

其中上图中我们需要注意的是:
1、首先是要随机初始化K个聚类中心u1,u2,…,uK,其中这些聚类中心都是n维的向量
2、第一个for循环代表遍历每一个样本,为每一个样本选择一个簇,也就是选择1~K个聚类中心的一个。 c(i)就代表选择第几个聚类中心。其中选择的方法就是选择距离当前样本最近的聚类中心,也就是使得min|| x(i)-u(k)||2
3、第二个for循环代表重新计算聚类中心,uk代表聚类中心。假设样本1、5、6、10在第一个for循环中被划分到第二个簇,那么c(1)=c(5)=c(6)=c(10)=2。并且u2=[x(1)+x(5)+x(6)+x(10)]/4,u2是一个n维向量。

三、优化目标

首先我们重新定义一下几个变量:
1、c(i)就代表第i个样本选择第几个聚类中心
2、uk代表聚类中心的表示,uk∈Rn
3、uc(i)和uk代表的意义是一样的

这样接下来我们就可以定义我们的优化目标了,如下图所示:
无监督学习——聚类_第6张图片
其实就是不断进行迭代,最终使得总的代价函数最小。
无监督学习——聚类_第7张图片

并且,在上面提到的算法步骤中,两个for循环其实是进行了不同方向的代价函数下降。第一个for循环中通过选择最近的簇进行归类,第二个for循环中通过移动聚类中心来减小代价函数。

四、随机初始化

下面推荐一个比较常见的初始化方法:

1、首先要保证簇数K 2、随即从训练样本中选择K个样本作为初始的聚类中心
无监督学习——聚类_第8张图片
3、但是这种方法也会因为初始中心的不同,最终收敛结果不同。下图为一个不是很好的聚类中心初始化:
无监督学习——聚类_第9张图片
此外,K-Means聚类算法有可能会出现局部最优的情况,如下图所示
无监督学习——聚类_第10张图片
解决这个问题的办法就是尝试多次,选择代价值最小的,如下图所示:
无监督学习——聚类_第11张图片
当聚类的个数2-10是,可以进行一百次循环选出最佳的局部最优解,但当聚类的个数超大时,进行100次循环效果甚微。

五、选取聚类数量

在进行K值选择的时候,可以尝试一下肘部法则,如下图所示:
无监督学习——聚类_第12张图片

如上图,我们就会选择那个“拐点”作为我们K值的选择。
但是,有些情况下,肘部法则不会起作用,曲线一直都是基本平缓的,如下图所示:
无监督学习——聚类_第13张图片

因此,最后人们通常就根据实际的需要去选择K值。

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