聚类分析基础
- 聚类分析是一种典型的无监督学习, 用于对未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而揭示样本之间内在的性质以及相互之间的联系规律
- 聚类算法在银行、零售、保险、医学、军事等诸多领域有着广泛的应用
聚类分析的概念
聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内相似性越大,组间差距越大,说明聚类效果越好。
也就是说, 聚类的目标是得到较高的簇内相似度和较低的簇间相似度,使得簇间的距离尽可能大,簇内样本与簇中心的距离尽可能小
聚类得到的簇可以用聚类中心、簇大小、簇密度和簇描述等来表示
- 聚类中心是一个簇中所有样本点的均值(质心)
- 簇大小表示簇中所含样本的数量
- 簇密度表示簇中样本点的紧密程度
- 簇描述是簇中样本的业务特征
聚类的过程
- 数据准备:包括特征标准化和降维;
- 特征选择:从最初的特征中选择最有效的特征,并将其存储于向量中;
- 特征提取:通过对所选择的特征进行转换形成新的突出特征;
- 聚类(或分组):首先选择合适特征类型的某种距离函数(或构造新的距离函数)进行接近程度的度量,而后执行聚类或分组;
- 聚类结果评估:是指对聚类结果进行评估,评估主要有3种:外部有效性评估、内部有效性评估和相关性测试评估。
良好聚类算法的特征
- 良好的可伸缩性
- 处理不同类型数据的能力
- 处理噪声数据的能力
- 对样本顺序的不敏感性
- 约束条件下的表现
- 易解释性和易用性
聚类分析的要求
不同的聚类算法有不同的应用背景,有的适合于大数据集,可以发现任意形状的聚簇;有的算法思想简单,适用于小数据集。总的来说,数据挖掘中针对聚类的典型要求包括:
(1)可伸缩性:当数据量从几百上升到几百万时,聚类结果的准确度能一致。
(2)处理不同类型属性的能力:许多算法针对的数值类型的数据。但是,实际应用场景中,会遇到二元类型数据,分类/标称类型数据,序数型数据。
(3)发现任意形状的类簇:许多聚类算法基于距离(欧式距离或曼哈顿距离)来量化对象之间的相似度。基于这种方式,我们往往只能发现相似尺寸和密度的球状类簇或者凸型类簇。但是,实际中类簇的形状可能是任意的。
(4)初始化参数的需求最小化:很多算法需要用户提供一定个数的初始参数,比如期望的类簇个数,类簇初始中心点的设定。聚类的结果对这些参数十分敏感,调参数需要大量的人力负担,也非常影响聚类结果的准确性。
(5)处理噪声数据的能力:噪声数据通常可以理解为影响聚类结果的干扰数据,包含孤立点,错误数据等,一些算法对这些噪声数据非常敏感,会导致低质量的聚类。
(6)增量聚类和对输入次序的不敏感:一些算法不能将新加入的数据快速插入到已有的聚类结果中,还有一些算法针对不同次序的数据输入,产生的聚类结果差异很大。
(7)高维性:有些算法只能处理2到3维的低纬度数据,而处理高维数据的能力很弱,高维空间中的数据分布十分稀疏,且高度倾斜。
(8)可解释性和可用性:我们希望得到的聚类结果都能用特定的语义、知识进行解释,和实际的应用场景相联系。
几种常用的聚类算法从可伸缩性、适合的数据类型、高维性(处理高维数据的能力)、异常数据的抗干扰度、聚类形状和算法效率6个方面进行了综合性能评价
算法名称 | 算法类型 | 可伸缩性 | 适合的数据类型 | 高维性 | 异常数据的抗干扰性 | 聚类形状 | 算法效率 |
---|---|---|---|---|---|---|---|
ROCK | 层次聚类 | 很高 | 混合型 | 很高 | 很高 | 任意形状 | 一般 |
BIRCH | 层次聚类 | 较高 | 数值型 | 较低 | 较低 | 球形 | 很高 |
CURE | 层次聚类 | 较高 | 数值型 | 一般 | 很高 | 任意形状 | 较高 |
CLARANS | 划分聚类 | 较低 | 数值型 | 较低 | 较高 | 球形 | 较低 |
DENCLUE | 密度聚类 | 较低 | 数值型 | 较高 | 一般 | 任意形状 | 较高 |
DBSCAN | 密度聚类 | 一般 | 数值型 | 较低 | 较高 | 任意形状 | 一般 |
WaveCluster | 网格聚类 | 很高 | 数值型 | 很高 | 较高 | 任意形状 | 很高 |
OptiGrid | 网格聚类 | 一般 | 数值型 | 较高 | 一般 | 任意形状 | 一般 |
CLIQUE | 网格聚类 | 较高 | 数值型 | 较高 | 较高 | 任意形状 | 较低 |
聚类分析的度量
聚类分析的度量指标用于对聚类结果进行评判,分为内部指标
和外部指标
两大类
- 外部指标指用事先指定的聚类模型作为参考来评判聚类结果的好坏
- 内部指标是指不借助任何外部参考,只用参与聚类的样本评判聚类结果好坏
外部指标
对于含有݊n个样本点的数据集ܵS,其中的两个不同样本点 ( x i , y j ) (x_i,y_j) (xi,yj)假设C是聚类算法给出的簇划分结果,ܲP是外部参考模型给出的簇划分结果。那么对于样本点 x i , y j x_i,y_j xi,yj来说,存在以下四种关系:
- SS: x i , y j x_i,y_j xi,yj在C和P中属于相同的簇ܲ
- SD: x i , y j x_i,y_j xi,yj在C中属于相同的簇ܲ,在P中属于不同的簇ܲ
- DS: x i , y j x_i,y_j xi,yj在C中属于不同的簇ܲ,在P中属于相同的簇ܲ
- DD: x i , y j x_i,y_j xi,yj在C和P中属于不同的簇ܲ
令 a , b , c , d a,b,c,d a,b,c,d分别表示 S S , S D , D S , D D SS,SD,DS,DD SS,SD,DS,DD所对应的关系数目, 由于 x i , y j x_i,y_j xi,yj所对应的关系必定存在于四种关系中的一种,且仅能存在一种关系
- Rand统计量(Rand Statistic)
R = a + d a + b + c + d R=\frac{a+d}{a+b+c+d} R=a+b+c+da+d - F值(F‐measure)
- P = a a + b P=\frac{a}{a+b} P=a+ba , R = a a + c R=\frac{a}{a+c} R=a+ca,(ܲP表示准确率,ܴR表示召回率)
- F = ( β 2 + 1 ) P R β 2 P + R , β F=\frac{(\beta^2+1)PR}{\beta^2P+R} ,\beta F=β2P+R(β2+1)PR,β是参数,当 β = 1 \beta=1 β=1时,就是最常见的 F 1 ‐ m e a s u r e F1‐measure F1‐measure
- Jaccard系数(Jaccard Coefficient)
J = a a + b + c J=\frac{a}{a+b+c} J=a+b+ca - FM指数(Fowlkes and Mallows Index)
F M = a a + b ∗ a a + c = P ∗ R FM=\sqrt{\frac{a}{a+b}*\frac{a}{a+c}}=\sqrt{P*R} FM=a+ba∗a+ca=P∗R
以上四个度量指标的值越大,表明聚类结果和参考模型直接的划分结果越吻合,聚类结果就越好
内部指标
在聚类分析中,对于两个݉m维样本 x i = ( x i 1 , x i 2 , . . . , x i m ) x_i=(x_{i1},x_{i2},...,x_{im}) xi=(xi1,xi2,...,xim)和 x j = ( x j 1 , x j 2 , . . . , x j m ) x_j=(x_{j1},x_{j2},...,x_{jm}) xj=(xj1,xj2,...,xjm)
常用的距离度量有欧式距离、曼哈顿距离、切比雪夫距离和明可夫斯基距离等
-
欧式距离(Euclidean Distance)是计算欧式
空间中两点之间的距离
,是最容易理解的距离计算方法,其计算公式如下:
d i c t e d = ∑ k = 1 m ( x i k − x j k ) 2 dict_{ed}=\sqrt{\sum_{k=1}^{m}(x_{ik}-x_{jk}})^2 dicted