Cluster

聚类是一个把数据对象划分为多个组或多个簇的过程。同一个簇内的对象有很高的相似性,而不同簇之间的对象有很高的相异性。

方法 一般特点
划分方法 - 发现球形互斥的簇
- 基于距离
- 可以用均值或中心点等代表簇中心
- 对中小规模的数据集有效
层次方法 - 聚类是一个层次分解
- 不能纠正错误的合并或划分
- 可以集成其他技术,如微聚类或考虑对象“连接”
基于密度的方法 - 可以发现任意形状的簇
- 簇是对象空间中被低密度区域分隔的稠密区域
- 簇密度:每个点的“邻域”内必须具有的最少个数的点
- 可能过滤离群点
基于网格 - 使用一种多分辨率网格数据结构
- 快速处理

划分方法

k-均值

在数据集中随机选取k个对象,每个对象代表一个簇的初始均值或中心。其余对象根据与各个簇中心的欧氏距离,分配到最近的簇。根据簇中的点重新计算簇的中心,然后重复上述算法直到收敛。 结果可能收敛于局部最优解,也就是结果会依赖于初始时随机中心的选择。算法复杂度为 O(nkt)。 根据数据类型,也可以使用 k-众数等方法

k-中心点

上述的k-均值方法有一个很大的问题就是,假设数据都是比较理想的,而一旦有离群点outlier,那么就会严重影响聚类结果。 因此,k-中心点使用实际的对象而不是均值来代表簇。划分方法基于绝对误差absolute-error criterion: $$E = \sum_{i=1}^{k} \sum_{p \in C_{j}} dist(p,o_{i})$$

k-中心点的每次迭代所需要的时间复杂度为 O(k(n-k)2),因此不适用于较大的数据集。

层次方法

将数据划分为不同层次上的组群,比如不同粒度上的划分。

BIRCH

利用层次结构的平衡迭代规约和聚类Balanced Iteration Reducing and Clustering using Hierarchies 使用聚类特征来概括一个簇,使用聚类特征树来表示聚类的层次结构,有较好的伸缩性,并支持动态聚类。

聚类特征:

CF = <n, LS, SS>

其中,LS是n个点的线性和,SS是点的平方和,聚类特征本质上是簇的统计汇总,不同簇之间的聚类特征是可加的。

聚类特征树: 是一棵高度平衡的树,存储了层次聚类的聚类特征。非叶子结点存储了子女的聚类特征总和。聚类特征树有两个参数,分支因子B(定义了每个非叶结点的子女的最大数目)和阈值T(存储在树的叶节点中的子簇的最大直径)

Chameleon

使用动态建模的多阶段层次聚类。 在chameleon中,簇的相似度依据 1.簇中对象的连接情况 2.簇的临近性

本质上是一个从下而上的层次聚类算法,主要有以下两步:

1)图划分算法:将数据对象(k-最近邻图)划分为大量相对较小的子簇

2)凝聚层次聚类算法:基于子簇的相似度反复合并上步生成的子簇

概率层次聚类

通过概率模型度量簇之间的距离。 很多时候我们收集到的数据不会很完整,因此可以使用概率模型来尽可能准确的估计。

基于密度的方法

为了发现任意形状的簇,可以把簇看做数据空间中被稀疏区域分开的稠密区域。

DBSCAN

Density-Based Spatial Clustering of Application with Noise

对于DBSCAN,有几个概念: 核心对象: 如果一个对象的Eps邻域至少包含MinPts个对象,则该对象是核心对象 直接密度可达: 给定一个对象集合D,如果p在q的Eps邻域内,而q是一个核心对象,则称对象p从对象q出发时是直接密度可达的 密度可达: 如果存在一个对象链 p1, …,pn,满足p1 = p 和pn = q,pi是从pi+1关于Eps和MinPts直接密度可达的,则对象p是从对象q关于Eps和MinPts密度可达的。密度可达不是等价关系 密度相连: 如果存在对象O∈D,使对象p和q都是从O关于Eps和MinPts密度可达的,那么对象p到q是关于Eps和MinPts密度相连的

DBSCAN算法: 1. 数据集中所有的对象都标记 unvisited 2. DBSCAN随机选择一个未访问过的对象p,标记为 visited ,检查其Eps邻域是否包含MinPts个对象,是则创建一个以p为核心对象的簇,并把Eps邻域中所有的对象都加入,否则标记为噪声 3. DBSCAN从剩下的对象中随机选择未访问过的对象,重复上述步骤,直到所有对象被访问

OPTICS

为了克服在聚类中使用一组全局参数的缺点。

和DBSCAN一样,也先引入几个概念: 核心距离: 最小的值Eps’, 也就是使p成为核心对象的最小半径阈值 可达距离: 使p从q密度可达的最小半径值。max{core-distance(q), dist(p, q)}

DENCLUE

Density-based clustering

在DBSCAN和OPTICS中,密度通过统计被半径参数Eps定义的邻域中的对象个数来计算,这种密度估计方法对所使用的半径值非常敏感。 为了解决这个问题,可以使用核密度估计,概率密度函数的近似核密度为:

$$f_h(x) = \frac{1}{nh} \sum_{i=1}^{n}K( \frac{x-x_i}{h})$$ $$E = \sum_{i=1}^{k} \sum_{p \in C_{j}} dist(p,o_{i})$$

\(K( )\)为核函数,需要满足\(\int_{-∞}^{+∞}K(u)du = 1\)和 \(K(-u) = K(u)\)常用的核函数为标准高斯函数

基于网格的方法

使用多分辨率的网格结构,优点是处理度快。

STING

优点: 1. 基于网格的计算是独立于查询的,因为存储在每个单元中的统计信息提供了单元中数据汇总信息 2. 网格结构有利于并行处理和增量更新 3. 效率高,处理的时间复杂度为O(n)

CLIQUE

使用稠密单元关于维度的单调性

聚类评估

估计聚类趋势

霍普金斯统计量 Hopkins Statistic

用于检验空间分布的变量的空间随机性 1. 均匀地从D的空间中抽取n个点p1, …, pn。对于每个点pi,找出pi在D中的最近邻,并令 xi = min{ dist(pi, v) } 2. 均匀地从D的空间中抽取n个点q1, …, qn。对于每个点qi,找出qi在D - {qi}中的最近邻,即 yi = min{ dist(qi, v) } 3. 计算霍普金斯统计量 H

$$H = \frac{ \sum_{i=1}^{n}y_i}{ \sum_{i=1}^{n}x_i + \sum_{i=1}^{n}y_i}$$

确定聚类中的簇数

测定聚类质量

轮廓系数

$$a(o) = \frac{ \sum_{o’ \in C_i, o \neq o’} dist(o,o’)}{|C_i| - 1}$$

$$b(o) = min_{C_j:i \le j \le k, j \neq i} { \frac{ \sum_{o’ \in C_i, o \neq o’} dist(o,o’)}{|C_i| - 1} }$$

$$s(o) = \frac{b(o) - a(o)}{max {a(o), b(o) }}$$

轮廓系数的值在-1到1之间。a(o)的值反映o所属簇的紧凑性,越小越紧凑。b(o)表示o与其他簇的分离程度,越大越分离。轮廓系数接近1时,包含o的簇紧凑,并且远离其他簇,是比较理想的情况。

Chuanrong Li

Read more posts by this author.