9.1 聚类任务
无监督学习任务中,研究最广泛——聚类
聚类:试图将数据集的样本划分为若干个通常不相交的子集,每个子集称为一个“簇”
聚类算法涉及2个基本问题:
- 性能度量
- 距离计算
9.2 性能度量
性能度量,也称有效性指标
希望:簇内相似度高,且簇间相似度低
聚类的性能度量大致有两类:
- 外部指标:将聚类结果与某个参考模型进行比较
- 内部指标:直接考察聚类结果,而不使用任何参考模型
由上可以推导出下面的度外部指标:(公式查书)
1.Jaccard系数(JC)
2.FM指数(FMI)
3.Rand指数(RI)
上述性能度量结果值均在[0, 1]区间,值越大越好
由上可以推导出下面的度内部指标:(公式查书)
1.DB指数(DBI):越小越好
2.Dunn指数(DI):越大越好
9.3 距离计算
对于距离度量,要满足:非负性,同一性,对称性,直递性
有序属性:例如, {1, 2, 3}
无序属性:例如,{飞机, 火车, 汽车}
常用的距离度量:
- 闵可夫斯基距离(可用于有序属性)
p=2:欧氏距离
p=1:曼哈顿距离 - VDM(可用于无序属性)
将闵可夫斯基距离、VDM结合:
当样本空间中,不同属性的重要性不同,可食用“加权距离”
通常:距离越大,相似度越小
但相似度度量未必要满足距离度量的要求(尤其是直递性)
在现实任务中,有必要基于数据样本来确定合适的距离计算式,可使用:距离度量学习
9.4 原型聚类
原型聚类,亦称基于原型的聚类
此类算法的思想:假设聚类结构能通过一组原型刻画
下面介绍几种著名的原型聚类算法:
9.4.1 k均值算法
这个式子刻画了簇内样本围绕均值向量的紧密程度,E越小,簇内样本相似度越高
要做的是:最小化E,找到它的最优解,需考察样本集所有可能的簇划分,这是一个NP难问题
因此,k均值算法采用了:贪心策略,通过迭代优化求出近似解:
1.对均值向量进行初始化
2.对当前簇划分和向量迭代更新
3.若迭代更新后聚类结果不变,则返回当前簇划分结果
9.4.2 学习向量量化(LVQ)
与k均值算法类似,试图找到一组原型向量刻画聚类结构,但LVQ假设数据样本带有类别标记,学习过程中利用要样本的这些监督信息来辅助聚类
LVQ的目标:学得一组n维的原型向量,每个原型向量代表一个聚类簇
过程:
1.先对原型向量初始化
2.对原型向量进行迭代优化
3.在每一轮迭代中,算法随机选取一个标记训练样本,找出与其距离最近的原型向量,根据两者的类别是否一致,来对原型向量进行更新
4.若已经达到最大迭代数,或者原型向量更新很小或不再更新,则返回结果
Voronoi剖分
9.4.3 高斯混合聚类
高斯混合聚类,采用概率模型来表达聚类原型
高斯混合模型的EM算法:
1.在每步迭代中,先根据当前的参数来计算每个样本属于每个高斯成分的后验概率
2.再根据一些式子(跳过)更新模型参数
算法描述:
1.对高斯分布混合模型进行初始化
2.基于EM算法对模型参数进行迭代更新
3.若已经达到最大迭代数,或似然函数增长很少或不再增长,则根据高斯混合分布确定簇分布,返回结果
9.5 密度聚类
密度聚类,亦称基于密度的聚类:假设聚类结构能通过样本分布的紧密程度确定
DBSCAN是一种著名算法,基于一组邻域参数,来刻画样本分布的紧密程度。
ε-邻域
核心对象
密度直达
密度可达
密度相连
DBSCAN将簇定义为:由密度可达关系导出的最大的密度相连样本集合(连接性,最大性)
算法步骤:
1.先根据给定的邻域参数找出所有的核心对象
2.以任一核心对象(作为种子)为出发点,找出由其密度可达的样本生成聚类簇
3.直至所有核心对象都被访问过
9.6 层次聚类
层次聚类:试图在不同层次对数据集进行划分,从而形成树型的聚类结构
数据集的划分:自底向上的聚合策略,自顶向下的分拆策略
AGNES是一种自底向上的聚合策略的层次聚类算法
思想:
1.先将每个样本看作一个初始聚类簇
2.逐步找出距离最近的两个聚类簇,进行合并
3.直至达到预设的聚类簇个数
关键:如何计算两个聚类簇之间的距离
最小距离:–单链接
最大距离:–全链接
平均距离:–均链接