关于《k-means算法在流式细胞仪中细胞分类的应用》的学习笔记总结
k-means算法在流式细胞仪中细胞分类的应用之学习总结
关键字:流式细胞仪,T淋巴细胞,k-means聚类,数据挖掘应用
一、课题简介
随着信息技术和计算机技术的迅猛发展,人们面临着越来越多的文本、图像、视频以及音频数据,各行各业的信息系统数年来收集了海量数据,而且这些数据还在以指数级增长着。这给我们带来方便的同时,也给我获取有效信息加大了难度。过多无用的信息必然会产生信息距离和有用信息的丢失[1]。为帮助用户从这些大量数据中分析出其间所蕴涵的有价值的知识,数据挖掘(Data Mining,DM)技术应运而生[2]。它能开采出潜在的模式,找出最有价值的信息,指导商业行为,生产控制,或辅助科学研究[3]。数据挖掘技术出现于20世纪80年代后期,在90年代发展迅速,其理论与应用研究已成为国内外的研究热点[4-5]。与此同时,聚类作为数据挖掘的主要方法之一,也越来越引起人们的关注。
迄今为止,聚类还没有一个学术界公认的定义。事实上,聚类是一个无监督的分类,它没有任何先验知识可用。没有任何一种聚类技术可以普遍适用于揭示各种多维数据集所呈现出来的多种多样的结构[6]。聚类是一个将数据集划分为若干组或簇的过程,使得同一类的数据对象之间的相似度较高,而不同类的数据对象之间的相似度较低。聚类问题的关键是把相似的事物聚集在一起,适合探讨样本间的内部关系[3]。1967年,MacQueen[7]首次提出了K均值聚类算法(K-means算法)。该方法虽然不能用于类别属性的数据,但对于数值属性的数据,它能很好地体现聚类在几何和统计学上的意义。在对大型数据集聚类时,K-means算法也比层次聚类算法快得多。迄今为止,很多聚类任务都选择该经典算法或其变种。
流式细胞技术(FCM)是70年代发展起来得一种快速对单细胞定量分析的新技术。它借鉴了荧光显微镜技术,同时利用了荧光染料、激光技术、单抗技术以及计算机技术的发展,将荧光显微镜的激发光源改为激光,使之具有更好的单色性与激发效率,因而大大提高了检测灵敏度,同时将固定的标本台改为流动的单细胞悬液,用计算机进行数据处理,因而大大提高了检测速度与统计精确性,而且能从同一个细胞中可以同时测得多种参数[8]。流式细胞仪是采用流式细胞术的典型仪器,它能迅速的对单个细胞及其群体的化学物质的含量与种类作出分析,对含指定化学物质的细胞进行分离提纯,在一些有关实验室和医院应用广泛[9]。近年来FCM不仅在生物医学与临床检验学中得到了长足发展,而且拓展到生物学的各个领域,微生物学中涉及医学、发酵和环保等的诸多领域,而且它还是细胞学研究中必不可少的工具之一。
在流式细胞仪中使用细胞标志示踪物质为荧光标记物鉴定和分离细胞群和亚群是其非常重要的一个应用,具有深远的意义。例如在免疫学,淋巴细胞是正常机体免疫系统功能最重要的一大细胞群,在免疫应答过程中,未梢血淋巴细胞发育成为功能不同的亚群。各亚群的数量和功能产生异常时,就能导致机体免疫紊乱并产生病理变化[10]。淋巴细胞亚群分析已成为检测细胞免疫和体液免疫功能的重要指标,而FCM可以同时检测一种或几种淋巴细胞膜表面分子(分化群抗原),将不同的淋巴细胞亚群数量的测定来监控病人的免疫状态,指导治疗[11]。对于细胞亚群百分含量的分析,我们一般用单参数直方图、二维散点图、密度图、等高图和三维图来分析结果。而用于显示数据的几种形式的散点图,还可通过设门的方法区分指定的细胞亚群[8-9]。流式细胞术对淋巴细胞亚群的这种鉴定分析已成为医院中最快速、准确和可靠常规检测技术。
现在数据聚类分析已经成为一个非常活跃的研究课题,但是用聚类的方法对流式细胞仪中检测到的细胞分类数据进行分析还很少有人研究。本课题就是以标记荧光团的标准微球(T淋巴细胞)为实验对象,由流式细胞仪得到各细胞的荧光光谱,然后基于此荧光光谱利用MATLAB编程分析,用K-means聚类算法实现不同特性细胞的准确分类。
二、研究方法
研究K-means算法在流式细胞仪中细胞分类的应用,关键是用该算法挖掘出荧光光谱中的有效信息并建立起荧光光谱与细胞分类的正确映射关系。本课题将基于采用FCM对荧光标记的T细胞进行检测而得到的CD3-8-45-4分子的荧光光谱数据,对该数据实施预处理后以K-means算法构建聚类模型,并用MATLAB编程仿真实现细胞亚群分类。然后依据仿真结果是否聚类良好,不断改进该算法,直到取得比较满意的结果。下面给出课题中涉及到流式细胞术、T淋巴细胞亚群和K-means算法等的原理与方法等信息。
1 流式细胞术(FCM)
FCM是一种快速检测分析单个粒子多物理特性的高技术,通常指细胞通过激光束时在液流中的特性,即粒子的的大小,密度,或是内部结构,以及相对的荧光强度。通过光电系统记录细胞的散射光信号和荧光信号可以得知细胞特性。FCM分析中前向散射光反映颗粒的大小;侧向散射光反映颗粒内部结构复杂程度、表面的光滑程度;荧光反映颗粒被染上荧光部分数量的多少,根据其标记的抗原分子不同,即反映了不同抗原分子的表达情况[12]。本课题主要研究荧光标记的T淋巴细胞的荧光光谱来实现细胞亚群分类。
1)流式细胞仪结构与工作流程
在流式细胞仪中,细胞被传送到液流中的激光照射区。下图1为流式细胞仪结构示意图。任何存在于悬液中的直径为0.2-150微米的粒子或细胞都适用于流式分析。在实际工作中,用实体组织进行流式细胞分析往往是不可能的,分析之前必须对其进行分解。被液滴包绕的粒子称为细胞液柱,当粒子经过激光照射区时,通过激光激发产生散射光。含有荧光的粒子就会表现出其荧光特性。散射光和荧光由光路系统(相应的透镜,滤片和探测器)收集。分光器和滤光片引导散射光和荧光至相应的探测器,把光信号转换为电信号。单个粒子通过其表现出的光散射和荧光属性,通过列表模式(List mode)完成数据采集,并对样本中的细胞亚群进行分析[13]。图2为其工作的基本流程。
图1 流式细胞仪结构示意图
图2 流式细胞仪基本流程
2)荧光
荧光物质吸收符合其波长范围的光能量,内部电子受激上升到高能级,然后受激电子迅速衰落回基态,释放过剩能量成为光子,这种能量转换生成的光称为荧光。能够激发荧光物质的波长范围称为激发光谱。荧光物质的发射波长范围叫做发射光谱。光源的谱线愈接近被激发物质的激发光谱的峰值,所产生的荧光信号愈强。而且因为更多的能量消耗在吸收转换而不是荧光转换中,所以发射光波长要高于激发光波长。一般的流式细胞仪只装有一个激光光源(488nm),可测出三个荧光强度(FL),即FL1、FL2、FL3,大型的流式细胞仪装有两个或三个激光光源(488nm、633nm和325nm),可测出6个FL。目前的流式细胞仪大多采用488nm氩离子激光器,因为488nm的激光器能够激发一种以上的荧光。每种荧光染料会产生特定波长的荧光和颜色,通过波长选择通透性滤片,可将不同波长的散射光和荧光信号区分开,送入不同的光电倍增管[14](见图1)。本课题FCM实验采用的就是488nm的氩离子激光器,检测到的三个通道分别是FL1:53610nm,FL2:59010nm,FL3:62010nm。
在对单克隆抗体进行检测时,抗体上标记荧光,然后抗体与被测抗原特异结合,结合后的抗原抗体复合物通过流式细胞仪时就能检测到特异荧光。选择不同的单抗及染料就可同时测定一个细胞上的多个不同特征。当细胞标记了多色荧光,被激发光激发后,得到的荧光信号可根据需要进行组合分析。至于荧光染料的选择,我们可以
① 根据流式细胞仪能检测的通道数来选,对每个通道只选择一种荧光染料,各个通道之间的荧光染料可以随意搭配。比如FACSCalibur常用四色搭配:FITC、PE、PerCP、APC。
② 根据抗原表达强弱合理来选,高表达的抗原可用荧光不太强的染料,低表达的抗原则用荧光更强的染料。如CD4-FITC、CD25-APC、Foxp3-PE。
③ 根据荧光波谱间光谱重叠部分的大小来选,对重叠较小的荧光染料进行组合,同时需要正确的调节补偿。
3)T淋巴细胞
人体内的淋巴细胞并不是功能单一的群体,但其在光学显微镜下的形态基本上是一样的,都是以致密的核及少量细胞质组成的小而圆的细胞为特征,因此要对其进一步的分类观察就不能采用形态学的方法,而是要对其表面标志的检测。包括对T细胞、B细胞和NK细胞及其有关亚群的检测,实质上是对其相应的表面标志进行检测,据此可以建立起相应的细胞计数方法,以判断机体的免疫水平[15]。常用于鉴定和检测淋巴细胞表面标志的是分化抗原簇(cluster of defferentiation,CD)。CD抗原的鉴定和检测依赖与其相应的单克隆抗体,国际制定了细胞分化抗原的CD统一编号,统一把识别同一抗原的两种以上的单抗划分为同一抗体组。T淋巴细胞表达CD3;B细胞表达CD19和CD20;NK细胞表达CD56和CD16,不表达CD3。利用各种单克隆抗体与淋巴细胞表面抗原结合,再配多色荧光染料,即可以把淋巴细胞区分为各亚群。
T淋巴细胞是参与机体细胞免疫并起主导调节作用的一组免疫细胞。外周血中成熟的T淋巴细胞主要属于TCRαβ+T细胞,所有的T细胞均有共同的标志性抗原,一般认为是CD3分子,不同功能的T细胞亚群又有各自的标志性抗原。现有多种分类方法将T细胞分成不同的亚群:按CD4/CD8表达不同可分为CD4+和CD8+两个亚群;按TCR(T细胞抗原受体)分子不同可分为TCRαβ和TCRγδT细胞;按免疫功能不同可分为辅助性和抑制性T细胞;按对抗原的应答不同可分为初始T细胞、抗原活化过的T细胞、记忆性T细胞[16]。文献[15]中则给出,根据T细胞的免疫效应和表面CD分子表达,至少可以将T细胞分为:CD3+CD4+CD8-辅助性T细胞(help T cell,Th)、CD3+CD4-CD8+细胞毒性T细胞(cytotoxic T cell,Tc或CTL)和CD4+CD25+调节性T细胞(regulartory T cell,Tr或Treg)等几组亚群。
T淋巴细胞及亚群的检测结果可以解释一些疾病发病机理,对患者的免疫功能和预后做出判断以及指导治疗。这些疾病主要包括:①病毒感染性疾病;②肿瘤性疾病;③自身免疫性疾病;④器官移植患者;⑤其他免疫缺陷或异常的患者。下面表1列出了T淋巴细胞亚群检测中一些指标的正常参考值及临床意义。本课题中主要检测CD3、CD8、CD45和CD4的荧光强度以对T淋巴细胞进行亚群分类。
表1 T淋巴细胞部分CD抗原的参考值及临床意义
指标 |
正常范围 |
临床意义 |
CD3 |
60~80% |
CD3下降常见于:①恶性肿瘤;②自身免疫性疾病,如系统性红斑狼疮、类风湿关节炎等;③先天性免疫缺陷病,艾滋病;④接受放疗、化疗或者使用肾上腺皮质激素等免疫抑制剂。 CD3上升则见于甲亢、淋巴细胞性甲状腺炎、慢性活动性肝炎、重症肌无力和器官移植排斥反应等。 |
CD4 |
35~55% |
CD4淋巴细胞减少常见于恶性肿瘤、遗传性免疫缺陷病、艾滋病、应用免疫抑制剂的患者。 |
CD8 |
20~30% |
CD8淋巴细胞增多常见于自身免疫病,如SLE、慢性活动性肝炎、肿瘤及病毒感染等。 |
CD4/CD8 |
1.4~2.0 |
CD4/CD8﹤1.4常见于:①免疫缺陷病,如艾滋病的比值常小于0.5;②恶性肿瘤;③再生障碍性贫血,某些白血病;④某些病毒感染,急性巨细胞病毒感染;⑤其它,SLE肾病、传染性单核细胞增多症、骨髓移植恢复期等。 CD4/CD8﹥2.0常见于自身免疫性疾病,如系统性红斑狼疮、类风湿关节炎、I型糖尿病等。此外还可用于监测器官移植的排斥反应,若移植后CD4/CD8较移植前明显增加,则可能发生排异反应。 |
CD56 |
|
某些病毒感染早期、长期使用干扰素及其干扰的诱导物,骨髓移植后、习惯性流产等可增高CD56。 恶性肿瘤特别是中晚期伴转移的肿瘤,免疫缺陷病及使用免疫抑制剂等可降低CD56。 |
2 K-means算法
K-means算法(K均值聚类算法)是一种动态聚类方法,由James MacQueen于1976年提出,但算法本身思想就已经由Stuart Lloyd于1957年给出。它是一种得到最广泛使用的基于划分的聚类算法,把n个对象分为k个簇(cluster),以使簇内具有较高的相似度,相似度的计算根据一个簇中对象的平均值来进行[17]。它与处理混合正态分布的最大期望算法(Expectation-maximization algorithm,EM)很相似,因为他们都试图找到数据中自然聚类的中心。但前者倾向于寻找空间范围容易比较的簇,而后者则允许该簇拥有各种形态。
聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签Y的,也就是说样例中已经给出了分类[18]。在监督学习中,标签信息协助机器学习同类样本之间存在的共性,在预测时只需判定给定样本与哪个类别的训练样本最相似即可。而聚类的样本中却没有给定Y,只有特征X。在非监督学习中,不再有标签信息的指导,遇到一维或二维数据的划分问题,人用肉眼就很容易完成,可机器就傻眼了。不过对于高维多组样本数据,用机器学习划分显然更现实。设计算法让机器来完成将所有样本分成若干个簇,并且每个簇中的样本具有更高的相似度,这就是聚类分析算法的终极目标。
K-means算法主要解决的也是这个问题。如下图3所示,我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?比如假设宇宙中的星星可以表示成三维空间中的点集,聚类的目的是找到每个样本X潜在的类别Y,并将同类别Y的样本X放在一起。比如上面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星星距离就比较远了。
图3 K-means要解决的问题
1)基本步骤
K-means方法是预先给定一系列N维向量,和一个聚类数目的变量k,然后将这些向量聚为k类。其基本步骤[19]是
(1)任意选择k个对象作为初始的簇中心;
(2)repeat
(3) 根据与每个中心的距离,将每个对象赋给“最近”的簇;
(4) 重新计算每个簇的平均值;
(5)until 不再发生变化。
算法很简单,但很多复杂算法的实际效果或许都不如它,而且它的局部性较好,容易并行化,对大规模数据集很有意义。算法的时间复杂度为O(tkmn),空间复杂度为O((m+k)n),其中,t为迭代次数,k为簇的数目,m为记录数,n为维数。
图4 K-means基本步骤示意图
该算法的基本步骤可以用上面的图4来表示[20]。从上图可以看到,A、B、C、D、E是图中的五个点,而灰色的点是我们的种子点,也就是我们要用来找点群的初始中心点。这里有两个种子点,所以k取为2。其算法可以表述为
(1)随机在图中取k(这里k=2)个种子点。
(2)然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。(上图中,我们可以看到A,B属于上面的种子点,C,D,E属于下面中部的种子点。)
(3)接下来,我们要移动种子点到属于他的“点群”的中心。(见图上的第三步。)
(4)然后重复第(2)和第(3)步,直到种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E。)
3)具体描述[21]
在k-means聚类问题中,给定m个训练样本划分成k个类簇(),没有了类别标签Y。其准则函数形式如下
其中c为样本的簇分配情况,μ为簇的质心,为样本对应的簇的中心。这里准则函数计算的是所有样本点与其对应的簇中心点的距离平方和,使准则函数最小的簇划分则为最优的聚类。
这里的准则函数不是凸函数,找到全局最优解是不可能的,但是能保证它收敛到局部最优解。首先,更新样本所属的簇时,总是选择与其最近的簇中心点,致使在每次迭代过程都是非递增的,那么在准则函数J也是非递增的。其次,簇中心点被更新为簇中所有样本的均值时也能保证J是非递增的,可以通过准则函数J对第j个簇中心点μj求偏导(j≤k)并令其为0,即,得到簇中心点更新规则:簇的最小化准则函数的中心点是簇中各点的均值。
对于给定训练样本,该算法可以具体描述如下(采用欧氏距离)
(1)随机从X中选取k个聚类中心点为
(2)重复下面过程直至收敛
{
对于每个样本,计算其应该属于的簇
对于每个簇,重新计算其中心
}
(3)返回μ,c
k是我们事先给定聚类的簇数,代表k个簇中与样本距离最近的那个类,代表我们对属于同一个样本中心点的猜测。算法的外循环嵌套两个内循环,外循环完成准则函数的计算使收敛,内层循环完成两个工作:一是将每个样本划分到与其最近的类簇中;二是将属于同一个类簇的样本均值作为新的类簇中心。
5)注意问题[22]
(1)k值的选取
在K-means算法中k是事先给定的,这个k值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。这也是K-means算法的一个不足。常见的有的算法有
① 与层次聚类结合的方法[19]:首先采用层次凝聚算法决定结果粗的数目,并找到一个初始聚类,然后用迭代重定位来改进该聚类。
② 稳定性方法[23]:对一个数据集进行2次重采样产生2个数据子集,再用相同的聚类算法对2个数据子集进行聚类,产生2个具有k个聚类的聚类结果,计算2个聚类结果的相似度的分布情况。2个聚类结果具有高的相似度说明k个聚类反映了稳定的聚类结构,其相似度可以用来估计聚类个数。采用此方法试探多个k,找到合适的k值。
③ 系统演化方法[23]:将一个数据集视为伪热力学系统,当数据集被划分为k个聚类时称系统处于状态k。系统由初始状态k=1出发,经过分裂过程和合并过程,系统将演化到它的稳定平衡状态k0,其所对应的聚类结构决定了最优类数k0。系统演化方法能提供关于所有聚类之间的相对边界距离或可分程度,它适用于明显分离的聚类结构和轻微重叠的聚类结构。
④ 基于Canopy的初始划分方法[24]:Canopy算法常常用来对初始数据做一个粗略的划分,它的结果可以为之后的聚类提供帮助,比如对K-Means来说提供k值,另外还能很好的处理孤立点。基于Canopy的聚类算法将聚类过程分为两个阶段,第一阶段选择简单、计算代价较低的方法计算对象相似性,将相似的对象放在一个子集中,这个子集被叫做Canopy。通过一系列计算得到的若干Canopy之间可以是重叠的,但不会存在某个对象不属于任何Canopy的情况,可以把这一阶段看做数据预处理。第二阶段在各个Canopy内使用传统的聚类方法(如K-means),不属于同一Canopy的对象之间不进行相似性计算[25]。划分后结果图见下图5所示。
还有的通过类的自动合并和分裂,得到较为合理的类型数目k,例如ISODATA算法[26];根据方差分析理论,应用混合F统计量来确定最佳分类数,并应用了模糊划分熵来验证最佳分类数的正确性[27]。还有使用一种结合全协方差矩阵的RPCL算法(它的思想是:对每个输入而言,不仅竞争获胜单元的权值被修正以适应输入值,而且对次胜单元采用惩罚的方法使之远离输入值),并逐步删除那些只包含少量训练数据的类[28-30]。
图5 Canopy聚类划分结果图
(2)初始质心的选取
在K-means算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果,这也成为K-means算法的一个主要问题。基本方法是随机的选取初始质心,但是这样簇的质量常常很差。对于该问题的解决,以下列出一些常见方法[31]
① 多次运行,每次使用一组不同的随机初始质心,然后选取具有最小SSE(误差的平方和,即前面的准则函数)的簇集。这种策略简单,但是效果可能不好,这取决于数据集和寻找的簇的个数。
② 取一个样本,并使用层次聚类技术对它聚类。从层次聚类中提取k个簇,并用这些簇的质心作为初始质心。该方法通常很有效,但仅对下列情况有效:(1)样本相对较小,例如数百到数千(层次聚类开销较大);(2)k相对于样本大小较小。
③ 随机地选择第一个点,或取所有点的质心作为第一个点。然后,对于每个后继初始质心,选择离已经选取过的初始质心最远的点。使用这种方法,确保了选择的初始质心不仅是随机的,而且是散开的。但是,这种方法可能选中离群点。此外,求离当前初始质心集最远的点开销也非常大。为了克服这个问题,通常该方法用于点样本。由于离群点很少(多了就不是离群点了),它们多半不会在随机样本中出现。计算量也大幅减少。
④ 二分K均值是基本K均值算法的直接扩充,它基于一种简单想法:为了得到k个簇,将所有点的集合分裂成两个簇,从这些簇中选取一个继续分裂,如此下去,直到产生k个簇。带分裂的簇有许多不同的选择方法,可以选择最大的簇,选择具有最大SSE的簇,或者使用一个基于大小和SSE的标准进行选择。我们通常使用结果簇的质心作为基本K均值的初始质心,对结果簇逐步求精,因为最终的簇集并不代表使SSE局部最小的簇。
还有的采用前面提到的基于Canopy的聚类算法,划分后类似上图5所示;采用遗传算法(GA)进行初始化,以内部聚类准则作为评价指标[32-33];以及提出最近邻K均值、极远邻K均值和自适应K均值3种优化算法[34]和基于个体轮廓系数自适应地选取优秀样本的方法[35]优化初始中心的算法。K-Means++算法[36]也能很好地初始化质心。
(3)距离的度量
为了将点归到最近的簇里,我们需要邻近度(proximity)来量化所考虑的数据的“最近”概念[31]。而相异度(dissimilarity)或相似度(similarity)就是我们用来描述它的两个量,我们首先要考虑如何定量计算两个可比较元素间的邻近度,我们必须在数学上对它们进行定量定义。
设,其中X,Y是两个元素项,各自具有n个可度量特征属性,那么X和Y的相异度(相似度)定义为:,其中R为实数域[37]。也就是说相异度(相似度)是两个元素对实数域的一个映射,所映射的实数定量表示两个元素的相异度(相似度),我们通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。聚类分析主要针对的数据类型包括区间标度变量、二元变量、标称变量、序数型变量、比例标度型变量,以及由这些数据类型组合成的复合型变量。针对这些数据类型的距离度量方法也各种各样,但定义的距离函数一定要满足一定条件[19]。
下面给出标量的相异度的常用计算方法[38-40]
① 欧几里得距离(Euclidean Distance)
欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。其意义就是两个元素在欧氏空间中的集合距离,因为其直观易懂且可解释性强,被广泛用于标识两个标量元素的相异度。
② 曼哈顿距离(Manhattan Distance)
从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而因为曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)。
③ 闵可夫斯基距离(Minkowski Distance)
闵氏距离不是一种距离,而是一组距离的定义。λ可以随意取值,可以是负数,也可以是正数,或是无穷大。当λ取1时,它就是曼哈顿距离;当λ取2时,它就是欧几里得距离;当λ取无穷时,它就是切比雪夫距离。这三个公式的求中心点有一些不一样的地方,我们看下图(第一幅图中λ在0~1之间)
图6基于三种距离公式的逼近中心的方式示意图
上面这几个图的大意是他们是怎么逼近中心的,第一个图以星形的方式,第二个图以同心圆的方式,第三个图以菱形的方式[20]。另外还有马氏距离(Mahalanobis Distance)、兰氏距离(Canberra Distance)等一些距离的定义,这里不再详谈。
而对于向量,一种流行的做法是用两个向量的余弦度量,即余弦相似度(cosine similarity),其度量公式为[31]
其中与分别表示X与Y的欧几里得范数,夹角余弦取值范围为[-1,1]。夹角余弦越大,表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时,夹角余弦取最大值1。当两个向量的方向完全相反时,夹角余弦取最小值-1。另外还有Jaccard系数、广义Jaccard系数和相关性等相似性度量方法。
(4)距离的标准化
前面算法的具体描述中使用的就是欧几里得距离,这样计算标量相异度的方式有一点问题,就是取值范围大的属性对距离的影响高于取值范围小的属性。如果样本有多个属性,而且属性不在同一个定义域内,则有必要对样本数据进行预处理,防止某些值很大的属性在计算距离时占主导优势,最常用的就是标准化处理(standardization)。
一种方法是使得每个属性均值为0,方差为1,即为自标准化[41]。假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为
经过简单的推导就可以得到间的标准化欧氏距离(Standardized Euclidean distance)的公式
如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
另外一个常用的解决方法就是将各个属性值按比例映射到相同的取值区间,这样是为了平衡各个属性对距离的影响。一般都将数据都映射到[0,1]空间,然后再计算距离[39]。对于样本集X,最大值和最小值分别是Xmax和Xmin,那么映射公式为
前面两种标准化方法都容易受到孤立点的影响。特别是前者的均值和标准差受的影响很大,后者只有孤立点是最大最小值时才影响极大。通常对于自标准化,我们用中位数(即中间值)替代均值,用绝对标准差替代标准差,以减小影响[31]。
传统的聚类算法,如K-means、FCM等,都假设样本的特征属性对每个类别是同等重要的。然而,事实上,不同的属性对于不同的类别的贡献却很可能是不同的。文献[31]介绍了一种通过对每个属性以贡献加权的距离度量方法,而文献[41]也给出了聚类前特征选择或梯度下降法来区别各特征属性的权重的方法,并详细说明了特征空间属性加权模糊核聚类算法。
(5)质心的计算
距离度量不管是采用欧式距离还是采用余弦相似度,基本K-means算法中簇的质心都是取其均值,即向量各维取平均即可,然而这样却容易使该算受到孤立点的影响。当聚类的样本点中有孤立点时,在计算类簇质点的过程中会受到干扰,造成所得质心点和实际质心点位置偏差过大,从而使类簇发生“畸变”。
为了解决该问题,K-medoids算法(K中心点算法)提出了新的质点选取方式,用类中位置最中心的对象(中心点)来代替对象的平均值作为参考点,但它仍是基于最小化所有对象与参照点之间的相异度之和的原则来执行的[38]。在K中心点算法中,每次迭代后的质点都是从聚类的样本点中选取,而选取的标准就是当该样本点成为新的质点后能提高类簇的聚类质量,使得类簇更紧凑。该算法使用绝对误差标准来定义一个类簇的紧凑程度。如果某样本点成为质点后,绝对误差能小于原质点所造成的绝对误差,那么K中心点算法认为该样本点是可以取代原质点的,在一次迭代重计算类簇质点的时候,我们选择绝对误差最小的那个样本点成为新的质点。因此,与K-means算法相比,当存在噪声和孤立点数据时,它能更健壮而不容易受极端数据的影响。但在时间复杂度上,该算法约为О(n2),执行代价比后者要高得多[19]。
(6)算法的终止条件
算法的终止条件可以有三种:
① 准则函数值的变化小于一个阈值;
② 类簇中心在一定范围内不再变化;
③ 达到指定的迭代次数T。
对于准则函数而言,使用不同的距离度量,它的形式和最终目的不相同。当采用欧式距离时,目标函数一般为最小化对象到其簇质心的距离的平方和,如下式
当采用余弦相似度时,目标函数一般为最大化对象到其簇质心的余弦相似度和,如下式
(7)空簇的处理
如果所有的点在指派步骤都未分配到某个簇,就会得到空簇。如果这种情况发生,则需要某种策略来选择一个替补质心,否则的话,平方误差将会偏大。一种方法是选择一个距离当前任何质心最远的点。这将消除当前对总平方误差影响最大的点。另一种方法是从具有最大SSE的簇中选择一个替补的质心。这将分裂簇并降低聚类的总SSE。如果有多个空簇,则该过程重复多次。另外,编程实现时,要注意空簇可能导致的程序bug[31]。
(8)孤立点的识别
使用平方误差标准时,孤立点(outlier,也称离群点)可能过度影响所发现的簇。具体地说,当存在孤立点时,结果簇的质心(原型)可能不如没有孤立点时那样有代表性,并且SSE也比较高。正因为如此,提前发现孤立点并删除它们是有用的[31]。然而,应当意识到有一些聚类应用,不能删除孤立点:当聚类用来压缩数据时,必须对每个点聚类;在某些情况下(如财经分析),明显的孤立点(如商业诈骗,偷税漏税等)可能正是最令感兴趣的点。一个明显的问题是如何识别孤立点。基于计算机的孤立点的探测方法,可以大致分为三类:统计学方法,基于距离的方法和基于偏离的方法[19,31,36]。常见的k-mediods算法就能在一定程度上消除掉孤立点和噪声的影响。
(9)收敛的时间复杂度
从K-means算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。所以需要对算法的时间复杂度进行分析、改进,提高算法应用范围。有的提出用三角不等式[42]或树形结构[17,43]等对K-means进行加速的算法,以减少不必要的距离计算。还有的从该算法的时间复杂度进行分析考虑,通过一定的相似性准则来去掉聚类中心的侯选集。另外,如果我们在初始化类簇中心的时候就遵循“使同一个类簇中的数据尽可能相似,而不同类簇间的样本彼此离得越远越好”的原则,从样本分布的最边缘开始选取类簇中心的,以避免类簇中心被初始化到数据较为密集的地方,这样就大大降低算法收敛需要的迭代次数,也可减小时间复杂度[21]。
(10)指派的问题
K-means算法的一大特点是每个样本只能被硬性分配(hard assignment)到一个类或簇中,这种方法不一定是最合理的,但聚类本身就是一个具有不确定性的问题。如图7(a)所示,实际情况中的类或簇很可能存在重叠的情况,那么重叠的部分的归属就颇具争议了;或者给定一个新样本集,如图7(b),即存在其中的样本点到某些簇中心的距离相等或接近的情况,我们又该怎么办?如果我们采用概率的方法[31],像高斯混合模型(Gauss Mixture Model,GMM)[44-46]那样给出样本属于每个类簇的概率值,或采用模糊理论,像FCM算法[32-33,41],能从一定程度上反映聚类的不确定性就更合理了。上面图5的Canopy聚类划分也能解决这个问题。
图7 (a)簇重叠;(b)点到某些簇的距离相等
(11)数据的属性
k-means算法是在数据挖掘领域中普遍应用的聚类算法,它只能处理数值型数据,而不能处理分类属性型数据[18],例如表示人的属性有:姓名、性别、年龄、家庭住址等属性。而k-modes算法就能够处理分类属性型数据,它是对k-means算法的扩展。k-modes算法采用模式来代替类的平均值,采用新的相异性度量方法来处理分类性质的数据,采用基于频率的方法来修改聚类的模式[31]。k-modes算法能直接处理分类型属性并产生聚类模型,而且对于大型数据集仍有很高的效率[47-48]。综合两种方法就可以处理有数值类型和分类类型属性的数据,即k-prototypes方法[49]。
本文中公式相关文献或链接中都很容易找到,由于输入比较麻烦,在此省略。略表歉意!
参考文献
1.王立伟.数据挖掘研究现状综述.图书与情报,2008(5):41~46
2.王慧中,彭安群.数据挖掘研究现状及发展趋势.工矿自动化,2011(2):29~32
3.王桂芹,黄道.数据挖掘技术综述.电脑应用技术,2007(69):9~14
4.李菁菁,邵培基,黄亦潇.数据挖掘在中国的现状和发展研究.管理工程学报,2004(3):10~15
5.Tipawan Silwattananusarn,KulthidaTuamsuk.Data Mining and Its Applications for Knowledge Management:A Literature Review from 2007 to 2012.International Journal of Data Mining & Knowledge Management Process,2012(9):13~24
6.孙吉贵,刘杰,赵连宇.聚类算法研究.软件学报,2008(1):48~61
7.J. MacQueen.Some methods for classification and analysis of multivariate observations.Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability,1967(1):281~297
8.宋平根,李素文.流式细胞术的原理和应用.北京:北京师范大学出版社,1992
9.M. R. Melamed,T. Lindmo,M. L. Mendelsohn.Flow Cytometry and Sorting.New York:John Wiley and Sons,1990
10.曹雪涛.医学免疫学.北京:人民卫生出版社,2013
11.张瑞华,王进,兰文君.流式细胞术及其在生物医学领域中的应用.山东轻工业学院学报,2011(8):20~24
12.张艺.流式细胞仪构成与工作原理.医疗设备信息,2005(8):25~26
13.J. Paul Robinson.Flow Cytometry.Encyclopedia of Biomaterials and Biomedical Engineering,2004:630~640
14.瑞菲尔·努纳兹.流式细胞术原理与科研应用简明手册.北京:化学工业出版社,2005
15.王兰兰,吴建民.临床免疫学与检验.北京:人民卫生出版社,2007
16.http://en.wikipedia.org/wiki/T_cell
17.http://en.wikipedia.org/wiki/K-means_clustering
18.邵峰晶,于忠清.数据挖掘原理与算法.北京:中国水利水电出版社,2003
19.韩家炜,坎布尔.数据挖掘:概念与技术.北京:机械工业出版社,2001
20.http://coolshell.cn/articles/7779.html
21.http://www.cnblogs.com/jeromeblog/p/3425919.html
22.http://blog.csdn.net/qll125596718/article/details/8243404#
23.王开军,李健,张军英,过立新.聚类分析中类数估计方法的实验比较.计算机工程,2008(5):198~199
24.Andrew McCallum,Kamal Nigam,Lyle H. Ungar.Efficient Clustering of High-Dimensional Data Sets with Application to Reference Matching.Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining.2000:169~178
25.http://www.cnblogs.com/vivounicorn/archive/2011/09/23/2186483.html
26.杨小明,罗云.ISODATA算法的实现与分析.采矿技术,2006(6):66~68
27.孙才志,王敬东,潘俊.模糊聚类分析最佳聚类数的确定方法研究.模糊系统与数学,2001(3):89~92
28.李昕,郑宇,江芳泽.用改进的RPCL算法提取聚类的最佳数目.上海大学学报,1999(10):409~413
29.谢皝,张平伟,罗晟.基于RPCL的模糊关联规则挖掘.计算机工程,2011(10):44~46
30.魏立梅,谢维信。聚类分析中竞争学习的一种新算法.电子科学学刊,2000,22(1):13~18
31.Pang-Ning Tan,Michael Steinbach,Vipin Kumar.数据挖掘导论.北京:人民邮电出版社,2011
32.吴香庭.基于遗传算法的K-means聚类方法的研究.青岛:山东科技大学,2010
33.张逸清.基于遗传算法的K-MEANS聚类改进研究.重庆:重庆大学,2006
34.王秀芳,王岩.优化K均值随机初始中点的改进算法.化工自动化及仪表,2012(10):1302~1304
35.张靖,段富.优化初始聚类中心的改进k-means算法.计算机工程与设计,2013(5):1691~1694
36.http://en.wikipedia.org/wiki/K-means%2B%2B
37.http://www.cnblogs.com/leoo2sk/archive/2010/09/20/k-means.html
38.李雄飞,李军.数据挖掘与知识发现.北京:高等教育出版社,2003
39.http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html
40.陈燕.数据挖掘技术与应用.北京:清华大学出版社,2011
41.杨杰,姚莉秀.数据挖掘技术及其应用.上海:上海交通大学出版社,2011
42.Charles Elkan.Using the Triangle Inequality to Accelerate k-Means.2003
43.V. Ramasubramanian,Kuldip K. Paliwal.Fast K-Dimensional Tree Algorithms for Nearest Neighbor Search with Application to Vector Quantization Encoding.IEEE Transactions on Signal Processing,1992(3):518~531
44.http://en.wikipedia.org/wiki/Mixture_model#Gaussian_mixture_model
45.http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html
46.http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
47.Miguel Á. Carreira-perpiñán,Weiran Wang.The K-Modes Algorithm for Clustering.2013(4)
48.Rishi Syal,Dr V. Vijaya Kumar.Innovative Modified K-Mode Clustering Algorithm.International Journal of Engineering Research and Applications,2012,2(4):390~398
49.Zhexue Huang.Clustering large data sets with mixed numeric and categorical values.In The First Pacific-Asia Conference on Knowledge Discovery and Data Mining,1997:21~34