第2章 聚类分析
文章目录
2.1 距离聚类的概念
理解为什么使用距离进行聚类
能从给定的例子中找出可用于分类的距离
- 什么是聚类分析?
- 根据模式样本之间的相似性对模式样本进行分类
- 聚类分析的前提条件
- 样本所属类别未知
- 聚类分析的目标
- 将相似的样本归为一类
- 将不相似的样本归为不同类
- 聚类分析的例子
- 将班上同学分类为男同学和女同学
- 什么是相似性?
- 每个样本由多个特征组成X=[x1,x2,…,xn]
- X可以看成是n维空间的一个点
- 点之间的距离代表着样本的相似性
- 聚类分析的关键问题
- 特征选择:略去多余的特征,选择合适的特征
- 特征量化:连续量的量化、数量级标准化、特征权重、归一化
2.2.1 常用的距离
会使用各种距离公式计算样本间的距离
能指出各种距离的优缺点
-
欧氏距离(Euclid,欧几里德)用于计算任意两样本的距离
-
输入:两个n维模式样本X1,X2
X 1 = [ x 11 , x 12 , … , x 1 n ] T X 2 = [ x 21 , x 22 , … , x 2 n ] T X_1=[x_{11},x_{12},\dots,x_{1n}]^T\\ X_2=[x_{21},x_{22},\dots,x_{2n}]^T X1=[x11,x12,…,x1n]TX2=[x21,x22,…,x2n]T -
计算公式:
D ( X 1 , X 2 ) = ∣ ∣ X 1 − X 2 ∣ ∣ = ( X 1 − X 2 ) T ( X 1 − X 2 ) = ( x 11 − x 21 ) 2 + ⋯ + ( x 1 n − x 2 n ) 2 D(X_1,X_2)=||X_1-X_2||=\sqrt{(X_1-X_2)^T(X_1-X_2)}=\sqrt{(x_{11}-x_{21})^2+\dots+(x_{1n}-x_{2n})^2} D(X1,X2)=∣∣X1−X2∣∣=(X1−X2)T(X1−X2)=(x11−x21)2+⋯+(x1n−x2n)2 -
输出(标量):
D ( X 1 , X 2 ) = ∣ ∣ X 1 − X 2 ∣ ∣ D(X_1,X_2)=||X_1-X_2|| D(X1,X2)=∣∣X1−X2∣∣ -
要求:
- 各维度上是相同的物理量
- 各维度上的物理量单位相同
-
问题:
- 单位或物理量不同时会出现不同的聚类结果
-
解决办法:
- 标准化、归一化
归 一 化 公 式 : x ′ = ( x − x m i n ) / ( x m a x − x m i n ) 归一化公式:x'=(x-x_{min})/(x_{max}-x_{min}) 归一化公式:x′=(x−xmin)/(xmax−xmin)
- 标准化、归一化
-
优点:
- 多个维度为同一个物理量且单位相同时,效果很好
-
缺点:
- 多个维度为不同物理量时,需要归一化
- 多个维度为不同单位时,需要标准化
-
-
马氏距离(Maharanobis)用于计算样本偏离总体的程度
-
输入:一个n维模式样本X,样本总体的均值向量M,样本总体的协方差矩阵C
X = [ x 1 ⋮ x n ] M = [ m 1 ⋮ m n ] C = E { ( X − M ) ( ( X − M ) ) T } = E { [ ( x 1 − m 1 ) ( x 2 − m 2 ) ⋮ ( x n − m n ) ] [ ( x 1 − m 1 ) ( x 2 − m 2 ) … ( x n − m n ) ] } = [ E ( x 1 − m 1 ) ( x 1 − m 1 ) E ( x 1 − m 1 ) ( x 2 − m 2 ) ⋯ E ( x 1 − m 1 ) ( x n − m n ) E ( x 2 − m 2 ) ( x 1 − m 1 ) E ( x 2 − m 2 ) ( x 2 − m 2 ) ⋯ ⋯ ⋮ ⋮ ⋮ ⋮ E ( x n − m n ) ( x 1 − m 1 ) ⋯ ⋯ E ( x n − m n ) ( x n − m n ) ] = [ σ 11 2 σ 12 2 ⋯ σ 1 n 2 σ 21 2 ⋱ σ j k 2 ⋮ ⋮ ⋮ σ k k 2 ⋮ σ n 1 2 ⋯ ⋯ σ n n 2 ] X=\begin{bmatrix} {x_1}\\ {\vdots}\\ {x_n}\\ \end{bmatrix}\ \ \ \ M=\begin{bmatrix} m_1\\ \vdots\\ m_n\\ \end{bmatrix}\\ C=E\{(X-M)((X-M))^T\}=E\{ \begin{bmatrix} {(x_1-m_1)}\\ {(x_2-m_2)}\\ \vdots\\ {(x_n-m_n)}\\ \end{bmatrix} [(x_1-m_1)(x_2-m_2)\dots(x_n-m_n)] \}\\ =\begin{bmatrix} {E(x_1-m_1)(x_1-m_1)}&{E(x_1-m_1)(x_2-m_2)}&{\cdots}&{E(x_1-m_1)(x_n-m_n)}\\ {E(x_2-m_2)(x_1-m_1)}&{E(x_2-m_2)(x_2-m_2)}&{\cdots}&{\cdots}\\ {\vdots}&{\vdots}&{\vdots}&{\vdots}\\ {E(x_n-m_n)(x_1-m_1)}&{\cdots}&{\cdots}&{E(x_n-m_n)(x_n-m_n)} \end{bmatrix}\\ =\begin{bmatrix} {\sigma_{11}^2}&{\sigma_{12}^2}&{\cdots}&{\sigma_{1n}^2}\\ {\sigma_{21}^2}&{\ddots}&{\sigma_{jk}^2}&{\vdots}\\ {\vdots}&{\vdots}&{\sigma_{kk}^2}&{\vdots}\\ {\sigma_{n1}^2}&{\cdots}&{\cdots}&{\sigma_{nn}^2}\\ \end{bmatrix} X=⎣⎢⎡x1⋮xn⎦⎥⎤ M=⎣⎢⎡m1⋮mn⎦⎥⎤C=E{(X−M)((X−M))T}=E{⎣⎢⎢⎢⎡(x1−m1)(x2−m2)⋮(xn−mn)⎦⎥⎥⎥⎤[(x1−m1)(x2−m2)…(xn−mn)]}=⎣⎢⎢⎢⎡E(x1−m1)(x1−m1)E(x2−m2)(x1−m1)⋮E(xn−mn)(x1−m1)E(x1−m1)(x2−m2)E(x2−m2)(x2−m2)⋮⋯⋯⋯⋮⋯E(x1−m1)(xn−mn)⋯⋮E(xn−mn)(xn−mn)⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡σ112σ212⋮σn12σ122⋱⋮⋯⋯σjk2σkk2⋯σ1n2⋮⋮σnn2⎦⎥⎥⎥⎥⎤- E表示平均值,C计算公式中的X代表所有样本,而不是单个!!!
- C表示样本总体在各维上的分散情况,越大越分散
-
计算公式:
D 2 = ( X − M ) T C − 1 ( X − M ) D^2=(X-M)^TC^{-1}(X-M) D2=(X−M)TC−1(X−M)
公式含义:某个样本点到均值向量的距离的平方,表示样本偏离总体模式类的程度。距离越大与该模式类越不相似 -
输出(标量):
D 2 D^2 D2 -
马氏距离与欧氏距离之间的关系
D ( X 1 , X 2 ) = ∣ ∣ X 1 − X 2 ∣ ∣ = ( X 1 − X 2 ) T ( X 1 − X 2 ) D 2 = ( X − M ) T C − 1 ( X − M ) D(X_1,X_2)=||X_1-X_2||=\sqrt{(X_1-X_2)^T(X_1-X_2)}\\ D^2=(X-M)^TC^{-1}(X-M) D(X1,X2)=∣∣X1−X2∣∣=(X1−X2)T(X1−X2)D2=(X−M)TC−1(X−M)-
马氏距离依赖于总体样本
-
当C=I时,马氏距离为欧氏距离
-
到均值向量的欧氏距离相等的点A和B在同一个圆上;
到均值向量的马氏距离相等的点A和B依赖于样本的分布(C代表了分布)
-
-
要求:
- 各维度上可以是不同的物理量
- 各维度上的物理量单位可以不同
-
优点:
- 可以消除量纲的影响
- 可以排除多个维度特征之间的关联
-
缺点:
- 要求总体样本数量大于每个样本的维数,否则协方差矩阵不存在逆矩阵(一般能满足)
-
-
明氏距离(Minkowaki)用于计算任意两样本的距离
-
输入:
两 个 n 维 模 式 样 本 X i , X j X i = [ x i 1 , x i 2 , … , x i n ] T X j = [ x j 1 , x j 2 , … , x j n ] T 两个n维模式样本X_i,X_j\\ X_i=[x_{i1},x_{i2},\dots,x_{in}]^T\\ X_j=[x_{j1},x_{j2},\dots,x_{jn}]^T 两个n维模式样本Xi,XjXi=[xi1,xi2,…,xin]TXj=[xj1,xj2,…,xjn]T -
计算公式:
D m ( X i , X j ) = [ ∑ k = 1 n ∣ x i k − x j k ∣ m ] 1 / m D_m(X_i,X_j)=[\sum_{k=1}^n|x_{ik}-x_{jk}|^m]^{1/m} Dm(Xi,Xj)=[k=1∑n∣xik−xjk∣m]1/m -
输出(标量):
D m ( X i , X j ) D_m(X_i,X_j) Dm(Xi,Xj) -
公式含义:明氏距离是欧氏距离、曼哈顿距离、切比雪夫距离的推广与统一
-
当m=2时,明氏距离为欧氏距离
-
当m=1时,
D 1 ( X i , X j ) = ∑ k = 1 n ∣ x i k − x j k ∣ D_1(X_i,X_j)=\sum_{k=1}^n|x_{ik}-x_{jk}| D1(Xi,Xj)=k=1∑n∣xik−xjk∣
称为“街坊”距离(又称为曼哈顿距离) -
当m→∞时,明氏距离为切比雪夫距离
D ∞ = m a x ( ∣ x i k − x j k ∣ ) , k = 1 , 2 , . . . , n D_\infty=max(|x_{ik}-x_{jk}|),k=1,2,...,n D∞=max(∣xik−xjk∣),k=1,2,...,n
起最大作用的分量
-
-
要求:
- 各维度上是相同的物理量
- 各维度上的物理量单位相同
-
问题:
- 单位或物理量不同时会出现不同的聚类结果
-
解决办法:
- 标准化、归一化
-
优点:
- 多个维度为同一个物理量且单位相同时,效果很好
-
缺点:
- 多个维度为不同物理量时,需要归一化
- 多个维度为不同单位时,需要标准化
-
-
汉明距离(Hamming)用于计算任意两二值样本的距离
-
输入:
两 个 n 维 二 值 ( 1 或 − 1 ) 模 式 样 本 X i , X j X i = [ x i 1 , x i 2 , … , x i n ] T X j = [ x j 1 , x j 2 , … , x j n ] T 两个n维二值(1或-1)模式样本X_i,X_j\\ X_i=[x_{i1},x_{i2},\dots,x_{in}]^T\\ X_j=[x_{j1},x_{j2},\dots,x_{jn}]^T 两个n维二值(1或−1)模式样本Xi,XjXi=[xi1,xi2,…,xin]TXj=[xj1,xj2,…,xjn]T -
计算公式:
D h ( X i , X j ) = 1 2 ( n − ∑ k = 1 n x i k ⋅ x j k ) D_h(X_i,X_j)=\frac{1}{2}(n-\sum_{k=1}^{n}x_{ik}·x_{jk}) Dh(Xi,Xj)=21(n−k=1∑nxik⋅xjk) -
输出(标量):
D h ( X i , X j ) 两 个 模 式 向 量 的 各 分 量 取 值 均 不 同 : D h ( X i , X j ) = n ; 两 个 模 式 向 量 的 各 分 量 取 值 全 相 同 : D h ( X i , X j ) = 0 D_h(X_i,X_j)\\ 两个模式向量的各分量取值均不同:D_h(X_i,X_j)=n;\\ 两个模式向量的各分量取值全相同:D_h(X_i,X_j)=0 Dh(Xi,Xj)两个模式向量的各分量取值均不同:Dh(Xi,Xj)=n;两个模式向量的各分量取值全相同:Dh(Xi,Xj)=0 -
要求:
- 各维度上是二值数据[1,-1]
-
问题:
- 不是二值数据
- 不是1和-1
-
解决办法:
- 二值化、码型变换
-
优点:
- 能很好的反映两个二值样本的相似程度
- 与单位无关
- 与物理量无关
-
缺点:
- 维度数据不是二值时,需要二值化
- 维度数据不是1和-1时,需要码型转换
-
-
角度相似性函数 用于计算任意两个样本的夹角
-
输入:
两 个 n 维 模 式 样 本 X i , X j X i = [ x i 1 , x i 2 , … , x i n ] T X j = [ x j 1 , x j 2 , … , x j n ] T 两个n维模式样本X_i,X_j\\ X_i=[x_{i1},x_{i2},\dots,x_{in}]^T\\ X_j=[x_{j1},x_{j2},\dots,x_{jn}]^T 两个n维模式样本Xi,XjXi=[xi1,xi2,…,xin]TXj=[xj1,xj2,…,xjn]T -
计算公式:
S ( X i , X j ) = X i T X j ∣ ∣ X i ∣ ∣ ⋅ ∣ ∣ X j ∣ ∣ S(X_i,X_j)=\frac{X_i^TX_j}{||X_i||·||X_j||} S(Xi,Xj)=∣∣Xi∣∣⋅∣∣Xj∣∣XiTXj -
输出(标量):
S ( X i , X j ) S(X_i,X_j) S(Xi,Xj) -
要求:
- 各维度上是相同的物理量
- 各维度上的物理量单位相同
-
问题:
- 单位或物理量不同时会出现不同的聚类结果
-
解决办法:
- 标准化、归一化
-
优点:
- 多个维度为同一个物理量且单位相同时,效果很好
- 具有旋转不变性(向量旋转)
- 二值情况下与汉明距离有点相似,也是点积
-
缺点:
- 多个维度为不同物理量时,需要归一化
- 多个维度为不同单位时,需要标准化
-
-
其它距离
- 卡方距离:反映实际值与理论值的偏离程度
- DTW距离:可用于比较两个长短不一的时间序列之间的相似度
- 皮尔森相关系数:反映两个样本的相关性
-
距离公式汇总表
描述 单位 物理量 欧氏 两个样本向量距离 同 同 马氏 样本向量偏离中心的距离 不同 不同 明氏 欧氏、街坊、曼氏、卡氏推广 同 同 汉明 两个二值样本距离 无 无 角度 两个样本向量夹角 同 同
2.2.2 聚类准则
理解聚类准则要解决的问题
会根据实际应用确定合适的阈值和聚类准则函数
-
聚类准则概念
- 定义:根据相似性测度确定的,衡量模式之间是否相似的标准。即把不同模式聚为一类还是归为不同类的准则
- 目标:样本间距离小到什么程度时,可归为一类?聚类准则确定
- 聚类准则的确定方法:
- 阈值准则:根据规定的距离阈值进行分类的准则
- 函数准则:利用聚类准则函数进行分类的准则
-
聚类准则函数
-
定义:在聚类分析中,表示模式类间相似或差异性的函数
-
准则函数讨论:
-
它应是模式样本集{X}和模式类别{Sj, j=1,2,…,c}的函数
着眼于整体,而不是个体
-
可使聚类分析转化为寻找准则函数极值的最优化问题
-
-
聚类准则函数例子:误差平方和函数
J = ∑ j = 1 c ∑ X ∈ S j ∣ ∣ X − M j ∣ ∣ 2 式 中 : c 为 聚 类 类 别 的 数 目 , M j = 1 N j ∑ X ∈ S j X 为 属 于 S j 集 的 样 本 的 均 值 向 量 , N j 为 S j 中 样 本 数 目 J=\sum_{j=1}^c\sum_{X\in S_j}||X-M_j||^2\\ 式中:c为聚类类别的数目,M_j=\frac{1}{N_j}\sum_{X\in S_j}X为属于S_j集的样本的均值向量,\\ N_j为S_j中样本数目 J=j=1∑cX∈Sj∑∣∣X−Mj∣∣2式中:c为聚类类别的数目,Mj=Nj1X∈Sj∑X为属于Sj集的样本的均值向量,Nj为Sj中样本数目 -
适用范围:
- 样本类数给定
- 各类样本密集且相差不多,而不同类间的样本又明显分开的情况
-
-
误差平方和函数的例子1
- **最好结果示例(a):**类内误差平方和很小,类间距离很远
- **不好结果示例(b):**W1类长轴两端距离中心很远,J值较大
-
误差平方和函数的例子2
有时可能把样本数目多的一类分拆为二,造成错误聚类
原因:这样分开,J值会更小
2.3 基于距离阈值的聚类算法
会使用各种聚类算法进行聚类
能指出各种聚类算法的优缺点
-
基于距离阈值的聚类:近邻聚类法
将样本按照距离阈值T分类到若干模式类中
-
输入:
N 个 待 分 类 的 模 式 样 本 { X 1 , X 2 , … , X N } N个待分类的模式样本\{X_1,X_2,\dots,X_N\} N个待分类的模式样本{X1,X2,…,XN} -
输出:
以 Z 1 , Z 2 , … 为 聚 类 中 心 的 若 干 模 式 类 以Z_1,Z_2,\dots为聚类中心的若干模式类 以Z1,Z2,…为聚类中心的若干模式类 -
算法描述:
步骤1:
任 取 样 本 X i 作 为 第 一 个 聚 类 中 心 的 初 始 值 , 如 令 Z 1 = X 1 任取样本X_i作为第一个聚类中心的初始值,如令Z_1=X_1 任取样本Xi作为第一个聚类中心的初始值,如令Z1=X1
步骤2:
计 算 样 本 X 2 到 Z 1 的 欧 氏 距 离 D 21 = ∣ ∣ X 2 − Z 1 ∣ ∣ , 若 D 21 > T , 定 义 一 新 的 聚 类 中 心 Z 2 = X 2 ; 否 则 X 2 ∈ 以 Z 1 为 中 心 的 聚 类 计算样本X_2到Z_1的欧氏距离D_{21}=||X_2-Z_1||,若D_{21}>T,定义一新的聚类中心Z_2=X_2;\\ 否则X_2\in 以Z_1为中心的聚类 计算样本X2到Z1的欧氏距离D21=∣∣X2−Z1∣∣,若D21>T,定义一新的聚类中心Z2=X2;否则X2∈以Z1为中心的聚类
步骤3:
假 设 已 有 聚 类 中 心 Z 1 , Z 2 , 计 算 D 31 = ∣ ∣ X 3 − Z 1 ∣ ∣ 和 D 32 = ∣ ∣ X 3 − Z 2 ∣ ∣ , 若 D 31 > T 且 D 32 > T , 则 建 立 第 三 个 聚 类 中 心 Z 3 = X 3 ; 否 则 X 3 ∈ 离 Z 1 和 Z 2 中 最 近 者 ( 最 近 邻 的 聚 类 中 心 ) 。 . . . . . . 依 此 类 推 , 直 到 将 所 有 的 N 个 样 本 都 进 行 分 类 假设已有聚类中心Z_1,Z_2,计算D_{31}=||X_3-Z_1||和D_{32}=||X_3-Z_2||,\\ 若D_{31}>T且D_{32}>T,则建立第三个聚类中心Z_3=X_3;\\ 否则X_3\in 离Z_1和Z_2中最近者(最近邻的聚类中心)。......\\ 依此类推,直到将所有的N个样本都进行分类 假设已有聚类中心Z1,Z2,计算D31=∣∣X3−Z1∣∣和D32=∣∣X3−Z2∣∣,若D31>T且D32>T,则建立第三个聚类中心Z3=X3;否则X3∈离Z1和Z2中最近者(最近邻的聚类中心)。......依此类推,直到将所有的N个样本都进行分类 -
优点:
- 计算简单、快速
-
缺点:
- 依赖于距离阈值T的大小
- 依赖于第一个聚类中心的位置选择
- 依赖于待分类模式样本的排列次序
- 依赖于样本分布的几何性质
-
图示:阈值T、中心Z、样本顺序的影响
用先验知识指导阈值T和起始点Z1的选择,可获得合理的聚类结果。否则只能选择不同的初值重复试探,并对聚类结果进行验算,根据一定的评价标准,得出合理的聚类结果
-
-
基于距离阈值的聚类:最大最小距离算法
将样本按照距离阈值T分类到若干模式类中
-
输入:
N 个 待 分 类 的 模 式 样 本 { X 1 , X 2 , … , X N } N个待分类的模式样本\{X_1,X_2,\dots,X_N\} N个待分类的模式样本{X1,X2,…,XN} -
输出:
以 Z 1 , Z 2 , … 为 聚 类 中 心 的 若 干 模 式 类 以Z_1,Z_2,\dots为聚类中心的若干模式类 以Z1,Z2,…为聚类中心的若干模式类 -
算法描述:
步骤1:
选 任 意 一 模 式 样 本 做 为 第 一 聚 类 中 心 Z 1 选任意一模式样本做为第一聚类中心Z_1 选任意一模式样本做为第一聚类中心Z1
步骤2:
选 择 离 Z 1 距 离 最 远 的 样 本 作 为 第 二 聚 类 中 心 Z 2 选择离Z_1距离最远的样本作为第二聚类中心Z_2 选择离Z1距离最远的样本作为第二聚类中心Z2
步骤3:
逐 个 计 算 各 模 式 样 本 与 已 确 定 的 所 有 聚 类 中 心 之 间 的 距 离 , 并 选 出 其 中 的 最 小 距 离 。 例 当 聚 类 中 心 数 k = 2 时 , 计 算 D i 1 = ∣ ∣ X i − Z 1 ∣ ∣ 和 D i 2 = ∣ ∣ X i − Z 2 ∣ ∣ m i n ( D i 1 , D i 2 ) , i = 1 , … , N ( N 个 最 小 距 离 ) 逐个计算各模式样本与已确定的所有聚类中心之间的距离,并选出其中的最小距离。\\ 例当聚类中心数k=2时,计算D_{i1}=||X_i-Z_1||和D_{i2}=||X_i-Z_2||\\ min(D_{i1},D_{i2}),i=1,\dots,N(N个最小距离) 逐个计算各模式样本与已确定的所有聚类中心之间的距离,并选出其中的最小距离。例当聚类中心数k=2时,计算Di1=∣∣Xi−Z1∣∣和Di2=∣∣Xi−Z2∣∣min(Di1,Di2),i=1,…,N(N个最小距离)
步骤4:
在 所 有 最 小 距 离 中 选 出 最 大 距 离 , 如 该 最 大 值 达 到 ∣ ∣ Z 1 − Z 2 ∣ ∣ 的 一 定 分 数 比 值 ( 阈 值 T ) 以 上 ( 即 T = θ ∣ Z 1 − Z 2 ∣ ) , 则 相 应 的 样 本 点 取 为 新 的 聚 类 中 心 , 返 回 步 骤 3 ; 否 则 聚 类 中 心 的 工 作 结 束 例 k = 2 时 , 若 m a x { m i n ( D i 1 , D i 2 ) , i = 1 , 2 , … , N } > θ ∣ ∣ Z 1 − Z 2 ∣ ∣ , 0 < θ < 1 则 Z 3 存 在 。 ( θ : 用 试 探 法 取 为 一 固 定 分 数 , 如 1 / 2 ) 在所有最小距离中选出最大距离,如该最大值达到||Z_1-Z_2||的一定分数比值(阈值T)以上\\ (即T=\theta|Z_1-Z_2|),则相应的样本点取为新的聚类中心,返回步骤3;\\ 否则聚类中心的工作结束\\ 例k=2时,\\ 若max\{min(D_{i1},D_{i2}),i=1,2,\dots,N\}>\theta||Z_1-Z_2||,0<\theta<1\\ 则Z_3存在。(\theta:用试探法取为一固定分数,如1/2) 在所有最小距离中选出最大距离,如该最大值达到∣∣Z1−Z2∣∣的一定分数比值(阈值T)以上(即T=θ∣Z1−Z2∣),则相应的样本点取为新的聚类中心,返回步骤3;否则聚类中心的工作结束例k=2时,若max{min(Di1,Di2),i=1,2,…,N}>θ∣∣Z1−Z2∣∣,0<θ<1则Z3存在。(θ:用试探法取为一固定分数,如1/2)
步骤5:重复步骤3、4,直到没有新的聚类中心出现为止
步骤6:
将 样 本 { X i , i = 1 , 2 , … , N } 按 最 近 距 离 划 分 到 相 应 聚 类 中 心 对 应 的 类 别 中 将样本\{X_i,i=1,2,\dots,N\}按最近距离划分到相应聚类中心对应的类别中 将样本{Xi,i=1,2,…,N}按最近距离划分到相应聚类中心对应的类别中
思路总结:*先找出两个初始类(步骤1、2);
再确定更多的聚类中心(步骤3、4、5);
最后分类(步骤6)
关键:确定聚类中心(步骤3、4、5)
-
优点:
- 计算简单、快速(比近邻聚类慢些)
- 不依赖于待分类模式样本的排列次序
-
缺点:
- 依赖于距离阈值T的大小
- 依赖于第一个聚类中心的位置选择
- 依赖于样本分布的几何性质
-
-
基于距离阈值的聚类汇总
基于距离阈值 计算速度 依赖于阈值T 依赖于第一聚类中心 依赖于样本排列次序 依赖于几何分布 近邻聚类 是 快 是 是 是 是 最大最小距离聚类 是 较快 是 是 否 是
2.4 层次聚类法
按照距离准则逐步合并,减少类别数
又称(系统聚类法、分级聚类法)
-
输入:N个待分类的模式样本,各自为一类
G 1 ( 0 ) , G 2 ( 0 ) , … , G N ( 0 ) G_1(0),G_2(0),\dots,G_N(0) G1(0),G2(0),…,GN(0) -
算法描述:
步骤1:
计算各样本间距离,得N×N维距离矩阵D(0)。“0”表示初始状态
步骤2:
假 设 已 求 得 距 离 矩 阵 D ( n ) ( n 为 逐 次 聚 类 合 并 的 次 数 ) , 找 出 D ( n ) 中 的 最 小 元 素 , 将 其 对 应 的 两 类 合 并 为 一 类 。 得 新 分 类 : G 1 ( n + 1 ) , G 2 ( n + 1 ) , … 假设已求得距离矩阵D(n)(n为逐次聚类合并的次数),找出D(n)中的最小元素,将其对应的两类合并为一类。\\ 得新分类:G_1(n+1),G_2(n+1),\dots 假设已求得距离矩阵D(n)(n为逐次聚类合并的次数),找出D(n)中的最小元素,将其对应的两类合并为一类。得新分类:G1(n+1),G2(n+1),…
步骤3:计算合并后新类之间的距离,得D(n+1)
步骤4:
跳至步骤2,重复计算及合并
-
输出:
- 取距离阈值T,当D(n)的最小分量超过给定值T时,算法停止。所得即为聚类结果
- 或不设阈值T,一直将全部样本聚成一类为止,输出聚类的分级树
-
类间距计算方法
-
最短距离法
使用最短距离作为类间距离
-
输入:两个聚类H、K
-
输出(标量):最短距离
-
计算公式:
D H K = m i n { D ( X H , X K ) } X H ∈ H , X K ∈ K D ( X H , X K ) : H 类 中 样 本 X H 和 K 类 中 样 本 X K 之 间 的 欧 氏 距 离 D H K : H 类 中 所 有 样 本 与 K 类 中 所 有 样 本 之 间 的 最 小 距 离 D_{HK}=min\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K\\ D(X_H,X_K):H类中样本X_H和K类中样本X_K之间的欧氏距离\\ D_{HK}:H类中所有样本与K类中所有样本之间的最小距离 DHK=min{D(XH,XK)} XH∈H,XK∈KD(XH,XK):H类中样本XH和K类中样本XK之间的欧氏距离DHK:H类中所有样本与K类中所有样本之间的最小距离
-
简化计算:
如果K类由 I 和 J 两类合并而成,则,因为
D H I = m i n { D ( X H , X I ) } X H ∈ H , X I ∈ I D H J = m i n { D ( X H , X J ) } X H ∈ H , X J ∈ J 所 以 : D H K = m i n { D H I , D H J } D_{HI}=min\{D(X_H,X_I)\}\ \ \ \ X_H\in H,X_I\in I\\ D_{HJ}=min\{D(X_H,X_J)\}\ \ \ \ X_H\in H,X_J\in J\\ 所以:D_{HK}=min\{D_{HI},D_{HJ}\} DHI=min{D(XH,XI)} XH∈H,XI∈IDHJ=min{D(XH,XJ)} XH∈H,XJ∈J所以:DHK=min{DHI,DHJ}
-
优点:
- 计算简单、快速
-
缺点:
- 易受个别异常点影响
-
-
最长距离法
使用最长距离作为类间距离
-
输入:两个聚类H、K
-
输出(标量):最长距离
-
计算公式:
D H K = m a x { D ( X H , X K ) } X H ∈ H , X K ∈ K D_{HK}=max\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K DHK=max{D(XH,XK)} XH∈H,XK∈K -
简化计算:若K类由 I , J 两类合并而成,则,因为
D H I = m a x { D ( X H , X I ) } X H ∈ H , X I ∈ I D H J = m a x { D ( X H , X J ) } X H ∈ H , X J ∈ J D_{HI}=max\{D(X_H,X_I)\}\ \ \ \ X_H\in H,X_I\in I\\ D_{HJ}=max\{D(X_H,X_J)\}\ \ \ \ X_H\in H,X_J\in J\\ DHI=max{D(XH,XI)} XH∈H,XI∈IDHJ=max{D(XH,XJ)} XH∈H,XJ∈J
所以: D H K = m a x { D H I , D H J } D_{HK}=max\{D_{HI},D_{HJ}\} DHK=max{DHI,DHJ} -
优点:
- 计算简单、快速
-
缺点:
- 易受个别异常点影响
-
-
中间距离法
使用中间距离作为类间距离
-
输入:两个聚类H、K,其中类K由类 I 和 J 组成
-
输出(标量):中间距离
-
计算公式:
D H K = D H I 2 / 2 + D H J 2 / 2 − D I J 2 / 4 D_{HK}=\sqrt{D_{HI}^2/2+D_{HJ}^2/2-D_{IJ}^2/4} DHK=DHI2/2+DHJ2/2−DIJ2/4
如果类 K 是单个元素,则按照最长或最短距离法计算 -
优点:
- 可降低个别异常点的影响
-
缺点:
- 计算复杂
-
-
重心法
使用重心距离作为类间距离
-
输入:两个聚类H、K,其中若 I 类中有 n I n_I nI 个样本,J 类中有 n J n_J nJ 个样本
-
输出(标量):重心距离
-
计算公式:
D H K = n I n I + n J D H I 2 + n J n I + n J D H J 2 − n I n J ( n I + n J ) 2 D I J 2 D_{HK}=\sqrt{\frac{n_I}{n_I+n_J}D_{HI}^2+\frac{n_J}{n_I+n_J}D_{HJ}^2-\frac{n_In_J}{(n_I+n_J)^2}D_{IJ}^2} DHK=nI+nJnIDHI2+nI+nJnJDHJ2−(nI+nJ)2nInJDIJ2
如果类 K 是单个元素,则按照最长或最短距离法计算 -
重心法与中间距离法区别
- 用样本数作为权重系数,而不是固定系数
- 好处:大类权重大,从而避免了小类的个别样本占权重太大
-
优点:
- 可以降低少数异常点的影响
-
缺点:
- 计算复杂
-
-
类平均距离法
使用重心距离作为类间距离
-
输入:两个聚类H、K
-
输出(标量):类平均距离
-
计算公式:
D H K = 1 n H n K ∑ i ∈ H j ∈ K d i j 2 D_{HK}=\sqrt{\frac{1}{n_Hn_K}\sum_{i\in H\ j\in K}d_{ij}^2} DHK=nHnK1i∈H j∈K∑dij2
d i j 2 d_{ij}^2 dij2 :H类任一样本 X i X_i Xi 和 K 类任一样本 X j X_j Xj 之间的欧氏距离平方n H n_H nH :H 类的样本数量;
n K n_K nK :K 类的样本数量
-
简化计算:若 K 类由 I 类和 J 类合并产生,则递推式为
D H K = n I n I + n J D H I 2 + n J n I + n J D H J 2 D_{HK}=\sqrt{\frac{n_I}{n_I+n_J}D_{HI}^2+\frac{n_J}{n_I+n_J}D_{HJ}^2} DHK=nI+nJnIDHI2+nI+nJnJDHJ2
-
-
距离计算公式汇总
公式 优点 缺点 最短距离法 D H K = m i n { D ( X H , X K ) } X H ∈ H , X K ∈ K D_{HK}=min\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K DHK=min{D(XH,XK)} XH∈H,XK∈K 计算简单 对异常点敏感 最长距离法 D H K = m a x { D ( X H , X K ) } X H ∈ H , X K ∈ K D_{HK}=max\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K DHK=max{D(XH,XK)} XH∈H,XK∈K 计算简单 对异常点敏感 中间距离法 D H K = D H I 2 / 2 + D H J 2 / 2 − D I J 2 / 4 D_{HK}=\sqrt{D_{HI}^2/2+D_{HJ}^2/2-D_{IJ}^2/4} DHK=DHI2/2+DHJ2/2−DIJ2/4 能降低异常点的影响 计算复杂 重心法 D H K = n I n I + n J D H I 2 + n J n I + n J D H J 2 − n I n J ( n I + n J ) 2 D I J 2 D_{HK}=\sqrt{\frac{n_I}{n_I+n_J}D_{HI}^2+\frac{n_J}{n_I+n_J}D_{HJ}^2-\frac{n_In_J}{(n_I+n_J)^2}D_{IJ}^2} DHK=nI+nJnIDHI2+nI+nJnJDHJ2−(nI+nJ)2nInJDIJ2 能降低异常点的影响 计算复杂 类平均距离法 D H K = 1 n H n K ∑ i ∈ H j ∈ K d i j 2 D_{HK}=\sqrt{\frac{1}{n_Hn_K}\sum_{i\in H\ j\in K}d_{ij}^2} DHK=nHnK1∑i∈H j∈Kdij2 能降低异常点的影响 计算复杂
-
2.5 动态聚类法
-
基本思路:
-
主要算法:
- K-均值算法(或C-均值算法)
- 迭代自组织的数据分析算法(ISODATA)
2.5.1 K-均值算法
-
条件及约定:
- 设待分类的模式特征矢量集为 { x 1 , x 2 , … , x N } \{x_1,x_2,\dots,x_N\} {x1,x2,…,xN}
- 类的数目 K 是事先取定的
-
基本思想:
- 首先任意选取 K 个聚类中心,按最小距离原则将各模式分配到 K 类的某一类
- 动态调整聚类中心和各模式的类别,最终使准则函数取极小值
-
准则函数:聚类集中每一样本点到该类中心的距离平方和
-
准则函数数学公式:
-
单个聚类集准则函数:
对于第 j 个聚类集,准则函数定义为
J i = ∑ i = 1 N j ∣ ∣ X i − Z j ∣ ∣ 2 , X i ∈ S j S j : 第 j 个 聚 类 集 ( 域 ) , 聚 类 中 心 为 Z j N j : 第 j 个 聚 类 集 S j 中 所 包 含 的 样 本 个 数 J_i=\sum_{i=1}^{N_j}||X_i-Z_j||^2,X_i\in S_j\\ S_j:第j个聚类集(域),聚类中心为Z_j\\ N_j:第j个聚类集S_j中所包含的样本个数 Ji=i=1∑Nj∣∣Xi−Zj∣∣2,Xi∈SjSj:第j个聚类集(域),聚类中心为ZjNj:第j个聚类集Sj中所包含的样本个数 -
总体准则函数:
对所有 K 个模式类有
J = ∑ j = 1 K ∑ i = 1 N j ∣ ∣ X i − Z j ∣ ∣ 2 , X i ∈ S j J=\sum_{j=1}^{K}\sum_{i=1}^{N_j}||X_i-Z_j||^2,X_i\in S_j J=j=1∑Ki=1∑Nj∣∣Xi−Zj∣∣2,Xi∈Sj
-
-
聚类准则:聚类中心的选择应使准则函数 J 极小,即使 J j J_j Jj 的值极小
对于某一个聚类 j ,应有 ∂ J j ∂ Z j = 0 \frac{\partial J_j}{\partial Z_j}=0 ∂Zj∂Jj=0
即 ∂ ∂ Z j ∑ i = 1 N j ∣ ∣ X i − Z j ∣ ∣ 2 = ∂ ∂ Z j ∑ i = 1 N j ( X i − Z j ) T ( X i − Z j ) = 0 \frac{\partial}{\partial Z_j}\sum_{i=1}^{N_j}||X_i-Z_j||^2=\frac{\partial}{\partial Z_j}\sum_{i=1}^{N_j}(X_i-Z_j)^T(X_i-Z_j)=0 ∂Zj∂∑i=1Nj∣∣Xi−Zj∣∣2=∂Zj∂∑i=1Nj(Xi−Zj)T(Xi−Zj)=0
可解得 Z j = 1 N j ∑ i = 1 N j X i , X i ∈ S j Z_j=\frac{1}{N_j}\sum_{i=1}^{N_j}X_i,X_i\in S_j Zj=Nj1∑i=1NjXi,Xi∈Sj
上式表明, S j S_j Sj 类的聚类中心应选为该类样本的均值
-
算法描述:
-
步骤1:确定初始聚类中心
任选 K 个模式特征矢量作为初始聚类中心:
z 1 ( 1 ) , z 2 ( 1 ) , … , z k ( 1 ) z_1(1),z_2(1),\dots,z_k(1) z1(1),z2(1),…,zk(1)。其中括号内的序号表示迭代次数
-
步骤2:根据聚类中心分类
将待分类的样本集按最小距离原则分划给 K 类中的某一类:
如果 D j ( k ) = m i n { ∣ ∣ x − z i ( k ) ∣ ∣ } ( i = 1 , 2 , … , K ) D_j(k)=min\{||x-z_i(k)||\} \ \ (i=1,2,\dots,K) Dj(k)=min{∣∣x−zi(k)∣∣} (i=1,2,…,K),则 x ∈ S j ( k ) x\in S_j(k) x∈Sj(k)
-
步骤3:确定新的聚类中心
以各类的均值向量为新的聚类中心 z j ( k + 1 ) z_j(k+1) zj(k+1),即:
z j ( k + 1 ) = 1 N j ∑ x ∈ S j ( k ) x , j = 1 , 2 , … , K z_j(k+1)=\frac{1}{N_j}\sum_{x\in S_j(k)}x,\ \ \ j=1,2,\dots,K zj(k+1)=Nj1x∈Sj(k)∑x, j=1,2,…,K -
步骤4:结束条件
如果 z j ( k + 1 ) = z j ( k ) ( j = 1 , 2 , … , K ) z_j(k+1)=z_j(k)(j=1,2,\dots,K) zj(k+1)=zj(k)(j=1,2,…,K),则结束;否则,k=k+1,转(2)
-
-
优点:
- 算法简单高效
-
缺点:
- 结果受初始聚类中心位置影响
- 结果受聚类中心个数影响
- 结果受模式样本几何性质影响
- 结果受样本顺序影响
-
解决办法:
- 试探不同的 K 值
- 选择不同的初始聚类中心
-
如何试探 K 值?
根据聚类准则函数特点(下图)
-
准则函数特点:
- 准则函数 J 随 K 值增大而减小
- 准则函数到达合理 K 值前会急剧下降
- 准则函数到达合理 K 值后会平缓下降
-
试探 K 值的方法:
逐步增加 K 值试探
-
如何避免初始聚类中心数的影响?只有笨办法:多试试
- 多次运行 K 均值算法,例如50~1000次,每次随机选取不同的初始聚类中心
- 聚类结束后计算准则函数值
- 选取准则函数值最小的聚类结果为最后的结果
- 该方法一般适用于聚类数目小于10的情况
2.5.2 ISODATA
-
K-均值算法的问题
- 类别数 K 不能改变
- 结果受初始聚类中心影响
-
ISODATA 算法的改进
-
动态改变类别数目
- 通过类别的合并与分裂来实现
-
合并
- 如下两种情况合并:
- 类内样本个数太少
- 两聚类中心之间距离太小
- 如下两种情况合并:
-
分裂
-
如下情况分裂:
某一类的类内方差过大时,宜分裂成两类,以维持合理的类内方差
-
-
-
基本步骤和思路
-
初始化
选择初始控制参数和聚类中心
-
分类
按照最近邻(即最短距离)规则进行分类
-
分裂与合并
根据参数分裂和合并,并获得新聚类中心
-
结果评估
评估结果是否符合要求。不符则返回(2)
-
-
初始化(第一步)
设置控制参数、聚类数和初始聚类中心(见下表)
参数 描述 K K K 希望的聚类中心数目 θ N \theta_N θN 每个聚类中最少的样本数。用于控制合并 θ C \theta_C θC 两聚类中心间的最短距离。用于控制合并 θ S \theta_S θS 标准差阈值。所有分量中的最大值应小于 θ s \theta_s θs,否则分裂 L L L 每次迭代允许合并的最大聚类对数 N c N_c Nc 初始聚类数(可不等于 K ) z i , i = 1 , 2 , … , N c z_i,i=1,2,\dots,N_c zi,i=1,2,…,Nc 预设的初始聚类中心(也可在样本中选择) I I I 允许迭代的最大次数 -
分类(第二步)
按最小距离聚类
若 D j = m i n ( ∣ ∣ x − z i ∣ ∣ ) , i = 1 , 2 , … , N c , 则 x ∈ S j 若D_j=min(||x-z_i||),i=1,2,\dots,N_c,\\ 则x\in S_j 若Dj=min(∣∣x−zi∣∣),i=1,2,…,Nc,则x∈Sj -
初步合并(第三步)
若有任何一个类 S j S_j Sj ,其样本数 N j < θ N N_j<\theta_N Nj<θN,则舍去 S j S_j Sj,令 N c = N c − 1 N_c=N_c-1 Nc=Nc−1,将原样本分配至其它类
-
合并/分裂预处理(第四、五、六步)
-
修正各聚类中心值(第四步)
Z j = 1 N j ∑ X ∈ S j X , j = 1 , 2 , … , N c Z_j=\frac{1}{N_j}\sum_{X\in S_j}X,j=1,2,\dots,N_c Zj=Nj1X∈Sj∑X,j=1,2,…,Nc -
计算类内平均距离(第五步)
D ~ j = 1 N j ∑ x ∈ S j ∣ ∣ x − z j ∣ ∣ , j = 1 , 2 , … , N c \widetilde{D}_j=\frac{1}{N_j}\sum_{x\in S_j}||x-z_j||,j=1,2,\dots,N_c D j=Nj1x∈Sj∑∣∣x−zj∣∣,j=1,2,…,Nc -
计算全体样本平均距离(第六步)
D ~ = 1 N ∑ j = 1 N c N j D ~ j \widetilde{D}=\frac{1}{N}\sum_{j=1}^{N_c}N_j\widetilde{D}_j D =N1j=1∑NcNjD j
-
-
合并/分裂判决(第七步)
- 如这是最后一次迭代(取决于 I ),则不再合并分裂,转第十一步,善后处理;并设置 θ c = 0 \theta_c=0 θc=0 ,防止合并发生
- 如果 N c ≤ K / 2 N_c≤K/2 Nc≤K/2 (类数远小于期望值),则转向第八步,分裂;
- 如果此时迭代运算次数是偶数次,或 N c ≥ 2 K N_c≥2K Nc≥2K ,则转至第十一步,合并;否则转至第八步,分裂
- 基本判断步骤:
- 先判断是否要结束
- 再根据期望中心数判断分裂或合并
-
分裂(第八、九、十步)
-
计算类内标准差向量(第八步)。对每个聚类 j ,求其标准差向量
σ j = ( σ j 1 σ j 2 ⋯ σ j n ) t σ j i = 1 N j ∑ y k ∈ S j ( y k i − z j i ) 2 \sigma_j=\begin{pmatrix} {\sigma_{j1}}&{\sigma_{j2}}&{\cdots}&{\sigma_{jn}} \end{pmatrix}^t\\ \sigma_{ji}=\sqrt{\frac{1}{N_j}\sum_{y_k\in S_j}(y_{ki}-z_{ji})^2} σj=(σj1σj2⋯σjn)tσji=Nj1yk∈Sj∑(yki−zji)2
其中,σ j i \sigma_{ji} σji 是第 j 个聚类第 i 个分量的标准差,
y k i y_{ki} yki 是第 j 类中第 k 个样本的第 i 分量,
z j i z_{ji} zji 是均值向量 z j z_j zj 的第 i 个分量,
n 是样本特征维数,
j = 1 , 2 , … , N c j=1,2,\dots,N_c j=1,2,…,Nc 是聚类数,
i = 1 , 2 , … , n i=1,2,\dots,n i=1,2,…,n 是维数
-
计算每个类的标准差向量最大分量(第九步)
σ j m a x , j = 1 , 2 , … , c \sigma_{j\ max},j=1,2,\dots,c σj max,j=1,2,…,c -
执行分裂(第十步)
若任一个 σ j m a x , j = 1 , 2 , … , c \sigma_{j\ max},j=1,2,\dots,c σj max,j=1,2,…,c 有 σ j m a x > θ s \sigma_{j\ max}>\theta_s σj max>θs ,并且有
(a) D ~ j > D ~ \widetilde{D}_j>\widetilde{D} D j>D 且 N j > 2 θ N + 1 N_j>2\theta_N+1 Nj>2θN+1
或有
(b) N c ≤ K / 2 N_c≤K/2 Nc≤K/2
则把 S j S_j Sj 分裂成两个聚类,其中心相应为 z j + z_j^+ zj+ 与 z j − z_j^- zj−,把原来的 S j S_j Sj 取消,且令 N c = N c + 1 N_c=N_c+1 Nc=Nc+1。
转第二步进行下一轮。
其中 z j + z_j^+ zj+ 与 z j − z_j^- zj− 计算方法如下:
给定一 k 值,0<k<1,令 r j = k σ j m a x r_j=k\sigma_{j\ max} rj=kσj max; z j + = z j + r j z_j^+=z_j+r_j zj+=zj+rj, z j − = z j − r j z_j^-=z_j-r_j zj−=zj−rj;
其中 k 值应使 S j S_j Sj 中的样本到 z j + z_j^+ zj+ 与 z j − z_j^- zj− 的距离不同,但又应使 S j S_j Sj 中的样本仍然在分裂后的新样本类中
-
-
合并(第十一、十二、十三步)
-
计算类间聚类中心距离(第十一步)
i 类与 j 类的类间距离为
D i j = ∣ ∣ z i − z j ∣ ∣ , i = 1 , 2 , … , N c − 1 , j = i + 1 , i + 2 , … , N c D_{ij}=||z_i-z_j||,i=1,2,\dots,N_c-1,j=i+1,i+2,\dots,N_c Dij=∣∣zi−zj∣∣,i=1,2,…,Nc−1,j=i+1,i+2,…,Nc -
列出类间距离过近者(第十二步)
比较 D i j D_{ij} Dij 与 θ c \theta_c θc 并将小于 θ c \theta_c θc 的按上升次序排列如下(该队列最大个数是控制合并对数的参数L)
D i 1 j 1 < D i 2 j 2 < ⋯ < D i l j l , l ≤ L D_{i1j1}<D_{i2j2}<\dots<D_{iljl},l≤L Di1j1<Di2j2<⋯<Diljl,l≤L -
执行合并(第十三步)
从类间距离最小的两类开始执行合并过程,此时需将 z k l z_{kl} zkl 与 z j l z_{jl} zjl 合并,同时执行 N c = N c − 1 N_c=N_c-1 Nc=Nc−1 。
新中心的计算公式如下:
z l = 1 N i l + N j l [ N i l z i l + N j l z j l ] z_l=\frac{1}{N_{il}+N_{jl}}[N_{il}z_{il}+N_{jl}z_{jl}] zl=Nil+Njl1[Nilzil+Njlzjl]
-
-
结束(第十四步)
- 如是最后一次迭代则终止
- 否则可根据需要转第一步或第二步(转第一步是为了更改控制数),同时迭代计数加 1
-
算法流程图
-
优点:
- 聚类中心个数可调
- 初始聚类中心位置对结果影响较小
-
缺点:
- 结果受模式样本几何性质影响
- 算法复杂
-
ISODATA 与 K-均值算法比较
K-均值算法 ISODATA算法 聚类中心通过样本均值迭代运算决定 是 是 聚类中心数可变 否 是 结果受初始聚类中心影响 是 否 算法复杂度 简单 复杂 结果受模式样本几何性质影响 是 是
2.X 补充聚类算法
-
基于密度的聚类算法
-
基本思想:
- 区域内点的密度大于某个阈值时,把它加到邻近的聚类中
- 在一个给定半径 ε \varepsilon ε 的邻域中,至少要包含最小数目个对象
-
优点:
- 可发现任意形状的聚类
- 对噪声不敏感
-
代表算法:
DBSCAN、OPTICS、DENCLUE
-
-
DBSCAN
-
密度的定义:
数据集中特定点的密度通过该点Eps半径之内的点计数(包括本身)来估计
-
点的类型:
-
稠密区域内部的点(核心点):
在半径Eps内含有超过MinPts数目的点,则该点为核心点
-
稠密区域边缘上的点(边界点):
在半径Eps内点的数量小于MinPts,但是在核心点的邻居
-
稀疏区域中的点(噪声或背景点):
任何不是核心点或边界点的点
-
-
各种点示例:
- 核心点:Core point
- 边界点:Border point
- 噪声点:Noise point
-
DBSCAN算法概念与名词解释
-
Eps邻域:给定对象半径Eps内的邻域称为该对象的Eps邻域,我们用 N E p s ( p ) N_{Eps}(p) NEps(p) 表示点 p 的Eps半径内的点的集合,即:
N E p s ( p ) = { q ∣ q 在 数 据 集 D 中 , d i s t a n c e ( p , q ) ≤ E p s } N_{Eps}(p)=\{q|q在数据集D中,distance(p,q)≤Eps\} NEps(p)={q∣q在数据集D中,distance(p,q)≤Eps} -
核心对象:如果对象的Eps邻域至少包含最小数目MinPts的对象,则称该对象为核心对象
-
边界点:边界点不是核心点,但落在某个核心点的邻域内
-
噪音点:既不是核心点,也不是边界点的任何点
-
直接密度可达:给定一个对象集合D,如果 p 在 q 的Eps邻域内,而 q 是一个核心对象,则称对象 p 从对象 q 出发时是直接密度可达的(directly density-reachable)
-
密度可达:如果存在一个对象链 p 1 , p 2 , … , p n , p 1 = q , p n = p p_1,p_2,\dots,p_n,p_1=q,p_n=p p1,p2,…,pn,p1=q,pn=p ,对于 p i ∈ D ( 1 ≤ i ≤ n ) p_i\in D(1≤i≤n) pi∈D(1≤i≤n) , p i + 1 p_{i+1} pi+1 是从 p i p_i pi 关于Eps和MinPts直接密度可达的,则对象 p 是从对象 q 关于Eps和MinPts密度可达的(density-reachable)。q 是核心对象。
-
密度相连:如果存在对象 O ∈ D O\in D O∈D ,使对象 p 和 q 都是从 O 关于Eps和MinPts密度可达的,那么对象 p 到 q 是关于Eps和MinPts密度相连的(density-connected)
-
-
DBSCAN算法原理
- DBSCAN通过检查数据集中每点的Eps邻域来搜索簇,如果点 p 的Eps邻域包含的点多于MinPts个,则创建一个以 p 为核心对象的簇
- 然后,DBSCAN迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并
- 当没有新的点添加到任何簇时,该过程结束
-
DBSCAN算法描述
- 输入:包含 n 个对象的数据库,半径 ε \varepsilon ε ,最少数目MinPts
- 输出:所有生成的簇,达到密度要求
- REPEAT
- 从数据库中抽取一个未处理过的点
- IF抽出的点是核心点 THEN找出所有从该点密度可达的对象,形成一个簇
- ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一点
- UNTIL 所有点都被处理
-
DBSCAN允许效果
- 对噪音不敏感
- 可以处理不同形状和大小的数据
-
优点
- 基于密度定义,相对抗噪音,能处理任意形状和大小的簇
-
缺点
- 当簇的密度变化太大时,会有麻烦
- 对于高维问题,密度定义是个比较麻烦的问题
- 参数的确定需要尝试或者先验知识
-
2.6 聚类结果的评价
- 迅速评价聚类结果,在上述迭代运算中是很重要的,特别是具有高维特征向量的模式,不能直接看清聚类效果,因此,可考虑用以下几个指标来评价聚类效果:
-
聚类中心之间的距离
- 距离值大,通常可考虑分为不同类
-
聚类域中的样本数目
- 样本数目少且聚类中心距离远,可考虑是否为噪声
-
聚类域内样本的距离方差
-
方差过大的样本可考虑是否属于这一类
p 1 , p 2 , … , p n , p 1 = q , p n = p p_1,p_2,\dots,p_n,p_1=q,p_n=p p1,p2,…,pn,p1=q,pn=p ,对于 p i ∈ D ( 1 ≤ i ≤ n ) p_i\in D(1≤i≤n) pi∈D(1≤i≤n) , p i + 1 p_{i+1} pi+1 是从 p i p_i pi 关于Eps和MinPts直接密度可达的,则对象 p 是从对象 q 关于Eps和MinPts密度可达的(density-reachable)。q 是核心对象。 -
密度相连:如果存在对象 O ∈ D O\in D O∈D ,使对象 p 和 q 都是从 O 关于Eps和MinPts密度可达的,那么对象 p 到 q 是关于Eps和MinPts密度相连的(density-connected)
-
-
DBSCAN算法原理
- DBSCAN通过检查数据集中每点的Eps邻域来搜索簇,如果点 p 的Eps邻域包含的点多于MinPts个,则创建一个以 p 为核心对象的簇
- 然后,DBSCAN迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并
- 当没有新的点添加到任何簇时,该过程结束
-
DBSCAN算法描述
- 输入:包含 n 个对象的数据库,半径 ε \varepsilon ε ,最少数目MinPts
- 输出:所有生成的簇,达到密度要求
- REPEAT
- 从数据库中抽取一个未处理过的点
- IF抽出的点是核心点 THEN找出所有从该点密度可达的对象,形成一个簇
- ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一点
- UNTIL 所有点都被处理
-
DBSCAN允许效果
- 对噪音不敏感
- 可以处理不同形状和大小的数据
-
优点
- 基于密度定义,相对抗噪音,能处理任意形状和大小的簇
-
缺点
- 当簇的密度变化太大时,会有麻烦
- 对于高维问题,密度定义是个比较麻烦的问题
- 参数的确定需要尝试或者先验知识
-
2.6 聚类结果的评价
- 迅速评价聚类结果,在上述迭代运算中是很重要的,特别是具有高维特征向量的模式,不能直接看清聚类效果,因此,可考虑用以下几个指标来评价聚类效果:
- 聚类中心之间的距离
- 距离值大,通常可考虑分为不同类
- 聚类域中的样本数目
- 样本数目少且聚类中心距离远,可考虑是否为噪声
- 聚类域内样本的距离方差
- 方差过大的样本可考虑是否属于这一类
- 聚类中心之间的距离
- 模式聚类目前还没有一种通用的放之四海而皆准的准则,往往需要根据实际应用来选择合适的方法