[Machine Learning] 11 聚类(Clustering)

在这里插入图片描述

11 Clustering(聚类)

11.1 Unsupervised Learning Introduction

在一个典型的监督学习中,训练集是有标签的,目标是找到能够区分正样本和负样本的决策边界,需要据此拟合一个假设函数。
在这里插入图片描述
与此不同的是,在非监督学习中,数据没有附带任何标签。
在这里插入图片描述
这里的一系列点是没有标签的。因此,训练集可以写成只有𝑥(1),𝑥(2)……一直到𝑥(𝑚)。也就是说,在非监督学习中,需要将一系列无标签的训练数据,输入到一个算法中,然后告诉这个算法,快去为我们找出这个数据的内在结构。图上的数据看起来可以分成两个分开的点集(称为簇),一个能够找到圈出的这些点集的算法,就被称为聚类算法。

那么聚类算法一般用来做什么呢?
在这里插入图片描述

  • 市场分割。在数据库中存储了许多客户的信息,希望将他们分成不同的客户群,这样可以对不同类型的客户分别销售产品或者分别提供更适合的服务。
  • 社交网络分析。事实上有许多研究人员正在研究这样一些内容,他们关注社交网络,例如 Facebook,Google+,或者是其他的一些信息,比如说:你经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此找到关系密切的人群。因此,这可能需要另一个聚类算法,通过它发现社交网络中关系密切的朋友。
  • 更好的组织计算机集群,或者更好的管理数据中心。因为如果知道数据中心中哪些计算机经常协作工作。那么,可以重新分配资源,重新布局网络。由此优化数据中心,优化数据通信。
  • 了解星系的形成。然后用这个知识,了解一些天文学上的细节问题。

11.2 K-Means Algorithm

K-Means 是最普及的聚类算法,算法接收一个未标记的数据集,然后将数据聚类成不同的组。

K-Means 是一个迭代算法,假设我们想要将数据聚类成 n 个组,其方法为:

  1. 首先选择𝐾个随机的点,称为聚类中心(cluster centroids);
  2. 对于数据集中的每一个数据,按照距离𝐾个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。
  3. 计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。
  4. 重复步骤 2-4 直至中心点不再变化。

下面是一个聚类示例:
在这里插入图片描述
在这里插入图片描述
迭代多次以后,结果为:在这里插入图片描述
用𝜇1,𝜇2,…,𝜇𝑘 来表示聚类中心,用𝑐(1),𝑐(2),…,𝑐(𝑚)来存储与第𝑖个实例数据最近的聚类中心的索引,K-均值算法的伪代码如下:
在这里插入图片描述
算法分为两个步骤,第一个 for 循环是赋值步骤,即:对于每一个样例𝑖,计算其应该属于的类。第二个 for 循环是聚类中心的移动,即:对于每一个类𝐾,重新计算该类的质心。

K-均值算法也可以很便利地用于将数据分为许多不同组,即使在没有非常明显区分的组群的情况下也可以。下图所示的数据集包含身高和体重两项特征构成的,利用 K-均值算法将数据分为三类,用于帮助确定将要生产的 T-恤衫的三种尺寸。
在这里插入图片描述

11.3 Optimization Objective

K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)为:
在这里插入图片描述
在这里插入图片描述

其中𝜇𝑐(𝑖)代表与𝑥(𝑖)最近的聚类中心点。 我们的优化目标便是找出使得代价函数最小的 𝑐(1),𝑐(2),…,𝑐(𝑚)和𝜇1,𝜇2,…,𝜇𝑘
在这里插入图片描述
在这里插入图片描述
第一个循环是用于减小𝑐(𝑖)引起的代价,而第二个循环则是用于减小𝜇𝑖引起的代价。迭代的过程一定会是每一次迭代都在减小代价函数,不然便是出现了错误。

11.4 Random Initialization

在运行 K-均值算法的之前,首先要随机初始化所有的聚类中心点,具体步骤:

  1. 应该选择𝐾 < 𝑚,即聚类中心点的个数要小于所有训练集实例的数量
  2. 随机选择𝐾个训练实例,然后令𝐾个聚类中心分别与这𝐾个训练实例相等

K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。
在这里插入图片描述
为了解决这个问题,通常需要多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。这种方法在𝐾较小的时候(2–10)还是可行的,但是如果𝐾较大,这么做也可能不会有明显地改善。
在这里插入图片描述

11.5 Choosing the Number of Clusters

没有所谓最好的选择聚类数的方法,通常是需要根据不同的问题,人工进行选择的。选择的时候思考运用 K-均值算法聚类的动机是什么,然后选择能最好服务于该目的的聚类数。

当人们在讨论,选择聚类数目的方法时,有一个可能会谈及的方法叫作“肘部法则”。关于“肘部法则”,我们所需要做的是改变𝐾值,也就是聚类类别数目的总数。用一个聚类来运行 K 均值聚类方法。这就意味着,所有的数据都会分到一个聚类里,然后计算成本函数或者计算畸变函数𝐽。
在这里插入图片描述
上图左边一条类似于一个人的肘部的曲线,这就是 “肘部法则” 所做的。好像人的手臂,如果你伸出胳膊,那么这就是你的肩关节、肘关节、手。这就是“肘部法则”。在这种模式下,它的畸变值会迅速下降,从 1 到 2,从 2 到 3 之后,你会在 3 的时候达到一个肘点。在此之后,畸变值就下降的非常慢,看起来就像使用 3 个聚类一样,这是因为那个点是曲线的肘点,畸变值下降得很快,𝐾 = 3之后就下降得很慢,因此可以令𝐾 = 3。当应用“肘部法则”的时候,如果得到了一个像上面这样的图,那么这将是一种用来选择聚类个数的合理方法。

例如,在 T-恤制造例子中,将用户按照身材聚类,可以分成 3 个尺寸:𝑆, 𝑀, 𝐿,也可以分成 5 个尺寸𝑋𝑆, 𝑆, 𝑀, 𝐿,𝑋𝐿,这样的选择是建立在回答“聚类后制造的 T-恤是否能较好地适合客户”这个问题的基础上作出的。在这里插入图片描述

聚类参考资料

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上一篇:10 支持向量机(Support Vector Machines)
下一篇:12 降维(Dimensionality Reduction)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Statistics and Machine Learning Toolbox是MATLAB中的一个工具箱,它包含了一系列的统计和机器学习功能模块。其中包括探索性数据分析、数据降维、机器学习、回归和方差分析、概率分布拟合及假设检验等功能模块。\[1\]这个工具箱提供了各种机器学习算法,可以用于解决分类、回归、聚类和强化学习等问题。例如,分类算法可以将一个分类应变量建模为一个或多个预测元的函数,Statistics and Machine Learning Toolbox提供了多种参数化和非参数化分类算法的应用程序和函数,如logistic回归、朴素贝叶斯、k近邻、SVM等。\[2\]此外,该工具箱还实现了多种聚类算法,通过根据相似度测量对数据进行分组来发现数据集中的规律。可用的聚类算法包括k-均值、k-中心点、分层聚类、高斯混合模型和隐马尔可夫模型。当不知道聚类的数量时,可以使用聚类评估技术根据特定指标确定数据中存在的聚类数量。\[3\]因此,Statistics and Machine Learning Toolbox提供了丰富的功能和算法,可以帮助用户进行统计分析和机器学习任务。 #### 引用[.reference_title] - *1* *2* *3* [基于Matlab进行机器学习](https://blog.csdn.net/zhujixiang12/article/details/128771127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值