机器学习笔记12-聚类
在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律。此类学习任务中研究最多的是聚类。此外,无监督学习还有密度估计、异常检测等。常见的聚类包括原型聚类、密度聚类、层次聚类等。
-
原型聚类
此类算法假设聚类结果能通过一组原型刻画。通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解。
(1)k均值算法
给定样本集 D = { x 1 , x 2 , . . . , x m } D = {\rm{\{ }}{x_1}{\rm{,}}{x_2}{\rm{,}}...{\rm{,}}{x_m}{\rm{\} }} D={x1,x2,...,xm},“k均值”算法针对聚类所得簇划分 C = { C 1 , C 2 , . . . , C k } C = \{ {C_1},{C_2},...,{C_k}\} C={C1,C2,...,Ck}最小化平方误差
E = ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 2 E = \sum\limits_{i = 1}^k {\sum\limits_{x \in {C_i}} {\left\| {x - {\mu _i}} \right\|_2^2} } E=i=1∑kx∈Ci∑∥x−μi∥22其中 μ i = 1 ∣ C i ∣ ∑ x ∈ C i x {\mu _i} = \frac{1}{{\left| {{C_i}} \right|}}\sum\limits_{x \in {C_i}} x μi=∣Ci∣1x∈Ci∑x是簇 C i C_i Ci的均值向量。上式刻画了簇内样本围绕簇均值向量的紧密程度, E E E值越小则簇内样本相似度越高。具体地,k均值算法如下:
1.从D中随机选择k个样本作为初始均值向量 { μ 1 , μ 2 , . . . , μ k } {\rm{\{ }}{\mu _1}{\rm{,}}{\mu _2}{\rm{,}}...{\rm{,}}{\mu _k}{\rm{\} }} {μ1,μ2,...,μk}
2.对每个样本,计算得到与之最相近的均值向量 μ j \mu _j μj,并将其划入j类中
3.对已经划分好的k个类,利用类中的样本重新计算均值向量
4.重复过程2、3直到均值向量不再发生改变
—
(2)学习向量量化(LVQ)
LVQ假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。其算法过程如下:
输入样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x q , y q ) } D = {\rm{\{ (}}{x_1}{\rm{,}}{y_1}{\rm{),(}}{x_2}{\rm{,}}{y_2}{\rm{),}}...{\rm{,(}}{x_q}{\rm{,}}{y_q}{\rm{)\} }} D={(x1,y1),(x2,y2),...,(xq,yq)};原型向量个数q,各原型向量预设的类别标记 { t 1 , t 2 , . . . , t q } {\rm{\{ }}{t_1}{\rm{,}}{t_2}{\rm{,}}...{\rm{,}}{t_q}{\rm{\} }} {t1,t2,...,tq}
1.初始化一组原型向量 { p 1 , p 2 , . . . , p q } {\rm{\{ }}{p_1}{\rm{,}}{p_2}{\rm{,}}...{\rm{,}}{p_q}{\rm{\} }} {p1,p2,...,pq}
2.从样本集中 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x q , y q ) } D = {\rm{\{ (}}{x_1}{\rm{,}}{y_1}{\rm{),(}}{x_2}{\rm{,}}{y_2}{\rm{),}}...{\rm{,(}}{x_q}{\rm{,}}{y_q}{\rm{)\} }} D={(x1,y1),(x2,y2),...,(xq,yq)}随机选取一个样本, 找出与 x j x_j xj最近的一组原型向量 p i p_i pi,如果 y j = t i y_j=t_i yj=ti,则 p ′ = p i + η ⋅ ( x j − p i ) p' = {p_i} + \eta \cdot ({x_j} - {p_i}) p′=pi+η⋅(xj−pi);否则, p ′ = p i − η ⋅ ( x j − p i ) p' = {p_i} - \eta \cdot ({x_j} - {p_i}) p′=pi−η⋅(xj−pi)。然后将原型向量 p j p_j pj更新为 p ′ p' p′
3.算法的停止条件是达到最大迭代轮数,或原型向量的更新很小。
—
(3)高斯混合聚类
高斯混合聚类采用概率模型来表达聚类效果。这个算法已经在上一节中讲了,这里不再赘述。 -
密度聚类
此类算法假设聚类结构能通过样本分布的紧密程度确定。最著名的是DBSCAN算法。此算法先找出样本的核心对象集 Ω \Omega Ω,然后从 Ω \Omega Ω中随机选取一个核心对象作为种子,找出由它密度可达的所有样本,这就构成了第一个聚类簇。将核心对象集 Ω \Omega Ω刨去已经归类的样本,在剩下的集合中再随机选取一个核心对象作为种子生成下一个聚类簇。上述过程不断重复,直至 Ω \Omega Ω为空。 -
层次聚类
层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构。AGNES是一个采用自底向上策略的层次聚类算法。它先将数据集中的每个样本看作一个初始聚类簇,然后算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。这里的关键是如何计算聚类簇之间的距离:可以采用最小距离(由两个簇的最近样本决定)、最大距离(由两个簇的最远样本决定)、平均距离(由两个簇的所有样本决定)
参考
周志华《机器学习》