这是我学习数学建模的学习笔记,有来自教材的摘抄也有自己的一些理解,主要是为了方便学习而用;参考教材:《数学建模算法与应用(第二版)》;
Q型聚类分析(样本聚类)
样本的相似性度量
引言:要用数量化的方法对事物进行分类,就必须用数量化的方法描述事物之间的相似程度。一个事物常常需要用多个变量来刻画;若一个事物Z需要用p个变量来刻画,有Z∈Rp。对Z进行一次观测就会得到一组静态(quiet)的数据(样本点),很自然的可以想到利用空间中的距离来度量样本点之间的相似程度;
记Ω是样本点集,距离d( · , · )是Ω×Ω→R+的一个函数,满足条件:
①正定性:d( x , y )≥0,x,y∈Ω
②对称性:d( x , y )=d( y , x ),x,y∈Ω
③三角不等式:d( x , y )≤d( x , z )+d( y , z ),x,y,z∈Ω
④d( x , y )=0 当且仅当 x=y
假设事物Z有两个样本点x,y,则有样本点之间的距离(d)的定义;
- 闵氏(Minkowski)距离:
d q ( x → , y → ) = [ ∑ k = 1 p ∣ x k − y k ∣ q ] 1 q , q > 0 , d_{q}(\overset{\rightarrow}x,\overset{\rightarrow}y) = [\sum_{k=1}^p|x_{k}-y_{k}|_{}^{q}]_{}^{\frac {1}{q}},q>0, dq(x→,y→)=[k=1∑p∣xk−yk∣q]q1,q>0,
- 绝对值距离
d 1 ( x → , y → ) = ∑ k = 1 p ∣ x k − y k ∣ , ( q = 1 ) d_{1}(\overset{\rightarrow}x,\overset{\rightarrow}y) = \sum_{k=1}^p|x_{k}-y_{k}|,(q=1) d1(x→,y→)=k=1∑p∣xk−yk∣,(q=1) - 欧几里得(Euclid)距离
d 2 ( x → , y → ) = [ ∑ k = 1 p ∣ x k − y k ∣ 2 ] 1 2 , ( q = 2 ) d_{2}(\overset{\rightarrow}x,\overset{\rightarrow}y) = [\sum_{k=1}^p|x_{k}-y_{k}|_{}^{2}]_{}^{\frac {1}{2}},(q=2) d2(x→,y→)=[k=1∑p∣xk−yk∣2]21,(q=2) - 切比雪夫(Chebyshev)距离
d ∞ ( x → , y → ) = m 1 ≤ k ≤ p a x ∣ x k − y k ∣ , ( q → + ∞ ) d_{\infty}(\overset{\rightarrow}x,\overset{\rightarrow}y) = \underset{1\leq k \leq p}max|x_{k}-y_{k}|,(q \rightarrow +\infty) d∞(x→,y→)=1≤k≤pmax∣xk−yk∣,(q→+∞)
式中:x,y为来自p维总体Z的样本观测值;
缺点:
①数据要采用相同的量纲。(标准化处理)
②避免变量的多重相关性。 - 多重相关性
- 马氏(Mahalanobis)距离:
d 1 ( x → , y → ) = ( x → , y → ) T Σ − 1 ( x → , y → ) d_{1}(\overset{\rightarrow}x,\overset{\rightarrow}y) = \sqrt{(\overset{\rightarrow}x,\overset{\rightarrow}y)_{}^{T}\Sigma_{}^{-1}(\overset{\rightarrow}x,\overset{\rightarrow}y) } d1(x→,y→)=(x→,y→)TΣ−1(x→,y→)
式中:x,y为来自p维总体Z的样本观测值;Σ为Z的协方差矩阵,实际中Σ往往未知的,常需要用样本协方差来估计。
样本聚类
如果有两个样本类G1和G2,可以用下面的一系列方法度量样本类之间的距离(D);
- 最短距离法
D
(
G
1
,
G
2
)
=
min
x
i
∈
G
1
,
y
i
∈
G
2
{
d
(
x
→
i
,
y
→
i
)
}
D(G1,G2)= \min_{xi\in G1,yi\in G2}\{d(\overset{\rightarrow}x_{i},\overset{\rightarrow}y_{i})\}
D(G1,G2)=xi∈G1,yi∈G2min{d(x→i,y→i)}
直观意义:两个类中最近两点的距离; - 最长距离法
D
(
G
1
,
G
2
)
=
max
x
i
∈
G
1
,
y
i
∈
G
2
{
d
(
x
→
i
,
y
→
i
)
}
D(G1,G2)= \max_{xi\in G1, yi\in G2}\{d(\overset{\rightarrow}x_{i},\overset{\rightarrow}y_{i})\}
D(G1,G2)=xi∈G1,yi∈G2max{d(x→i,y→i)}
直观意义:两个类中最长两点的距离; - 重心法
D
(
G
1
,
G
2
)
=
d
(
x
→
—
,
y
→
—
)
,
(
x
→
—
,
y
→
—
分
别
为
G
1
,
G
2
的
均
值
)
D(G1,G2)=d(\overset{\overset{—}{\rightarrow}}x,\overset{\overset{—}{\rightarrow}}y),(\overset{\overset{—}{\rightarrow}}x,\overset{\overset{—}{\rightarrow}}y分别为G1,G2的均值)
D(G1,G2)=d(x→—,y→—),(x→—,y→—分别为G1,G2的均值)
直观意义:两个类重心(均值)的距离; - 类平均法
D ( G 1 , G 2 ) = 1 n 1 n 2 ∑ x i ∈ G 1 ∑ y i ∈ G 2 d ( x → i , y → i ) D(G1,G2)=\frac{1}{n_{1}n_{2}}\sum_{xi\in G1} \sum_{yi\in G2}d(\overset{\rightarrow}x_{i},\overset{\rightarrow}y_{i}) D(G1,G2)=n1n21xi∈G1∑yi∈G2∑d(x→i,y→i)
直观意义:两个类之间样本点距离的平均,n1,n2分别为G1,G2中的样本点个数; - 离差平方和(ward)法 G 1 : D 1 = ∑ x i ∈ G 1 ( x → i − x → — 1 ) T ( x → i − x → — 1 ) , G 2 : D 2 = ∑ x j ∈ G 2 ( x → j − x → — 2 ) T ( x → j − x → — 2 ) , G 1 ∪ G 2 : D 12 = ∑ x k ∈ G 1 ∪ G 2 ( x → k − x → — ) T ( x → k − x → — ) D = D 12 − D 1 − D 2 ( x → — 1 , x → — 2 , x → — 分 别 为 G 1 , G 2 , G 1 ∪ G 2 的 均 值 ) G_{1}:D_{1}=\sum_{x_{i}\in G_{1}}(\overset{\rightarrow}x_{i}-\overset{\overset{—}{\rightarrow}}x_{1})_{}^{T}(\overset{\rightarrow}x_{i}-\overset{\overset{—}{\rightarrow}}x_{1}), G_{2}:D_{2}=\sum_{x_{j}\in G_{2}}(\overset{\rightarrow}x_{j}-\overset{\overset{—}{\rightarrow}}x_{2})_{}^{T}(\overset{\rightarrow}x_{j}-\overset{\overset{—}{\rightarrow}}x_{2}),\\ G_{1}\cup G_{2}:D_{12}=\sum_{x_{k}\in G_{1}\cup G_{2}}(\overset{\rightarrow}x_{k}-\overset{\overset{—}{\rightarrow}}x)_{}^{T}(\overset{\rightarrow}x_{k}-\overset{\overset{—}{\rightarrow}}x)\\D=D_{12}-D_{1}-D_{2}\\ {(\overset{\overset{—}{\rightarrow}}x_{1},\overset{\overset{—}{\rightarrow}}x_{2},\overset{\overset{—}{\rightarrow}}x分别为G_{1},G_{2},G_{1}\cup G_{2}的均值)} G1:D1=xi∈G1∑(x→i−x→—1)T(x→i−x→—1),G2:D2=xj∈G2∑(x→j−x→—2)T(x→j−x→—2),G1∪G2:D12=xk∈G1∪G2∑(x→k−x→—)T(x→k−x→—)D=D12−D1−D2(x→—1,x→—2,x→—分别为G1,G2,G1∪G2的均值)
直观意义:D1,D2小,则它们能很好的各自聚成一类;D12很大,则这两类能充分分离,这时必然有D很大;则可认为G1和G2之间的距离很大;
- matlab代码实现
R型聚类分析(变量聚类)
变量的相似性度量
- 相关系数
记变量xj的取值(x1j,x2j,···,xnj)T∈(j=1,2,···,m)。则可以用变量xj与xk的样本相关系数作为它们的相似性度量,即:
r j k = ∑ i = 1 n ( x i j − x j — ) ( x i k − x k — ) [ ∑ i = 1 n ( x i j − x j — ) 2 ∑ i = 1 n ( x i k − x k — ) 2 ] 1 2 = ∑ i = 1 n x ~ i j x ~ i k n − 1 r_{jk}=\frac{\sum\limits_{i=1}^{n}(x_{ij}-\overset{—}{x_{j}})(x_{ik}-\overset{—}{x_{k}})}{[\sum\limits_{i=1}^{n}(x_{ij}-\overset{—}{x_{j}})_{}^{2}\sum\limits_{i=1}^{n}(x_{ik}-\overset{—}{x_{k}})_{}^{2}]_{}^{\frac{1}{2}}}=\frac{\sum\limits_{i=1}^{n}\overset{~}x_{ij}\overset{~}x_{ik}}{n-1} rjk=[i=1∑n(xij−xj—)2i=1∑n(xik−xk—)2]21i=1∑n(xij−xj—)(xik−xk—)=n−1i=1∑nx~ijx~ik
在对变量进行聚类分析时,利用相关系数矩阵是最多的。 - 夹角余弦
也可以直接利用两变量xj与xk的夹角余弦rjk来定义它们的相似性度量,即:
r j k = ∑ i = 1 n x i j x i k ( ∑ i = 1 n x i j 2 ∑ i = 1 n x i k 2 ) 1 2 r_{jk}=\frac{\sum\limits_{i=1}^{n}x_{ij}x_{ik}}{(\sum\limits_{i=1}^{n}x_{ij}^{2}\sum\limits_{i=1}^{n}x_{ik}^{2})_{}^{\frac{1}{2}}} rjk=(i=1∑nxij2i=1∑nxik2)21i=1∑nxijxik
各种定义的相似度量均应具有以下两个性质:
①|rjk|≤1,对于一切j,k
②rjk=rkj,对于一切j,k
|rjk|越接近1,xj与xk相关性越强;反之,|rjk|越接近0,xj与xk相关越弱;
变量聚类法
类似于样本集合聚类分析利用距离来度量相似程度。可以用下面的一系列方法度量变量之间的距离(R);
- 最长距离法
定义距离两变量的距离为:
R ( G 1 , G 2 ) = m a x { d j k } x j ∈ G 1 , x k ∈ G 2 d j k = 1 − ∣ r j k ∣ 或 d j k 2 = 1 − r j k 2 R(G_{1},G_{2})=\underset{x_{j}\in G_{1},x_{k}\in G_{2}}{max\{d_{jk}\}}\\ d_{jk}=1-|r_{jk}|或d_{jk}^{2}=1-r_{jk}^{2} R(G1,G2)=xj∈G1,xk∈G2max{djk}djk=1−∣rjk∣或djk2=1−rjk2 - 最短距离法
定义距离两变量的距离为:
R ( G 1 , G 2 ) = m i n { d j k } x j ∈ G 1 , x k ∈ G 2 d j k = 1 − ∣ r j k ∣ 或 d j k 2 = 1 − r j k 2 R(G_{1},G_{2})=\underset{x_{j}\in G_{1},x_{k}\in G_{2}}{min\{d_{jk}\}}\\ d_{jk}=1-|r_{jk}|或d_{jk}^{2}=1-r_{jk}^{2} R(G1,G2)=xj∈G1,xk∈G2min{djk}djk=1−∣rjk∣或djk2=1−rjk2
- matlab代码实现
聚类图
不管是样本聚类还是变量聚类都是通过选定距离算法来度量样本(变量)之间的相似程度;生成聚类图的步骤如下:
①选定距离算法来度量样本(变量)之间的相似程度;
②首先构造集合U1包含n个基本的子集(类),每个子集(类)只包含一个样本(变量),每一个子集(类)的平台高度为0;
③合并距离最近的两子集(类)为一个新子集(类),并且以这两子集(类)之间的距离值作为新子集(类)的平台高度;生成U2包含新的n-1个基本的子集(类);
④反复进行③最终Un-1只有1个基本子集(类)时,聚类图生成;
⑤画出聚类图;
显然采用不同的距离算法有可能得到不同的聚类图;
生成聚类图的过程,每一步融合两个距离最近的子集(类),得到一个新的子集(类),这其实也是以集合U1包含n个基本的子集(类)作为二叉树的初始节点,根据距离算法,生成的一颗二叉树;
假设根据距离算法,刚好按顺序融合;
步骤 | 初始集合(类)/(节点) | 融合的集合(类)/(节点) | 生成的新集合(类)/(节点) | 平台高度h |
---|---|---|---|---|
1 | x1,x2,x3…xn | x1,x2 | x12 | hi=0(i=1,2,…,n) |
2 | x12,x3…xn | x12,x3 | x123 | hi=0(i=1,2,…,n),h12=d12 |
… | … | … | … | |
n-1 | x12…(n-1) | x12…(n-1),xn | x12…n | hi=0(i=1,2,…,n),h12=d12,h123=d123,…,h12…n=d12…n |