机器学习(九)——聚类(分类+原理+计算示例)

1、聚类的定义

\qquad 聚类:是机器学习中的无监督学习,目标是通过对无标记训练样本的学习来解释数据的内在性质以及规律,为进一步的数据分析提供基础。
\qquad 聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”

2、常见聚类算法

机器学习(九)——聚类(分类+原理+计算示例)_第1张图片

3、原型聚类

\qquad 原型聚类亦称为“基于原型的聚类”(prototype-based clustering),这一类算法假设聚类结构能通过一组原型刻画,在现实聚类中很常用。
\qquad 其统一的步骤为:

算法先对原型进行初始化,然后对原型进行迭代更新求解。

3.1 k k k均值聚类( k − m e a n s k-means kmeans)算法

\qquad 给定样本集 D = ( x 1 , x 2 , . . . . . x m ) D=(x_1,x_2,.....x_m) D=(x1,x2,.....xm),共m个样本集,“ k k k均值”算法针对聚类所得簇划分 C = ( C 1 , C 2 , . . . . . . C k ) C=(C_1,C_2,......C_k) C=(C1,C2,......Ck),即需要将样本集中的所有样本根据规则,将其分别划分至合适的簇中,最小化平方误差:
机器学习(九)——聚类(分类+原理+计算示例)_第2张图片
\qquad 最小化平方误差,找到它的最优解需要考察样本集 D D D中的所有可能的簇划分,这是一个NP难问题。因此, k k k均值算法采用了贪心策略,通过迭代优化来近似求解上式,算法的具体流程如下:

1.从样本集 D D D中随机选择 k k k个样本作为初始的均值向量,每个样本表示一个簇;
2.计算样本集中的其他样本与初始的均值向量的距离,根据距离最近的均值向量确定该样本所属的簇;
3.对D中的所有样本均划分完成后,根据划分的簇中的样本,重新计算均值向量,更新当前均值向量后,再重复计算样本与均值向量的距离,重新划分;
4.不断重复2、3的步骤,直到迭代的均值向量不再发生变换或达到最大迭代次数,算法终止,得到最终的簇划分。

3.1.1 实例计算 k k k均值算法学习过程

\qquad 参考《机器学习》书中的西瓜案例进行计算演示:

机器学习(九)——聚类(分类+原理+计算示例)_第3张图片
计算过程:
机器学习(九)——聚类(分类+原理+计算示例)_第4张图片

最终迭代的结果图:
机器学习(九)——聚类(分类+原理+计算示例)_第5张图片

3.2 学习向量量化算法

\qquad k k k均值算法类似,“学习向量量化”(Learning Vector Quantization,简称LVQ)也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本具有类别标签(类别标签是人为定义的),学习过程中利用样本的这些监督信息来辅助聚类。
\qquad 在样本数据集上会有一些变化,即样本集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . . . . . ( x m , y m ) D={(x_1,y_1),(x_2,y_2).......(x_m,y_m)} D=(x1,y1),(x2,y2).......(xm,ym),其中,每个样本都有一个类别标签 y j y_j yj
\qquad LVQ的目标是学得一组 n n n维原型向量{ p 1 , p 2 , . . . , p n p_1,p_2,...,p_n p1,p2,...,pn},每个原型向量代表一个聚类簇。
\qquad 那么重点来了,初始阶段我们随机选取 n n n个原型向量,即聚类的簇数,那么我们怎样通过计算,去更新我们的初始值(原型向量),以达到最好的聚类效果呢?
\qquad 针对样本集 D D D中的一个样本 x j x_j xj,计算其与原型向量之间的距离,选择与 x j x_j xj最近的一个原型向量 p i p_i pi,接下来判断该原型向量的类别与样本 x j x_j xj的类别是否相同,若相同,则令该原型向量 p i p_i pi x j x_j xj方向靠拢,由此得到新的原型向量,具体的计算公式为:
机器学习(九)——聚类(分类+原理+计算示例)_第6张图片

若不同,则令该原型向量 p i p_i pi远离 x j x_j xj,由此得到新的原型向量,具体的计算公式为:
机器学习(九)——聚类(分类+原理+计算示例)_第7张图片
\qquad 算法的整体流程如下:

1.从样本集 D D D中选择一组原型向量,假设选取 n n n个样本;
2.从样本集 D D D中随机选取样本 ( x j , y j ) (x_j,y_j) (xj,yj),分别计算其与第一步中选取的原型向量的距离 d = ∣ ∣ x j − p i ∣ ∣ d=||x_j-p_i|| d=xjpi
3.根据计算的距离,选取与样本距离最近的一个原型向量,接着去判断该样本与原型向量的类别标签是是否相同,根据不同的公式去更新该原型向量;
4.接着不断重复2,3步骤,不断迭代更新,直到满足条件停止更新;
5.输出最终的簇分类结果。

3.2.1实例计算LVQ算法学习过程

\qquad 参考《机器学习》书中的西瓜案例进行计算演示:

机器学习(九)——聚类(分类+原理+计算示例)_第8张图片
计算过程:
机器学习(九)——聚类(分类+原理+计算示例)_第9张图片

最终迭代的结果图:
机器学习(九)——聚类(分类+原理+计算示例)_第10张图片

3.3 高斯混合聚类算法

机器学习(九)——聚类(分类+原理+计算示例)_第11张图片
机器学习(九)——聚类(分类+原理+计算示例)_第12张图片
机器学习(九)——聚类(分类+原理+计算示例)_第13张图片

3.3.1实例计算高斯混合聚类算法学习过程

\qquad 参考《机器学习》书中的西瓜案例进行计算演示:

机器学习(九)——聚类(分类+原理+计算示例)_第14张图片
计算过程:
机器学习(九)——聚类(分类+原理+计算示例)_第15张图片

4、密度聚类

\qquad 密度聚类也称为“基于密度的聚类”,此类算法假设聚类结构能通过样本分布的紧密程度确定。通常情形下,密度聚类算法从样本密度的角度来考察样本间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。

\qquad DBSCAN是密度聚类的代表算法。
\qquad 它是基于一组“邻域”的参数( ϵ \epsilon ϵ,MinPts)来刻画样本分布的紧密程度。
\qquad 所谓的“邻域”参数( ϵ \epsilon ϵ,MinPts),即与样本 x j x_j xj距离不大于 ϵ \epsilon ϵ的最少样本数MinPts。

了解几个概念: 核心对象 密度直达 密度可达
核心对象:是指样本 x j x_j xj的邻域内至少包含MinPts个样本,则称 x j x_j xj为核心对象
密度直达: x i x_i xi位于 x j x_j xj的邻域内,且 x j x_j xj是核心对象,则称 x i x_i xi x j x_j xj密度直达
密度可达:对于样本 x i x_i xi x j x_j xj,中间有一个样本 x m x_m xm,使得 x i x_i xi x m 密 度 直 达 , 那 么 称 x_m密度直达,那么称 xmx_i 由 由 x_j$密度可达。

\qquad 算法的具体流程:

1.首先设定邻域参数( ϵ \epsilon ϵ,MinPts);
2.然后计算样本集 D D D中的每个样本 x j x_j xj是否符合为核心对象,计算完所有的样本,将符合条件的样本放入一个集合中,即核心对象集合;
3.然后从核心对象集合中随机选取一个核心对象,作为一个种子,找出与它密度可达的所有样本,这样就构成一个样本簇;
4.将核心对象集合中与第3步中重合的样本,从核心对象集合中去除;
5.然后不断重复3,4步骤,直至核心对象集合为空,这样就构成了不同的聚类簇。

4、层次聚类

\qquad 层次聚类试图在不同的层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。
\qquad AGNES是一种采用“自底向上”聚合策略的层次聚类算法。它先将数据集中的每个样本看作是一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复。直至达到预设的聚类簇个数。

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