目前的心得是聚类算法的性能最重要的是如何衡量相似性
相似性度量方式
闵科夫斯基距离
当p=1时,为曼哈顿距离,p=2时,为欧式距离,时,为切比雪夫距离
马氏距离(协方差距离)
其中为x的均值,为x的协方差阵,此类方法考虑了各种特性的相似性。
编辑距离:
可用于字符串的相似性度量,如给定两个字符串,从第一个转换为第二个所需要的最小编辑操作称为编辑距离,最主要的操作是插入,删除和替换,具体的迭代公式为
动态时间规整距离(DTW)
基本思想是找到所有密度相连的点构成一类,但是需要人为确定参数和MinPts
- ,想要找到最优的弯曲路径,使得S和Q之间的距离最短,有效的弯曲路径必须符合给出的这三个要求:
边界性:满足起始点一致,即;
单调性:对于给定的和,满足;
连续性:对于给定的和,满足.
Shaped Based Distance(基于相关性的距离)
首先定义
则最终距离的计算表达为
聚类方式
常见的聚类方式可以分为四类: 基于密度(Density based),基于原型(prototype-based),层次聚类(hierarchical clustering),基于模型(Model-based)的聚类。
基于密度的聚类:
- 基本概念:参数
- 域: 对于给定的数据点,距离此数据点距离小于的范围
- 核心对象:如果某点的域中包含至少MinPts个点,则此数据点为核心对象
- 密度直达:若在的域内,且为核心对象,则称由密度直达
- 密度可达:若存在一个序列,且满足可由密度直达,则称可由密度可达
- 密度相连: 若均由密度可达,则称与密度相连
- DBSCAN算法就是要找到所有密度相连的点,构成一个类DBSCAN算法可以对任意形状的点进行聚类,这是基于原型的聚类无法达到的。
# INPUT: 样本集D={x_1,x_2,...,x_m} 参数 epsilon MinPts
初始化核心对象集合: Omega为空集
for j in range(m):
确定样本x_j的epsilon域中包含的点个数
若个数大于MinPts,那么将x_j加入到Omega中去
初始化聚类簇个数:k=0
初始化为访问样本集合: Gamma=D
while Omega != None:
记录当前为访问样本集合: Gamma_old = Gamma
随机选取一个核心对象o,初始化队列 Q=<o>
Gamma = Gamma \ {o}
while Q != None:
取出队列Q中的首个样本q;
如果q是核心对象,对应的集合为N
令Delta = N与Gamma的交集
将Delta中的样本加入到队列Q
Gamma = Gamma\{Delta}
k = k+1,生成聚类簇 C_k = Gamma_old \ Gamma
Omega = Omega \ {C_k}
基于原型的聚类
Kmeans算法
基本想法是不断迭代更新中心点,直至中心点不变为止
- 优点是原理简单,但是却对于聚类的形状有一定限制,而且需要人为确定参数k
学习向量量化(Learning Vector Quantization)算法
基本思想是随机选取样本,找到与之最近的样本,看类别是否一致来对原型向量进行更新
最核心的点在于:对于找到距离最近的原型向量,如果对应的标记,为原型向量的label,则采用更新上图中的更新公式,此时得到的与之间的距离为:
因此,更新之后更加接近于,倘若对应标签不等,则会更加原理.
基于模型的聚类-Mixture of Gaussian
- 基本概念:
- 多元高斯分布: 为n维均值向量,为协方差阵
- 混合高斯分布:
满足 - 假设为高斯混合分布产生的数据,随机变量表示生成样本的混合成分,则,根据Bayes公式,有
上式表述了样本由第i个高斯混合成分生成的后验概率,记作 。
Gaussian混合聚类将样本分为k类,每个样本的标记
如果想要求解模型参数,可采用极大似然法
由可以得到:
对于混合系数,采用Lagrange乘子法, ,对于求导,最终得到
- 多元高斯分布: 为n维均值向量,为协方差阵
伪代码
基于层次的聚类
基本思想是自底而上或自顶而下的策略,如AGNES首先将每个点作为一个类簇,然后在算法中运行每一步找到距离最近的两个聚类簇进行合并,直至达到预设的聚类簇个数
参考自 周志华 《机器学习》