性能度量
距离计算
原型聚类
k均值
算法
- 随机选k个点作为初始聚类中心
- 计算每个样本到k个聚类中心的距离,选距离最近的作为类标记
- 重新计算聚类中心
- 重复2、3过程
- 直至收敛或达到迭代次数
优缺点
优点
- 对于大型数据集也是简单高效、时间复杂度、空间复杂度低。
缺点
- 最重要是数据集大时结果容易局部最优
- 需要预先设定K值,对最先的K个点选取很敏感
- 对噪声和离群值非常敏感;只用于numerical类型数据
- 不能解决非凸(non-convex)数据。
学习向量量化 LVQ
高斯混合聚类
- 选择簇的数量(如 K-Means 所做的),并随机初始化每个簇的高斯分布参数。
- 给定每个簇的高斯分布,计算每个数据点属于一个特定簇的概率。一个点越靠近高斯的中心,它就越可能属于该簇。
- 基于这些概率,我们计算一组新的高斯分布参数使得簇内的数据点的概率最大化。我们使用数据点位置的加权和来计算这些新参数,其中权重是数据点属于该特定簇的概率。
- 重复步骤2和3直到收敛。
密度聚类
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
算法
- 从任一对象点p开始;
- 寻找并合并核心p对象直接密度可达(eps)的对象;
- 如果p是一个核心点,则找到了一个聚类,如果p是一个边界点(即从p没有密度可达的点)则寻找下一个对象点;
- 重复2、3,直到所有点都被处理
优缺点
优点
- 对噪声不敏感
- 能发现任意形状的聚类。
缺点
- 聚类的结果与参数有很大的关系
- DBSCAN用固定参数识别聚类,但当聚类的稀疏程度不同时,相同的判定标准可能会破坏聚类的自然结构,即较稀的聚类会被划分为多个类或密度较大且离得较近的类会被合并成一个聚类。
OPTICS(Ordering Points To Identify Clustering Structure)
DBSCAN的扩展, 通过优先对高密度(high density)进行搜索,然后根据高密度的特点设置参数,改善了DBSCAN的不足。
层次聚类
AGNES(AGglomerative NESting)
采用自底向上的聚合策略来产生层次聚类结构
算法
- 将每个对象当成一个初始簇
- 计算任意两个簇的距离,并找到满足度量条件的两个簇
- 合并两个簇,生成新的簇的集合
- 重复2和3直到终止条件得到满足
合并簇方法划分
single-linkage
最近距离由两个簇的最近的样本来决定
d i s t m i n ( C i , C j ) = min p ∈ C i , p ′ ∈ C j { ∣ p − p ′ ∣ } dist_{min}(C_i,C_j)=\min_{p\in{C_i},p'\in{C_j}}\{|p-p'|\} distmin(Ci,Cj)=minp∈Ci,p′∈Cj{∣p−p′∣}
complete-linkage
最大距离由两个簇的最远的样本来决定
d
i
s
t
m
a
x
(
C
i
,
C
j
)
=
max
p
∈
C
i
,
p
′
∈
C
j
{
∣
p
−
p
′
∣
}
dist_{max}(C_i,C_j)=\max_{p\in{C_i},p'\in{C_j}}\{|p-p'|\}
distmax(Ci,Cj)=maxp∈Ci,p′∈Cj{∣p−p′∣}
average-linkage
由两个簇的平均距离决定
d
i
s
t
a
v
g
(
C
i
,
C
j
)
=
1
n
i
n
j
∑
p
∈
C
i
,
p
′
∈
C
j
{
∣
p
−
p
′
∣
}
dist_{avg}(C_i,C_j)=\frac{1}{n_in_j}\sum_{p\in{C_i},p'\in{C_j}}\{|p-p'|\}
distavg(Ci,Cj)=ninj1∑p∈Ci,p′∈Cj{∣p−p′∣}
DIANA
采用自顶向下的分拆策略来产生层次结构
Birch
BIRCH使用 聚类特征(CF) 来概括一个簇,使用聚类特征树(CF树)来表示聚类的层次结构。聚类特征本质上是给定簇的统计汇总:从统计学的观点来看,它是簇的零阶矩、一阶矩和二阶矩。聚类特征满足可加性。
BIRCH聚类算法原理
优缺点
优点
- 节约内存,所有的样本都在磁盘上,CF Tree仅仅存了CF节点和对应的指针。
- 聚类速度快,只需要一遍扫描训练集就可以建立CF Tree,CF Tree的增删改都很快。
- 可以识别噪音点,还可以对数据集进行初步分类的预处理
缺点
- 由于CF Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的类别分布不同.
- 对高维特征的数据聚类效果不好。此时可以选择Mini Batch K-Means
- 如果数据集的分布簇不是类似于超球体,或者说不是凸的,则聚类效果不好。
其他聚类
谱聚类
算法
- 计算两两样本之间的相似度,用相似度构造邻接矩阵 W W W
- 把 W W W的矩阵的每一列加起来得到 N N N个数,构造一个 N ∗ N N*N N∗N的对角矩阵 D D D(度矩阵),计算拉普拉斯矩阵 L = D − W L=D-W L=D−W
- 求出 L L L的前 k k k小的特征值对应的 k k k个特征向量 { v } i = 1 k \{\bm{v}\}_{i=1}^{k} {v}i=1k
- 把
$k$
个特征列向量排列在一起组成一个 N ∗ k N*k N∗k的矩阵,其中每一行可以看做原先的样本降维到 k k k维空间的向量 - 使用Kmeans算法(Kmeans的 K K K与步骤3里的 k k k没关系)进行聚类,用降维后的向量代替原先的样本
优缺点
- 对离群点不敏感
- kmeans适合凸数据, 而谱聚类则比较通用
问题
为什么是 L L L前 k k k小的特征向量
L L L前 k k k小等价于 W W W前 k k k大,本质上也是保留特征矩阵 W W W的前 k k k大,而且 L L L前 k k k小的特征向量的组成的矩阵是使目标函数最小的解