【MindSpore:跟着小Mi一起机器学习吧!】聚类算法


一周未见,甚是想念!今天小Mi带大家学习聚类算法!也就是主流的监督学习算法我们已经学完了,本期我们开始接触无监督学习算法。废话不多说,跟着小Mi开始学习吧~

1 无监督学习

什么是无监督学习呢?首先我们先回顾下非常熟悉的监督学习算法:通常典型的监督学习中会有一个带有标签的训练集,根据这个训练集可以拟合假设函数,从而找到能够区分正样本和负样本的决策边界。那么无监督学习大家从字面上是不是已经可以理解啦?顾名思义,无监督学习的数据没有附带任何标签,计算机需要自主学习无标签数据。

图中的训练集可以写成,没有标签。也就是说,在非监督学习中,将一系列无标签的训练数据,输入到一个算法中,然后通过算法找出数据的内在关联和结构。而上图中的数据看起来可以分成两个分开的点集(称为簇),如果算法可以找出这些点集,那么该算法就可以称之为聚类算法。

那么聚类算法一般用来做什么呢?

比如市场分割——某金融机构数据库中存储了许多客户的信息,将他们分成不同的客户群,这样就可以对不同类型的客户分别销售产品或者分别提供更适合的服务。社交网络分析:网络公司会关注用户的一些信息,比如说:你经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此可以找到关系密切的人群。当然,还可以使用聚类算法来更好地管理数据中心、了解星系的形成等等。

2 K-Means

而聚类算法中比较常见的有K-均值聚类算法——算法将一个未标记的数据集聚类成不同的组。

K-均值是一个迭代算法,假设有一个无标签的数据集如图所示,将其分为两个簇,执行K均值算法,具体操作如下:

第一步随机生成两点,这两点就可以称之为聚类中心,也就是图上两个叉的位置。

K-均值算法的主要工作就是簇分配和移动聚类中心。每次内循环的第一步就是进行簇分配,也就是遍历每个样本(图上的每个绿点),然后根据每一个点是与红色聚类中心更近还是蓝色聚类中心更近来将每个数据点分配给两个聚类中心之一。

 

具体来说,就是遍历数据集,然后将每个点归为红色阵营还是蓝色阵营,这就是簇分配的工作内容。

而内循环的第二步就是移动聚类中心,将两个聚类中心移动到同色点的均值处,所以我们需要找出所有的红点然后计算出它们的均值(红色点的平均位置),然后把红色的聚类中心移动过去,蓝色的聚类中心也同理。然后将这两个步骤一直循环,最终直至红色和蓝色聚类中心不再改变,这时K均值便已聚合。

 

总结来说,K均值聚类算法的工作步骤如下:

1.随机初始化个聚类中心,

2.对于数据集中的训练样本(),计算与个中心点的距离,与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类;

3.计算每一组的平均值,并将该组所关联的中心点移动到平均值的位置;

4.重复步骤2和3至中心点不再变化。

3 随机初始化

在运行K-均值算法之前,需要随机初始化所有的聚类中心点:

1.选择,即聚类中心点的个数要小于所有训练集实例的数量

2.随机选择个训练实例,然后令个聚类中心分别与这个训练实例相等

K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。

为了解决这个问题,通常需要多次运行K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择代价函数最小的结果。这种方法在较小的时候(2--10)还是可行的,但是如果较大,这么做也可能不会有明显的改善。

4 目标优化

而在K-均值算法中的优化目标是需要最小化所有数据点与其所关联的聚类中心点之间的距离之和,因此K-均值的代价函数(又称畸变函数 Distortion function)为:

其中代表与最近的聚类中心点,优化目标是找出使得代价函数最小的和 

因此 K-均值迭代算法中,第一个循环是用于减小引起的代价,而第二个循环则是用于减小引起的代价。迭代的过程一定会是每一次迭代都在减小代价函数,不然便是出现了错误。

5 聚类数的确定

如何选择聚类数通常根据不同的问题,人工进行选择。需要考虑运用K-均值算法聚类的动机是什么,然后选择能最好服务于该目标的聚类数

选择聚类数目的方法时,可能会涉及“肘部法则”——我们用一个聚类来运行K均值聚类方法,所有的数据都会分到一个聚类里,然后计算成本函数或者计算畸变函数。

改变值,也就是聚类类别数目的总数,可能会得到一条类似于上图中的曲线,神似一个人的肘部,这就是“肘部法则”。图中畸变值会迅速下降,从1到2,从2到3之后,在3的时候达到一个肘点;之后,畸变值就下降的非常慢,看起来就可以明确得知使用3个聚类进行聚类是正确的。

例如,某工厂需要指定T-shirt尺寸的类型,可以分成3个尺寸,也可以分成5个尺寸,这样的选择是建立在回答“聚类后制造的T-shirt是否能较好地适合客户”这个问题的基础上作出的。

聚类算法需要参考的资料:

1.相似度/距离计算方法总结

A.闵可夫斯基距离Minkowski/(其中欧式距离:)

B.杰卡德相似系数(Jaccard):

C.余弦相似度(cosine similarity):

维向量的夹角记做,根据余弦定理,其余弦值为:

D.Pearson皮尔逊相关系数: 

Pearson相关系数即将坐标向量各自平移到原点后的夹角余弦。

2.聚类的衡量指标

A.均一性:

类似于精确率,一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率(每个 聚簇中正确分类的样本数占该聚簇总样本数的比例和)

B.完整性:

类似于召回率,同类别样本被归类到相同簇中,则满足完整性;每个聚簇中正确分类的样本数占该类型的总样本数比例的和

C.V-measure:

均一性和完整性的加权平均

D.轮廓系数

样本的轮廓系数:

簇内不相似度:计算样本到同簇其它样本的平均距离为,应尽可能小。

簇间不相似度:计算样本到其它簇的所有样本的平均距离,应尽可能大。

轮廓系数:值越接近1表示样本聚类越合理,越接近-1,表示样本应该分类到另外的簇中,近似为0,表示样本应该在边界上;所有样本的的均值被成为聚类结果的轮廓系数。

 

E.ARI

数据集共有个元素, 两个聚类结果分别是:

和的元素个数为:

记:

好啦,今天小Mi给大家带来的聚类算法就已经介绍完毕啦,下期我们学习如何进行主成分分析和数据降维。我们下期,再见呦(挥手十分钟)!