聚类(Clustering)的基本概念
聚类属于无监督学习,在聚类前数据没有分类或分组信息。聚类是寻找数据之间内在结构,按照特定标准(如距离准则、相似性系数)把全体数据样本组织成一些相似簇;使得处于相同簇中的数据样本彼此相似性尽可能大,处于不同簇中的样本彼此差异性尽可能地大。聚类的结果在很大程度上取决于事先设定的参数(如类别,初始点等),例如:
聚类性能好坏的度量
类内相似度高,类间相似度低。度量聚类结果好坏的依据有:可测量性、处理不同类型样本的能力、发现任意形状簇的能力、输入参数所需的先验知识、处理噪声和异常值的能力、对于输入数据的顺序不敏感、基于某些限制条件的聚类 、可解释性和可用性。
需要考虑的问题:(1)样本间的相似性如何量化? (2)如何根据这些相似性指标将类似的样本分为一簇?(3)聚类完成后,对于每一簇的性质如何描述?
相似性度量
A.距离:设两个样本
x
=
(
x
1
,
x
2
,
⋯
,
x
p
)
T
;
y
=
(
y
1
,
y
2
,
⋯
,
y
p
)
T
\mathbf x=(x_1,x_2,\cdots,x_p)^T;\;\mathbf y=(y_1,y_2,\cdots,y_p)^T
x=(x1,x2,⋯,xp)T;y=(y1,y2,⋯,yp)T,有以下距离:
1.明氏距离(明考夫斯基距离,Minkowski distance):
d
(
x
,
y
)
=
(
∑
i
=
1
p
∣
x
i
−
y
i
∣
q
)
1
/
q
,
其
中
q
≥
1
\displaystyle d(\mathbf x,\mathbf y)=(\sum^p_{i=1}|x_i-y_i|^q)^{1/q},其中q\ge1
d(x,y)=(i=1∑p∣xi−yi∣q)1/q,其中q≥1。
明氏距离具有非负性、对称性和三角不等式等有两下子,可对各个变量的数据做标准化处理。特别的,当 q = 1 q=1 q=1时,称为绝对值距离或曼哈顿距离;当 q = 2 q=2 q=2时,称为欧式距离;当 q = ∞ q={\infty} q=∞时,是切比雪夫距离。
2.兰氏距离: d ( x , y ) = 1 p ∑ i = 1 p ∣ x i − y i ∣ ∣ x i + y i ∣ \displaystyle d(\mathbf x,\mathbf y)=\frac{1}{p}\sum^p_{i=1}\frac{|x_i-y_i|}{|x_i+y_i|} d(x,y)=p1i=1∑p∣xi+yi∣∣xi−yi∣,兰氏距离无量纲,适用于高偏斜或含有异常值的数据。
3.马氏距离: d ( x , y ) = ( x − y ) T ⋅ S − 1 ⋅ ( x − y ) \displaystyle d(\mathbf x,\mathbf y)=\sqrt{(\mathbf x-\mathbf y)^T\cdot S^{-1}\cdot (\mathbf x-\mathbf y)} d(x,y)=(x−y)T⋅S−1⋅(x−y),其中, S − 1 S^{-1} S−1为样本是协方差矩阵。
4.名义尺度变量的一种距离定义: d ( x , y ) = m 1 m 1 + m 2 \displaystyle d(\mathbf x,\mathbf y)=\frac{m_1}{m_1+m_2} d(x,y)=m1+m2m1,其中 m 1 m_1 m1为配合(相同)的变量数, m 2 m_2 m2为不配合(不相同)的变量数。eg, x = ( 男 , 英 语 , 统 计 , 非 教 师 , 校 外 , 学 士 ) T , y = ( 女 , 英 语 , 非 统 计 , 教 师 , 校 外 , 硕 士 ) T \mathbf x=(男,英语,统计,非教师,校外,学士)^T,\mathbf y=(女,英语,非统计,教师,校外,硕士)^T x=(男,英语,统计,非教师,校外,学士)T,y=(女,英语,非统计,教师,校外,硕士)T,则 x , y \mathbf x,\mathbf y x,y之间的距离为 2 / 3 {2/3} 2/3。
B.相似系数:相似系数(或其绝对值)越大,变量之间的相似性程度越高,衡量相似系数的有:
1.夹角余弦: R n \mathcal R^n Rn中变量 x , y \mathbf x,\mathbf y x,y之间夹角 θ \theta θ的余弦函数,即 c x y ( 1 ) = c o s θ = ∑ k = 1 p ( x k ⋅ y k ) [ ( ∑ k = 1 p x k 2 ) ⋅ ( ∑ k = 1 p y k 2 ) ] 1 2 \displaystyle c_{xy}(1)=cos\theta=\frac{\sum^p_{k=1}(x_k\cdot y_k)}{[(\sum^p_{k=1}x^2_k)\cdot(\sum^p_{k=1}y^2_k)]^{\frac{1}{2}}} cxy(1)=cosθ=[(∑k=1pxk2)⋅(∑k=1pyk2)]21∑k=1p(xk⋅yk);
2.相关系数: c x y ( 2 ) = r 2 = ∑ k = 1 p [ ( x k − x ˉ ) ⋅ ( y k − y ˉ ) ] [ ( ∑ k = 1 p ( x k − x ˉ ) 2 ) ⋅ ( ∑ k = 1 p ( y k − y ˉ ) 2 ) ] 1 2 \displaystyle c_{xy}(2)=r^2=\frac{\sum^p_{k=1}[(x_k-\bar x)\cdot (y_k-\bar y)]}{[(\sum^p_{k=1}(x_k-\bar x)^2)\cdot(\sum^p_{k=1}(y_k-\bar y)^2)]^{\frac{1}{2}}} cxy(2)=r2=[(∑k=1p(xk−xˉ)2)⋅(∑k=1p(yk−yˉ)2)]21∑k=1p[(xk−xˉ)⋅(yk−yˉ)];
距离和相似系数的相互转换: c x y = 1 1 + d x y , d x y = 2 ( 1 − c x y ) \displaystyle c_{xy}=\frac{1}{1+d_{xy}},d_{xy}=\sqrt{2(1-c_{xy})} cxy=1+dxy1,dxy=2(1−cxy)。
数据矩阵,对p维变量,n个样本,有
[
v
11
⋯
v
1
f
⋯
v
1
p
⋮
⋮
⋮
⋮
v
i
1
⋯
v
i
f
⋯
v
i
p
⋮
⋮
⋮
⋮
v
n
1
⋯
v
n
f
⋯
v
n
p
]
\left[ \begin{array}{cccc} v_{11}&\cdots& v_{1f} &\cdots & v_{1p}\\ \vdots & \vdots & \vdots & \vdots \\ v_{i1}&\cdots& v_{if} &\cdots & v_{ip}\\ \vdots & \vdots & \vdots & \vdots \\ v_{n1}&\cdots& v_{nf} &\cdots & v_{np}\\ \end{array} \right]
⎣⎢⎢⎢⎢⎢⎢⎡v11⋮vi1⋮vn1⋯⋮⋯⋮⋯v1f⋮vif⋮vnf⋯⋮⋯⋮⋯v1pvipvnp⎦⎥⎥⎥⎥⎥⎥⎤,
相似度矩阵/距离矩阵,用于存放n个样本两两之间的相似性或距离,即
[
0
d
(
1
,
2
)
⋯
⋯
d
(
1
,
n
)
d
(
2
,
1
)
0
d
(
2
,
3
)
⋮
d
(
2
,
n
)
d
(
3
,
1
)
d
(
3
,
2
)
0
⋯
d
(
3
,
n
)
⋮
⋮
⋮
⋮
⋮
d
(
n
,
1
)
d
(
n
,
2
)
⋯
⋯
0
]
\left[ \begin{array}{cccc} 0& d(1,2)&\cdots&\cdots & d(1,n)\\ d(2,1) &0 &d(2,3) & \vdots & d(2,n)\\ d(3,1)&d(3,2)&0 &\cdots & d(3,n)\\ \vdots & \vdots & \vdots & \vdots & \vdots\\ d(n,1)&d(n,2)&\cdots &\cdots & 0\\ \end{array} \right]
⎣⎢⎢⎢⎢⎢⎢⎡0d(2,1)d(3,1)⋮d(n,1)d(1,2)0d(3,2)⋮d(n,2)⋯d(2,3)0⋮⋯⋯⋮⋯⋮⋯d(1,n)d(2,n)d(3,n)⋮0⎦⎥⎥⎥⎥⎥⎥⎤,其中,
d
(
i
,
j
)
=
d
(
j
,
i
)
d(i,j)=d(j,i)
d(i,j)=d(j,i),即相似度矩阵是一个对角线元素为0的对称阵。
聚类的种类:
1.基于距离阈值的聚类
对待分类模式样本集采取以最大距离原则选取新的聚类中心,以最小距离原则进行模式归类,与基于划分的聚类有相似之处。
2.基于层次的聚类
包含两种:
(1)合并的层次聚类:是一种自底向上的层次聚类算法,从最底层开始,每次通过合并最相似的个体来形成上一层次中的聚类;
(2)分裂的层次聚类:是一种自顶向下的层次聚类算法,从一个包含全部数据点的聚类开始,然后把根节点分裂为一些子聚类,每个子聚类再递归地继续往下分裂。特点是处理速度很快。主要算法有BIRCH、CURE、CHAMELEON等算法。
3.基于划分的聚类
先确定好聚类的类别数,然后挑选几个点(=类别数)作为初始中心点,在给数据点做迭代重置。但计算量大,适合中小规模的球状簇聚类。主要有k-means、k-medoids、k-modes、k-medians、kernel k-means等算法。
4.基于模糊的聚类
是一种基于模糊集理论的聚类方法,样本以一定的概率属于某个类。例如,**FCM算法(模糊C均值(Fuzzy C-means))**是一种以隶属度来确定每个数据点属于某个聚类程度的算法。优点是对于满足正态分布的数据聚类效果会很好,缺点是不能确保收敛于一个最优解,性能依赖于初始聚类中心。
5.基于网格的聚类
该方法是将数据空间划分为网格单元,将数据对象集映射到网格单元中,并计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,由邻近的稠密单元组形成“类”。特点是处理速度很快,通常与数据库中样本数无关,只与把数据空间分为多少个单元有关。 主要算法有STING、CLIQUE、WAVE-CLUSTER等。
6.基于密度的聚类
首先,定义两个参数:1.圈的最大半径;2.圈里最少应容纳的点的数量。只要邻近区域的密度超过某个阈值,就继续聚类;一个圈里的,就是一个类。特点是能克服基于距离的算法只能发现“类圆形”的聚类的缺点,对噪声数据的处理比较好。主要算法有DBSCAN、OPTICS、DENCLUE等。
7.基于模型的聚类
为每簇假定了一个模型,寻找数据对给定模型的最佳拟合。主要有基于概率模型的方法(如高斯混合模型GMM )和基于神经网络模型(如自组织映射神经网络模型 SOM)的方法。
优点:是对“类”的划分是以概率形式表现,每一类的特征也可以用参数来表达。
缺点:执行效率不高,特别是分布数量很多并且数据量很少的时候。