具体实施方式
按照本发明实施例的分类方法和装置,可以应用于流式血液细胞分析仪以及基于光散射或荧光检测的血液细胞分析仪散点图的二分器或多分类应用,也可以应用于三维或者更高维度上的二分或多分类应用。
如图1所示,是按照本实施例的细胞聚类方法的流程图,包括生成步骤S100、训练步骤S102和分类步骤S104。其中在生成步骤S100中,利用收集的血液样本生成变换矩阵;在训练步骤S102中,利用选择的血液样本,通过训练得到支持向量机分类模型;以及在分类步骤S104中,利用所述变换矩阵对原始数据粗糙化后的散点图进行变换,并加上细胞通道的数据得到细胞的特征属性向量,然后将该特征属性向量输入训练好的支持向量机模型,从而得到细胞的分类结果。下面通过具体实例,对按照本实施例的方法进行具体说明。
实例一:二分器(异常血液样本识别)
临床上通常是在例行的血常规体检中筛查出血液细胞异常的患者,然后进行血液和骨髓涂片镜检确认。在基于流式细胞术的血液细胞分析仪中,检测结果的散点图显示通常有两种配置:采用前向散射光FSC和侧向散射光SSC的组合,或者是荧光FL与侧向散射光SSC的组合。白血病患者血液样本的二维散点图分布与正常人的分布有明显差异。通过散点图可以将这类分布形态异常的散点图筛选出来,供医生进一步综合判断。
本实施例以荧光FL与侧向散射光SSC组合的散点图为例,说明用于异常散点图形态识别的二分类方法。如图2所示,是一例急性淋巴性白血病患者的血液细胞散点图,散点图的X轴是侧向散射光SSC通道,Y轴是荧光FL通道。该类型的散点图具有如下显著特点,左侧有一明显的长条散点,无明显界限,而在正常散点图中,这片区域应该是淋巴细胞和单核细胞,并且有一明显分界线。
图1所示的细胞聚类方法中,其前两步可以在设备开发过程中离线完成,为第三步做准备,第三步在实际临床检测中进行。
图3描述了第一步即生成步骤的主要过程,通过收集生成变换矩阵的血液样本,经过一系列的处理后最终生成变换矩阵。主要过程如下:
在步骤S300中,挑选用来生成变换矩阵的样本。关于如何挑选,主要遵循以下原则:1.所选样本具有代表性;2.所选样本间形态差异较大;3.所选样本的数量不要太多。所谓样本具有代表性是指,样本的分布形态是典型的分布,经常出现的分布,或者经常出现的异常型的分布。这样,样本会将散点图可能出现的类型尽可能的包含进去,从而使得将来生成的变换矩阵能更多地包含样本空间的信息。所选样本间形态差异较大这个原则保证的是所选样本间形态的多样性,从而使得所选样本间蕴含的信息更丰富。如果所选样本之间的细胞分布类型都很相似,那么生成的变换矩阵蕴含的信息也就很单一,在实际分类中,不利于散点图特征的提取。关于第三个原则,如果选择的样本数过于多,会使得变换矩阵的生成很复杂。同时需要更新变换矩阵的时候,周期过长。
在步骤S302中,将选择的血液样本的散点图粗糙化。所谓粗糙化,指的是将原来n*n范围的散点图均匀划分成m*m个格子,统计每个格子里落入的细胞个数,并最终形成粗糙的散点图矩阵。譬如,对于4096*4096(0<x<4096,0<y<4096)范围的散点图,将其x、y轴分别以32为步长单位划为128*128个格子,每个格子大小为(32*32),然后计算每个格子中落入的细胞个数。这样原始散点图矩阵就转换成了128*128大小的散点图矩阵。第i行第j列的矩阵元素的值表示的是落入第32-i行(从下往上数)第j列的格子的细胞个数。
在步骤S304中,步骤S302结束后,对应于选择的血液样本,得到了一系列粗糙化的散点图矩阵,记为:A1,A2,...Ak。将A1,A2,...Ak分别按照各自列的顺序顺次拼接起来,得到k个长度均为m*m的列向量:B1,B2,...Bk。记
X=[B1,B2,...,Bk]-[B,B,...B]; (2)
R=XTX; (3)
求出R的特征值向量:
λ=[λ1,λ2,...,λk];(λ1>λ2>,...,>λk) (4)
以及属于λ的特征向量组成的矩阵:
V=[V1,V2,...,Vk]; (5)
给定信息保留比例:p%,求r,使得
在步骤S306中,步骤S304得到r后,实际上已经得到了r个特征向量,这r个特征向量包含的信息量与原始挑选的血液样本散点图信息量的比不少于p%。
记
记
V*就是生成的变换矩阵。
这样以来,一个散点图经过粗糙化,并拉伸成列向量,通过变换矩阵处理后能得到一个低维的向量,一般是2到4维。这个低维向量在一定程度上刻画了散点图的分布特性,从而将复杂的图像特征用简单的向量表示出来。一个散点图对应着一个图像特征向量,如果图像特征向量之间相似(譬如欧式距离很近),则相应的散点图的形状也较接近,从而为血细胞分类提供了较好的属性,能够有效解决细胞数量较少,血细胞分布较为松散,细胞亚群分布形状异常,以及血液样本所含细胞数量虽然很多但是各亚群边界不明显,这些情况下的分类问题。
以上举的例子中是将散点图粗糙化成128*128的格子,实际上还可以根据需要粗糙化成其他尺寸的格子,挑选的生成变换矩阵的血液样本所遵循的原则以及数目可以根据需要灵活掌握。此外,粗糙化的散点图还可以拉伸成行向量,信息保留比例也可以根据需要设定成其他值,从而生成对应的变换矩阵。
需要指出的是,散点图粗糙化以及生成变换矩阵的作用是为了得到散点图整体的特征。而有很多种方法可以得到这种整体特征,上面提到的方法是其中一种基于主成分分析的KL变换算法。通过采用其他获取散点图整体特征的算法也可以实现按照本实施例的方法,包括但不限于小波分析,独立成分分析(ICA),模板匹配,费舍尔线性判别分析(FLDA)等方法。
图4描述了第二步即训练步骤的主要过程,通过挑选训练血液样本,训练得到支持向量机分类模型,具体如下所述。
在步骤S400,浏览血液样本库,挑选适合用来训练模型的血液样本,挑选正类样本的原则是参考图3,与图3形态类似的样本可以作为训练模型的正类,其余为负类。注意挑选出来的正类与负类样本数目之比不要过小。需要说明的是,挑选生成变换矩阵样本时,由于考虑的是所有类型的血样,所以挑选出来的样本形态更具多样性。生成变换矩阵的样本数量一定要比较少,所以最好挑选最具典型的血样。在步骤S402判断所选的某一样本是否是异常样本(如白血病等),是的话得到训练样本的正类,不是的话得到训练样本的负类。步骤S404完成的工作是针对得到的正类和负类训练样本,训练得到支持向量机分类模型,这是一个两分类的支持向量机模型,关于可以采用的支持向量机类型在实例二中介绍。步骤S406的工作是对得到的支持向量机模型进行分类测试,如果测试不满意重新回到步骤S400,如果测试满意则结束,得到训练好的支持向量机分类模型。测试满意的标准可以人为制定,譬如根据视觉经验和临床经验分类,将按照本实施例方法的分类结果的散点图与根据视觉经验和临床经验所做的分类进行对比,比较符合的即满意,否则不满意。
实例二:二维多分类(血常规白细胞分类)
在临床血常规检测中,白细胞可以进一步分为中性粒细胞(neutrophils)、嗜酸性粒细胞(eosinophils)、嗜碱性粒细胞(basophils)、淋巴细胞(lymphocytes)和单核细胞(monocytes)。图5是一例正常人的血液细胞检测结果的散点图,临床上需要对该散点图中的五种白细胞实现自动分类和计数。
图6描述了图1所示的第二步即训练步骤的主要流程,通过挑选训练血液样本,手动添加训练点,训练得到支持向量机分类模型。主要过程如下:
在步骤S600,浏览血液样本库,挑选适合用来训练模型的血液样本。在步骤S602判断选择的某一样本是否作为训练样本,遵循的原则可以参考第一步中挑选生成变换矩阵的血液样本的原则。步骤S604完成的工作是收集一定量的训练样本,开始不必收集很多,因为所选的样本很容易存在冗余。
在收集一部分训练血液样本后,可以手动在散点图上添加训练点,这是步骤S606的工作。之所以手动,是基于以下考虑:血细胞散点图各处密度不均匀,随机选取训练点的话会导致所选点集中在密度大的区域,这样,各个细胞亚群边缘部分的细胞往往会错分。手动选取的训练点坐标加上所在的血液样本的散点图属性共同作为这个血细胞的特征属性向量,以此作为支持向量机的输入。
有了训练点就可以对其进行训练得到支持向量机分类模型,这是步骤S608的工作。譬如可以采取C-支持向量机,C-支持向量机的模型如下:
(1)设已知训练集T={(x1,y1),...,(xl,yl)}∈(X×Y)l,其中xi∈X=Rn,yi∈Y={1,-1},i=1,...,l;在这里,xi即为Pro。
(2)选取适当的核函数K(x,x′)和适当的参数C,构造并求解最优化问题:
0≤αi≤C,i=1,...,l, (12)
得最优解
(3)选取α*的一个正分量 并据此计算阈值:
(4)构造决策函数:
单一的支持向量机一般是两分类的(范例一中可以采用这样的支持向量机模型),而白细胞基本分类问题是多分类问题。因此,为了解决多分类问题,可行的方法之一是构造一系列的两分类支持向量机。构造方法有一类对余类、成对分类、纠错输出编码方法等等;方法之二是改变支持向量分类机中的原始最优化问题,使得它能同时计算出多类分类决策函数。这样得到一个多分类的支持向量机。但是该方法一般计算量较大,适合于要分的类别非常多的情形。
下面以一类对余类为例,介绍如何构造一系列的两分类支持向量机。
设已知训练集为:
T={(x1,y1),...,(xl,yl)}∈(X×Y)l (15)
其中xi∈X=Rn,yi∈Y={1,...,M},i=1,...,l;首先,对所有的(i,j)∈{(i,j)|i≤j,i,j=1,...,M}进行下列运算:从训练集中抽取所有y=i和y=j的样本点,基于这些样本点组成一个训练集Ti-j。用求解两类分类问题的支持向量分类机(如C-支持向量机)求得实值函数gi-j(x)和判定x∈X属于第i类或第j类的分类机
然后,在需要对给定的一个测试输入x推断它属于M类中的第几类时,考虑上述所有的分类机对x所属类别的意见:一个分类机判定x属于第i类就意味着第i类获得一票,得票数最多的类别就是最终判定x所属的类别。
在步骤S610中,对得到的支持向量机模型进行分类测试,如果测试不满意则重新回到步骤S600,如果测试满意则结束,得到训练好的支持向量机分类模型。
以上举的构造一系列两分类支持向量机的例子是C-支持向量机,实际还可以用v-支持向量机。支持向量机的核函数可以用多项式核函数、高斯径向基核函数等,效果差异不大。参数C也可以根据实际需要灵活设定。
解决基本分类问题时,不仅可以用一类对余类方法,还可以用成对分类、纠错输出编码方法等等。
当然,也可以改变支持向量分类机中的原始最优化问题,使得它能同时计算出多类分类决策函数,直接得到一个多分类的支持向量机。
图7描述了第三步即分类步骤的主要过程,说明了如何应用训练好的模型来实现分类。主要过程如下:
在步骤S700中采集原始数据,比如各个通道的能区分不同细胞特性的数据。经过步骤S702得到粗糙化的散点图,如何粗糙化在第一步已经进行了交待。在步骤704中,通过事先存储好的变换矩阵对粗糙化的散点图进行变换以得到散点图特征属性向量,加上细胞通道的数据得到一个细胞的特征属性向量。在步骤706中,将细胞的特征属性向量输入事先训练好的支持向量机模型,从而得到细胞的分类结果。
上述方法还可以应用于两分类、三维或高维分类。
实例三:三维或高维分类
为了进一步得到血液细胞中各个细胞亚群(例如淋巴细胞可以进一步细分为T淋巴细胞和B淋巴细胞亚群),需要获取更多的检测信息。通常利用基于流式细胞技术的多色荧光分析进行分析。此时会得到多个维度的检测信息。
由于支持向量机分类器的特性,本实施例的基于主成分分析和支持向量机的方法更适合于这种高维度信号聚类分析。
如图8所示,关于每个血细胞可以得到的表示细胞不同特性的属性有三个或者更多时,可以有多种方法构造支持向量机的输入属性。由于支持向量机可以克服维数困难,一种最简单的方法是将细胞所有特性作为支持向量机的输入向量,构造实例二中提到的支持向量机分类器;另一种方法可以通过主成分分析将细胞各个属性压缩成个数比较少的几个新属性,从而构造支持向量机分类器。总之,一般的基于现有属性而得到新属性的方法都可以尝试用来构造支持向量机的输入属性。
如图9所示,是按照本实施例的细胞聚类装置的示意框图,包括生成模块900、训练模块902和分类模块904。其中生成模块900利用收集的血液样本生成变换矩阵;训练模块902利用选择的血液样本,通过训练得到支持向量机分类模型;以及分类模块904利用所述变换矩阵对原始数据粗糙化后的散点图进行变换,并加上细胞通道的数据得到细胞的特征属性向量,然后将该特征属性向量输入训练好的支持向量机模型,从而得到细胞的分类结果。
如图10所示,在一个实施例中,生成模块900进一步包括:选择用于生成变换矩阵的血液样本的单元1000;将选择的血液样本的散点图粗糙化的单元1002;压缩血液样本散点图的单元1004;以及构造散点图变换矩阵的单元1006。
如图11所示,在一个实施例中,训练模块902进一步包括:选择用于训练模型的血液样本的单元1100;判断所选血液样本是否是异常样本的单元1102,是的话得到训练样本的正类,不是的话得到训练样本的负类;针对得到的正类和负类训练样本,训练得到支持向量机分类模型的单元1104;以及对得到的支持向量机模型进行分类测试的单元1106,如果测试不满意则返回以重复上述步骤,如果测试满意则结束,得到训练好的支持向量机分类模型。
如图12所示,在另一实施例中,训练模块902进一步包括:选择用于训练模型的血液样本的单元1200;判断选择的样本是否作为训练样本的单元1202;收集训练样本的单元1204;在散点图上手动添加训练点的单元1206;训练得到支持向量机分类模型的单元1208;以及对得到的支持向量机模型进行分类测试的单元1210,如果测试不满意则返回以重复上述步骤,如果测试满意则结束,得到训练好的支持向量机分类模型。
如图13所示,在一个实施例中,分类模块904进一步包括:采集能区分不同细胞特性的原始数据的单元1300;根据所采集的原始数据,得到粗糙化的散点图的单元1302;利用变换矩阵对粗糙化的散点图进行变换以得到散点图特征属性向量,并加上细胞通道的数据得到细胞的特征属性向量的单元1304;以及将所得到的细胞特征属性向量输入训练好的支持向量机模型,从而得到细胞的分类结果的单元1306。
按照本实施例的细胞聚类装置,可以通过硬件、软件、固件、或者其组合来实现。按照本发明的上述教导,这种实现对于本领域普通技术人员来说是显而易见的,在此不做详细描述。
以上通过具体的实施例对本发明进行了说明,但本发明并不限于这些具体的实施例。本领域技术人员应该明白,还可以对本发明做各种修改、等同替换、变化等等,例如将上述实施例中的一个步骤、模块或单元分为两个或更多个步骤、模块或单元来实现,或者相反,将上述实施例中的两个或更多个步骤、模块或单元的功能放在一个步骤、模块或单元中来实现。但是,这些变换只要未背离本发明的精神,都应在本发明的保护范围之内。另外,本申请说明书和权利要求书所使用的一些术语以及采用的符号并不是限制,仅仅是为了便于描述。