吴恩达机器学习笔记(十)

本文介绍了K-Means聚类算法的基本概念,包括如何将无标签数据分为预设数量的簇,代价函数的计算以及随机初始化和聚类数选择的方法。重点讲述了如何避免局部最优并选择合适的聚类数目,适合于数据挖掘和无标签数据分析。
摘要由CSDN通过智能技术生成

1. 聚类(clustering algorithm)

在前面介绍的算法中,我们给定的数据集都是包含标签的,如 { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯   , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(m)},y^{(m)})\} {(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))},其中的标签表明了数据的类别,算法可以根据标签得到数据的模型。

但是有一种没有标签的数据,如 { x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) } \{x^{(1)},x^{(2)},\cdots,x^{(m)}\} {x(1),x(2),,x(m)},其中的每个样本点没有固定的标签,聚类算法要做的就是根据这些无标签的数据,找到隐含在其中的结构信息。如下图所示,对于图中数据点,可以根据数据的特征将数据分为两个(cluster)。对无标签的数据进行学习的算法称为无监督学习(unsupervised learning)。

在这里插入图片描述

2. K-Means 聚类算法

2.1 K-Means 的基本概念

K-Means 算法将一组没有标签的数据分为 K 个相关的子集或簇,即簇的数量 K 是事先指定的。为了将如下的数据分为两类,使用 K-Means 算法的步骤如下:
在这里插入图片描述

  1. 随机生成如下两个点,称为 聚类中心(Cluster Centroids)。选择两个点的原因是因为想把这些数据聚为两类。

    在这里插入图片描述

  2. 簇分配。遍历数据集中的每个样本,计算样本和每个聚类中心的距离,并选择距离最近的样本中心作为自己所属的类别,下图中将所有样本点分为红色和蓝色两类。
    在这里插入图片描述

  3. 移动聚类中心。计算同一类数据点的均值,并将聚类中心移动到均值处。在上图中,首先计算所有红色点的均值,然后将红色的聚类中心移动到均值处;再计算蓝色点的均值,并移动蓝色的聚类中心,得到下图。
    在这里插入图片描述

  4. 得到新的聚类中心后,我们对所有的样本点都重新分类,即重复第二步和第三步,直到聚类中心不再发生变化。如下所示
    在这里插入图片描述

  5. 最终,所有样本被分为两类。
    在这里插入图片描述

所以,整个 K-Means 算法可以总结如下:

输入:
\quad 1. 聚类的类别数 K K K
\quad 2. 训练集 { x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) } \{x^{(1)},x^{(2)},\cdots,x^{(m)}\} {x(1),x(2),,x(m)}
随机初始化 K 个聚类中心: μ 1 , μ 2 , ⋯   , μ K ∈ R n \mu_1,\mu_2,\cdots,\mu_K \in \mathbb{R}^n μ1,μ2,,μKRn
do{
f o r   i = 1   t o   m \quad for\ i=1 \ to \ m for i=1 to m
c ( i ) = i n d e x   o f   c l u s e t e r   c e n t r o i d   c l o s e s t   t o   x ( i ) \quad \quad c^{(i)} = index\ of \ cluseter\ centroid\ closest\ to\ x^{(i)} c(i)=index of cluseter centroid closest to x(i) (根据 x ( i ) x^{(i)} x(i) 与每个聚类中心的距离将其分类为 c ( i ) c^{(i)} c(i))
f o r   k = 1   t o   K \quad for\ k=1 \ to \ K for k=1 to K
μ k = a v e r a g e   o f   p o i n t s   a s s i g n e d   t o   c l u s t e r   k \quad \quad \mu_k = average\ of \ points \ assigned \ to \ cluster \ k μk=average of points assigned to cluster k (根据第 k 类的所有数据点更新聚类中心)
}while(!convergence)

2.2 K-Means 的代价函数

如果使用 c ( i ) c^{(i)} c(i) 表示样本 x ( i ) x^{(i)} x(i) 所属的分类, μ k \mu_k μk 表示第 k k k 类的聚类中心, μ c ( i ) \mu_{c^{(i)}} μc(i) 表示类别为 c ( i ) c^{(i)} c(i) 的聚类中心(即,若样本 x ( i ) x^{(i)} x(i) 被划分为第五类,那么 c ( i ) = 5 c^{(i)}=5 c(i)=5 μ c ( i ) = μ 5 \mu_{c^{(i)}}=\mu_5 μc(i)=μ5 )。则K-Means 算法中的代价函数可以表示如下,该代价函数也称为 失真函数(distortion function)
J ( c ( 1 ) , ⋯   , c ( m ) , μ 1 , ⋯   , μ K ) = 1 m ∑ i = 1 m ∥ x ( i ) − μ c ( i ) ∥ 2 J(c^{(1)},\cdots,c^{(m)},\mu_1,\cdots,\mu_K)=\frac{1}{m}\sum_{i=1}^m\|x^{(i)}-\mu_{c^{(i)}}\|^2 J(c(1),,c(m),μ1,,μK)=m1i=1mx(i)μc(i)2

其中 ∥ x ( i ) − μ c ( i ) ∥ 2 \|x^{(i)}-\mu_{c^{(i)}}\|^2 x(i)μc(i)2 表示样本 x ( i ) x^{(i)} x(i) 与聚类中心 μ c ( i ) \mu_{c^{(i)}} μc(i) 距离的平方。

K-Means 的优化目标就是找到能使 J J J 最小的参数 c ( 1 ) , ⋯   , c ( m ) , μ 1 , ⋯   , μ K c^{(1)},\cdots,c^{(m)},\mu_1,\cdots,\mu_K c(1),,c(m),μ1,,μK,即:
min ⁡ c ( 1 ) , ⋯   , c ( m ) , μ 1 , ⋯   , μ K J ( c ( 1 ) , ⋯   , c ( m ) , μ 1 , ⋯   , μ K ) \min_{c^{(1)},\cdots,c^{(m)}, \atop \mu_1,\cdots,\mu_K } J(c^{(1)},\cdots,c^{(m)},\mu_1,\cdots,\mu_K) μ1,,μKc(1),,c(m),minJ(c(1),,c(m),μ1,,μK)

在 K-Means 算法中, f o r   i = 1   t o   m for\ i=1 \ to \ m for i=1 to m是簇分配的过程,其对应为找到使代价函数最小的参数 c ( 1 ) , ⋯   , c ( m ) c^{(1)},\cdots,c^{(m)} c(1),,c(m) f o r   k = 1   t o   K for\ k=1 \ to \ K for k=1 to K 是移动簇中心的操作,对应为找到使代价函数最小的参数 μ 1 , ⋯   , μ K \mu_1,\cdots,\mu_K μ1,,μK

2.3 随机初始化的方法

K-Means 的第一步是随机选择一些点作为聚类中心,但是随机选择的点最终得到的结果可能只是局部最优点,如下图所示,左边表示我们期望得到的聚类结果,但是右边两幅图都是局部最优的聚类结果。为了避免局部最优的情况,可以通过如下的方式来解决。
在这里插入图片描述

  1. 随机选择 K K K 个样本作为初始的聚类中心。
  2. 多次随机初始化。通过多次随机初始化聚类中心,运行多次算法,得到多个聚类结果,在最终的聚类结果中选择代价函数最小的一个。只要聚类的数据比较小,如 K = 1 , 2 , ⋯   , 9 K=1,2,\cdots ,9 K=1,2,,9 等,通过多次随机初始化一般都能得到较好的聚类结果。

2.4 聚类个数的选择

对于一些未知的数据,我们事先是不知道可以将其聚类为多少类的,如下所示,对于同样的数据集,可能会有不同的聚类数目,对于给定的数据集,我们怎么才能正确的选择合适的聚类数目呢?
在这里插入图片描述

  1. 肘部法则(Elbow Method)
    依次选择不同个数的聚类数目,根据不同的聚类数目进行聚类,并计算该聚类数目下的损失函数 J J J,就可以得到如下的损失函数曲线,对于如下的曲线,存在一个拐点,经过该拐点之后,损失函数并没有再次快速下降,所以我们就可以把聚类数目选为拐点对应的 K K K
    在这里插入图片描述
    但是通过这种方式可能得到的曲线并不存在拐点,如下所示,这时我们就不能根据该曲线确定聚类数目了。
    在这里插入图片描述

  2. 根据最终目的选择聚类数目
    很多时候我们并不直到到底哪个聚类数目更合适,这个时候我们可以根据我们想要达成的目的来对聚类结果进行评估,找到满足需求的聚类数目。

    例如,对于 T-shirt 的尺寸分类,我们可以为不同身高和体重的人设置不同大小的 T-shirt,但是我们是选择 S、M 和 L ,或者选择 XS、S、M、L、XL 是根据顾客的需求设置的,我们应该选择更能满足客户需求的情况进行聚类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值