一 什么是聚类?
在无监督学习中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。
聚类试图将数据集中的样本划分为活干个通常是不想交(正交)的子集,每个子集称为一个簇。通过这样的划分每个簇可能对应于一些潜在的类别。这些类别对聚类算法而言事前是未知的。聚类的过程仅能自动形成簇机构,簇所对应的类别语义需由使用者来把握和命名。
聚类既能作为一个独立过程,用于找寻数据内在分布结构,也可作为分类等其他学习任务的前驱过程。例如在一些商业应用中需要对新用户的类型进行判别,但定义“用户类型”对商家来说却可能不太容易,此时往往可先对用户数据进行聚类,根据聚类结果将每个簇定义一个类,然后再基于这些类训练分类模型,用于判别新用户的类型。
二 聚类类型
基于不同的学习策略,人们设计出多种类型的聚类算法。
1 原型聚类
原型聚类亦称基于原型的聚类,此类算法假设聚类结构能通过一组原型刻画。通常情况下,算法先对原型进行初始化,人后对原型进行迭代更新求解,采用不同的原型表示、不同的求解方式,将产生不同的算法。
1.1 k均值算法
这是一个迭代算法,需要根据不同的质心执行多次,直至其收敛。它是一个基于距离的聚类算法。同一个簇中的对象彼此相似,不同簇中的对象彼此相异。
步骤:
(1)将N个对象划分到K个非空子集中。
(2)计算当前分区的簇质心。
(3)将各个对象分配到有最近质心的簇。为各个数据点找到最近的簇
(4)如果不再有新的分配,则停止计算。否则重复(2)(3)知道算法收敛。
这个算法会反复迭代,直到质心不再变化,此时就找到了我们想要的K个簇。由于K-均值算法是一个迭代的过程,每一步都会根据各个现有簇当前中心重新计算簇各个对象成员关系。这个过程会反复进行,直到达到算法收敛。
1.2学习向量量化
与k均值算法类似,“学习向量量化”(Learning Vector Quantization,简称LVQ)也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。
步骤:
(1)统计样本的类别,假设一共有q类,初始化为原型向量的标记为{t1,t2,……,tq}。从样本中随机选取q个样本点位原型向量{p1,
p2 ,……, pq}。初始化一个学习率a,a 取值范围(0,1)。
(2) 从样本集中随机选取一个样本(x, y),计算该样本与q个原型向量的距离(欧几里得距离),找到最小的那个原型向量p,判
样本的标记y与原型向量的标记t是不是一致。若一致则更新为p’ = p + a*(x-p),否则更新为p’ = p - a*(x - p)。
(3) 重复第2步直到满足停止条件。(如达到最大迭代次数)
(4) 返回q个原型向量。1.3 高斯混合聚类
高斯模型即正态分布,高斯混合模型就是几个正态分布的叠加,每一个正态分布代表一个类别,所以和K-means很像,高斯混合
模型也可以用来做无监督的聚类分析。混合高斯模型(Gaussian Mixture Model,简称GMM)是用高斯概率密度