知识探勘的利器-丛集算法 (1)
本文作者:admin
点击:
2008-02-01 00:00
前言:
不论是计算器应用领域或是生药医学方面,经由知识探索来了解数据中隐藏模式是很重要的一项研究,因为数据的隐藏模式分析对于发现信息的新发展乃甚是医学界的药物作用与治疗方式,经这几年的研究发现其具有很重要的关键地位。但数据的隐藏性分析却因为常涉及高维度数据部分,而使得人类不易直接观察得知其中的关联性,本文中我们将焦点放在知识探索系统里面的一项非指导式知识探索方法-”丛集算法”以及其目前已获得的一些重要应用成果。
知识的探索(Knowledge Discovery)对今日及往后的科技发展而言是一个重要的研究议题与发展领域,正如我们尝试去找寻一些问题答案一样,我们基于本身既有之知识与周边所有的数据(信息),为这些问题定下一个暂时可接受的理解答案。
2002年在新加坡举行的模糊系统与知识探索国际研讨会(Fuzzy Systems and Knowledge Discovery,FSKD)尝试将知识探索领域中的分类(classification)及丛集化(clustering)技术与运算智能中的模型及预测方法建立起一个连结。即便至此,此方面的工作方兴未艾。其中在知识探索方法里面之非指导式的数据分析技术,非常倚重丛集化技术的发展(例如:自我组织特征地图(Self Organizing Feature Map ,SOFM)便是其中一项著名的丛集化数据方法),因为这些数据对我们来说其关系的探索已高于我们所能直接观察的维度。不被人类所理解与应用的数据,对提升人类对问题的看法帮助甚小。
不论是计算器应用领域或是生药医学方面,经由知识探索来了解数据中隐藏模式是很重要的一项研究,因为数据的隐藏模式分析对于发现信息的新发展乃甚是医学界的药物作用与治疗方式,经这几年的研究发现其具有很重要的关键地位。但数据的隐藏性分析却因为常涉及高维度数据部分,而使得人类不易直接观察得知其中的关联性,即使它已广被用在各种领域(例如:信息科学、地理环境数据探索、气象科学、生医制药、甚是生物信息学领域…等等),本文中我们将焦点放在知识探索系统里面的一项非指导式知识探索方法-”丛集算法”以及其目前已获得的一些重要应用成果,而对于其与模型及预测之间的连结研究于此只能暂时割爱。
何谓数据多样性与其分析方法
所谓的”资料多样性(diversity of data)”在人类统计学上之意义,乃指数据实体在非恒等(non-identical)或数值上不等(numericallity distinct)条件下所具有的彼此关系。换句话说,这些资料可以依据我们所要表达的方式,而以文字、图画、表格、图表、统计或是其它视觉方式加以呈现,但不管怎样的方式呈现,其可能来自相同的数据群集里之不同数据个体,或是根本就分属不同数据属性群集。研究这些资料多样性的背后意义,无非是想要更了解数据背后的万物运作基本原理。这些万物的背后真理可能是上天的智慧所在,也是人类不停追求的终极知识,更是展现了我们对问题思考所能具备的最高维度。
我们对于相同的一个资料可以决定以任一种资料表现方式加以呈现,同理,造物者是否也以它所欲表示的方式呈现万物运行之理?这对人类而言,充满了极高的挑战性,因为人类许多思考维度往往会局限于自身所处空间(例如:位于二度空间者无法想象三度空间的样子,位于三度空间者无法想象四度空间的样子…以此类推)。正因为这种时空上的自我能力限制,人类了解周遭环境的历史发展里总是先以分类(classification)方法来区别问题种类之后,再进一步分析问题的深入特征以了解问题核心。因此为了学习新事物或了解新观念,人类总是先尝试找出可用以描述这些事物的独特特征,并将这些独特特征与我们已知事物或现象里具备的特征作比较,然后基于这些比较的”相似性(similarity)”或”相异点(dissimilarity)”,依据某些条件标准或规则加以一般化或用其它方式予以更精确的逼近描述。但这种分类方法对于低维度的数据分析尚能应付,如果数据间的关系的维度更高,则传统分类方法对此高维度的相关性分析能力便会局限于运算能力与理论发展而变得不可得知。
因为高维度数据间的彼此关系不易使用直接观察法得知,故为了了解这些数据的关联性,我们需要发展许多新的运算理论试着去解释这些高维度数据之间的关系,在非指导式的数据分析方法里面,其中一个获得普遍肯认的方法便是所谓的”丛集算法(clustering algorithms)”。好的数据分析技术在了解各种现象的过程里,往往位居解决问题之首要地位,并且藉由其所形成的许多指导原则,将有助于我们解决未知的事项或问题,丛集算法的发展便是在此种背景之下诞生。但丛集分析早期所探索的乃以使用少数或其它非先验(non-prior)知识为主,后来这种技术被广泛用在各种通讯领域的研究里。
不过截至目前为止如果依据B. Everiff的看法,对于丛集算法的真正意义其并无一致公认之定义存在。虽然未能有明确定义存在,但目前对于丛集技术的应用却颇为踊跃。在此,应值得注意的是,丛集化不等于”多维度缩放(multidimensional scaling)”或所谓的”知觉对映(perceptual maps)”,这些概念在认知上是有区别的,其更深层的意义我们将于稍后与各位读者分享。正因为资料分析是了解并解决问题的第一关,而资料分析里的第一个工作便是对问题特征进行分类,这个分类工作依据是否需要先验知识而可以再分类成指导式与非指导式的分类法,这些数据分析方法也变成为一个丛集算法的核心工作,以下我们针对资料分析与丛集化的工作做一简要说明:
一、指导性与非指导性分类法
既然分类是人类对于了解未知事件的最直觉反应,那依据目前人类使用的分类方法,以其是否需要指定新的输入给一个有限的离散”指导性类别(supervised classes)”或”非指导性类别(unsupervised classes)”中的一个类型,而可以区分为”指导性分类法”与”非指导性分类法”这两种基本分类法。前者乃以一个预定义模版来寻找可能发生的模版与新事件之间的对应关系,后者乃以定义规则方式来演绎输入数据,以取得可能存在的模版对应,因此它又被称为”探索式分类法”。此两种方式的说明容概述如下:
1.指导性分类法
指导性分类法,顾名思义其需要搭配已知的经验知识(即是需要预先定义数据模版)来进行分类推测。换句话说,在指导性分类法里,其输入数据向量集合(例如:,其中d表示输入的空间维度)会与一个有限离散类别标记(discrete class labels)的集合(例如:,其中C表示类别型态之总数)来对应(即是需要一个预定模版的存在,以反应这些输入对应),并可用一些数学函数表示式来加以模型化,例如:,其中p表示”调整参数(adjustable parameters)”。这些参数值的最佳化乃由一些”归纳算法(inductive algorithms)”中的定制化指标(inducer)来完成,这种指标的设立目的在于取得一个输入/出样本中之”最小经验性风险”,例如以表示其中(其中N表示数据及内的有限候选数据集合)。当指标达到收敛(convergence)或终结时,此时便需要一个指标分类器来协助分类。
2.非指导性分类法
另一种和指导性分类系统不同者,称为”非指导式”的分类系统。这种分类系统不需预先定义数据模版,因此它又被称为”探索式数据分析(exploratory data analysis,EDA)”或”丛集化系统(clustering systems)”,属于非指导式知识探索技巧中的重要方法。因为这种系统内部并无预先定义的数据可用,因此V. Cherkassky及F. Mulier(1998)等人便认为这种系统的目的,在于区隔一个有限的未标记数据集到一个有限的隐藏数据结构中,而非提供一个从相同机率分布所产生的一个未观察样本之精确特征性。
也就是说,其重点在于将未标记数据与一个已知的数据结构产生对应关连。如依据此看法,可使丛集系统的任务暂时摆脱机率密度函数评估上的非指导式预测学习上问题(例如:向量量化)以及最大熵值(entropy maximization)的框架之外。在一般经验上,指导式方法会比非指导式方法要容易了解一点(也就是说,要找出一个近似精确的演绎规则并非易事)。因为这种指导式方法所依据的预定模版,乃多基于我们的先验知识,故该方法又称为”非预测式的丛集化技术(nonpredictive clustering)”,其乃是一种自然的主观过程(subject process)。在1981年时E. Backer及A. Jain便曾指出在这种丛集分析里,一群对象可以基于一种主观性的相似度(similarity)(看他们所感兴趣部位是哪些)的选择测量,进一步被切成更多或更少同构型的次子群(subgroups)。换句话说,同一次子群内对象彼此间的相似度会比不同次子群内与其它对象之间的相似度要更高(即是俗谚:”物以类聚”,也就是”对象模式(object patterns)”相似)。丛集化算法(clustering algorithms)的目的之一,便是将数据分割成某些数目之物以类聚丛群(clusters),例如:群、次集合或目录类别。许多研究学者在描述一个丛群时,主要是以”内部同构型(internal homogeneity)”与”外部区别性(external separation)”作为分类依据。也就是说一个好的分类理想应具备丛集内部最小化与丛集间的距离最大化,如图1。
利用图1这种方式,便能以相似度与差异性(dissimilarity)来明确而有意义的做更进一步的解释。1997年在P. Hansen及B. Jaumard等人的研究里,一些型态的丛群甚至还可以更精确的以数学方式加以描述。依其意思也就是说,如果以X表示一个输入模式的集合,其中X包含许多次集合,即是,而每个次集合又可能有许多子集合(即是(d表示实数空间之维度)),对此每一个测量便可被称为是该输入模式的一种属性(attribute)、维度或变数。因此丛集算法之精确分群是一项困难的工作,一般而言这种分群工作可以分成”部分丛集法”与”阶层丛集法”。其中以部分丛集法技术最为困难,此涉及到L. Zadeh所谈的”模糊集合理论(fuzzy set theory)”,而此方法便是所谓的”模糊丛集化法(fuzzy clustering method)”。在这种丛集法里面每个模块只属于一个丛集(cluster),或者也可以利用会员的方式让该模块属于所有丛集。例如:令表示在第i个丛集内的第j个物件之会员系数,使其满足以下两个限制:
也就是说在分割丛集时,系统会尝试去搜寻一个输入模式X的K部分(K-partition)以表示,其中,使其满足以下条件:
(1)
(2)
(3) 及
因为部分丛集法在原理的了解与实作上并不容易,因此另外一种较容易实作之”阶层式丛集法”便成为许多人的最爱。在这种方法里面,系统尝试去建构一个类似树状的X巢状结构分割,使其其中并满足。如果,表示对所有而言,或。在本文里面,我们关心的焦点会放在阶层式的丛集法上。正因为丛集的分析攸关潜在的资料关联性是否存在的问题,故其特征的选取要尽量用足以反应物类差异的特征为之。而一般丛集的分析(cluster analysis)有4种基本步骤:
a.特征撷取(feature extraction)
b.决定适当的丛集化算法(包含算法设计与选择)
c.丛集确认(cluster validation)
d.结果解释(results interpretation)
此其顺序可如图2所示。
二、特征区别性
要在一群候选数据中取得足够区别彼此的特征,是进行对象辨识中一项很重要的基本工作,此便是所谓的”特征区别性”。在大多数的情况下,原始特征并不足以被计算机视觉用来区别不同对象。因此我们常须将这些原始数据,透过转换的方式撷取足够多的区别组件(或称”特征要素”)后始能为系统所能辨识。职是之故,在找寻足以区隔的撷取特征之前,选择特征所能适用的转换是一项很重要的前置工作,此便是所谓的”特征选择(feature selection)”。特征的选择与特征撷取,对丛集化(clustering)的工作与应用有着决定性的影响力。适当而精简的特征,可以让系统分类的工作量减少很多(即是有效降低数据维度),并可简化次分节(subsegment)的设计过程。一般来说,一个理想的特征除了应该要能被用已区别属于不同丛集(clusters)的模式(patterns)之外,还要方便被撷取以及解译特征,并使其受噪声的影响要能降到最低始足当之。但在实务应用上常会发现,这些要件往往是鱼与熊掌不可兼得,因此理想特征往往是可遇不可求。
三、决定适当的演算方法
问题是否能被顺利解决与方法的选择之间具有微妙的关联性,尤其是要分析那些具有大量隐藏模式的高维度数据而言。因为不同算法的分析方法多有所出入,即使是相同算法,如果参数设定不同,亦会有不同结果。在实务上也发现,即使是相同算法与相同参数设定,相同的输入亦可能会出现不同输出的结果。由此观之,丛集化算法(clustering algorithms)的选择亦非是一成不变的,其往往需要依据使用的情况来设计,当然亦可选择现存的算法来使用。也就是说,丛集化方法可以是随意的且目前已有许多丛集化算法被发展出来,用已解决各种特异性领域(specified field)问题。不过目前并未出现万能解法,可以同时解决各种问题。因此不同方法就会形成不同的分类结果与丛集结果,试分辨以下的丛集数(如图3)。
在图3里面,请注意到多边形的边数与星状体的形状,此表示了对象的模糊度。因为丛集算法的一些参数与规则设计的关系,有些数据对象内的关系并不是那样可明确被描述。因此万能解法的发展就技术面而言是非常不容易之事,因为每一种丛集化算法都有其应用上的限制存在,这表示所有在发展此类算法时,没有人可以同时兼顾所有可能的问题与其所应具有的特点,每一种算法都只局限在特定情状下,才能有效作为适合分类的手段。因此在一般实务应用上,丛集化演算步骤的选择通常结合了对应的”邻近测量方法”以及重要的”功能建构”议题。几乎所有的丛集化算法都是与某些预定的邻近测量方法相连结(不管是以明确的或是不明确的方式),甚至有些丛集化方法则直接在邻近测量矩阵上运作。因此邻近测量方法的选择是一项形成丛集化群组与否的重要关键依据,换言之,它涉及了这些特征是否可以加以组合并群组化成很明显的区别模式。一旦适合的邻近测量方法已被选择,丛集化关键功能的建构,将会将丛集群组之形成视为成一种最佳化的问题来处理。
四、丛集确认(cluster validation)
对使用者而言,有效率的评估所要使用算法以及规则是很重要的,因为它对于使用该算法所得出之丛集化结果,提供了使用者一个重要的信赖度(confidence degree),而此部分也是丛集分析里面最困难的一个部分。这些评估方法必须要是可被观察且中立评断的,以避免在使用评估方法时,该方法已对某些算法有内定偏好存在,而影响使用者的客观评断(例如:一部电影名为”风云人物(man of the year)”中的选票系统一样)。而有关于丛集化算法的测试规则一般有几种常用者,例如:外部索引(external indices)、内部索引(internal indices)以及相对索引(relative indices)…等等。以外部索引(external indices)、内部索引(internal indices)以及相对索引(relative indices)来说,这三种索引方式定义了三种型态之丛集化架构,分别是分隔丛集法(partitional clustering)、阶层丛集法(hierarchical clustering)以及个体丛集法(individual clustering)。不过,对任一给定的资料集(data set),不管其间是否真有差异结构存在,每一个丛集化算法都会分割样本(division)。不同的丛集化算法,往往会产生不同的丛集结果此乃意料中的事(因为每一种丛集方法只针对某些特定情状适用)。但令人难以捉摸的是,即使使用同一种丛集化算法,其也会因为参数设定的差异以及输入数据的顺序不同,而产生不同的最后结果,即使我们使用内外交攻的测试方法亦同。
虽然我们可以依据一些环境变量订立所谓的外部指标(external indices),使其基于某些预先指定(prespecified)的结构来反映出的一些数据优位(prior)信息以及可被当成有效丛集化解法之标准。或者我们也可以建立内部测试流程(internal test),使其在缺乏外部信息情况下依旧可依据一定规则(例如:先验知识(prior knowledge))进行运行。或者我们可以两者都采用,并让这些测试直接从数据里去检验可丛集化结构(clustering structure),并利用相关的规则放置,来强调不同的可丛集化结构以作为决为定哪一个对象是具有启发特征(reveal features)的参考。因此,要了解算法所选出的结果,可以从数据中所隐含之丛集数目来着手,不管该丛集是有意义或仅是人工噪声,或选择该丛集化算法之背后动机等等,来进行体系了解以供我们初步的分析使用。但如果在测试中没有出现预期应有的丛集结构,那有两种可能原因,一种是该数据中根本没有丛集结构之存在;另一个可能,则是我们对于该数据中所应出现的丛集结构太过自信。
五、解释结果
实验结果须经正确诠释才能使我们更了解其所代表的意义,但问题是何者才是正确诠释?虽然目前丛集化技术已被广泛用在各种不同的应用领域,例如:机器工程、电子工程、机器学习、模式辨识、生药领域或是人工智能…等领域,但人类对于有效且迅速的可丛集化方法依旧处在探索阶段。在某些方面来说,丛集化技术有时亦被称为”数值分类学(numerical taxonomy)”、”象征理论分析(typological analysis)”、”切割分析法(partition analysis)”或是”非指导性学习法(unsupervised learning)”…等不同名称。这些不同名称的多元性,反映出了丛集化技术在应用领域里所占有的特殊地位,讲白话一点,就是在试着归纳分析上帝所创造之各种方程式。正因为丛集化的技术发展,主要是被应用在解决某些特殊领域中的一些问题上,此也直接或间接影响了其广泛性的是用目的,换言之,在其它问题上面,通一种丛集化的算法可能因无法满足其它限制条件而会影响其执行效能。例如:一种基于欧式(Euclidean)几何测量的K-means算法,因为其倾向产生超球面丛集(hyperspherical clusters),但此时如果有其它真实丛集以其它几何形式存在,K-means的方法可能就会变得没有效率,在此case下我们往往需要重新resort到其它策略里,这种情况对于混合模型(mixture-model)丛集化算法的情形一样适用。
有鉴于此,丛集化(clustering)的终极目标是要提供使用者一个有用的数据洞察力,让使用者可以很有效的利用现有资料解决问题,甚至进一步分析实验资料中所能进一步撷取的知识可信度。不过丛集分析(cluster analysis)常非单一步骤可成之事,在许多情况下,它需要一连串不断的重复试验方能有成。目前并无一个普世可用的有效规则,可以引导我们做适当的特征选择以及丛集化策略。也就是说没有所谓正确的诠释方法存在,虽然我们尝试以多方验证的方式解释其数据结果,并且这种验证规则(validation criteria)虽然在丛集化解法上多少提供了我们对质量上的洞察力,但是要如何选择适当的规则,仍是许多人在遇到问题时所必须面对的第一道难关。
各类的丛集算法与基本理论
和兴起于世界第二次大战而目前非常热门的RFID技术一样,事实上丛集化算法之发展已有一段很长的历史,甚至可以追溯到古希腊三哲之亚理斯多德(Aristotle)时代。若将时间拉近,近代的丛集化演算技术(例如:模式辨识)则使起源自统计概念,之后才发展到丛集分析(cluster analysis),最后才又演变为数学上规划策略(mathematical programming scheme)方面的问题。在一些较为复杂的理论里面,图形理论(graph theory)与模糊集合(Fuzzy Set)理论大约从1980年代开始便常被大量使用于各种领域,尤其是在丛集分析(clusters analysis)上面。而其它相关技术在此方面的应用,乃是最近一、二十年之间的事。
但是值得我们注意的是,这些后起之秀(后来出现的新技术)同时可作用在阶层式丛集法或是部分丛集法上(待后叙),这些新技术的发展,不只对信息科技有许多影响,同样的,医学与生化等领域亦蒙受其利,有关这些应用例子目前已成为另一波研究主流。后来到了2001年的时候,E. Kolatch将丛集化算法(clustering algorithms)之应用放在空间数据库(spatial DBs)上讨论,并藉其探索信息索引(information retrieval)的方法,而P. Berkhin则是将丛集化技术扩大应用于数据探勘(data mining)领域。丛集理论除被用于计算机科学领域外,其它像是生医信息亦对丛集化技术多有倚重,例如:有关DNA微数组(DNA Microarrays)分析基因表现信息差异之丛集技术与相关应用例子,可在D. Jiang、C. Tang及A. Zhang(2004)发表的研究资料或在S. C. Madeira及A. L. Oliveira(2004)所发表的资料里找到相关例证。
目前大多数丛集化算法的基础乃采”邻近测量法(proximity measure)”,而在讨论上首先我们将先进入古典部分丛集法以及阶层式丛集法,之后再进入讨论变异度较大的丛集化算法技术与理论,例如:结合搜寻方法的图形理论、Fuzzy Set理论以及类神经网络理论(neural networks theory)…等等。有关丛集化算法应用经验方面的结果可以参考A. Raubor、J. Paralic以及E. Pampalk所发表的相关研究资料。此外在1997年时,P. Scheunders也曾基于运算时间的需求以及可能获得最佳化的问题上,比较了数种可用于彩色影像量化的丛集化技术。演变至今,一些目前较常见的重要丛集化算法主要有以下几种常见方法:
1、距离与相似度测量法
2、阶层式丛集法
● 同化法(agglomerative)
● 分化法(division)
3、平方差(squared error-based)的丛集法
● K-means
4、混合密度(mixture densities)之PDF(probability distribution function)评估法
● 高斯混合密度分解(Gaussian Mixture density decomposition,GMDD)
5、图形理论式(graph theory-based)丛集法
● CAST(cluster affinity search technique)方法
● Chameleon方法
● HCS(highly connected subgraphs)方法
● CLICK方法
6、结合搜寻技术(search techniques-based )之方法
● GGS(genetically guided algorithm)方法
● TS(Takagi-Sugeno)丛集法
● SA丛集法
7、模糊理论(Fuzzy theory)
● FCM(fuzzy c-means)方法
● FCS(fuzzy c-shells)方法
● MM(mountain method)方法
● PCM(possibilistic c-means clustering algorithm)方法
8、类神经网络方法(neural networks-based)
● ART(adaptive resonance theory)方法
● SART(simplified ART)方法
● LVQ(learning vector quantization)方法
● SOFM(self-organizing feature map)方法
● HEC(hyperellipsoidal clustering network)方法
● SPLL(self-splitting competitive learning network)方法
9、核心法(kernel-based)
● KKM(kernel K-means)方法
● SVC(support vector clustering)方法
10、循序数据之丛集化
● 统计序列丛集法(statistical sequence clustering)
● 序列相似度法(sequence similarity)
● 间接序列丛集法(indirect sequence clustering,ISC)
11、大型资料集(large-scale data set)丛集化
● BIRTH法
● CURE法
● ART法
● CLARA法
● WaveCluster法
● DBSCAN法
● DENCLUE法
12、数据可视化与高维度数据分析
● ICA法
● LLE法
● PCA法
● CLIQUE法
● ISOMAP法
● OptiGrid法
上述各种方法虽然看似杂论而无所适从,但一个粗略而大家都同意的分法,就是基于丛集(clusters)所具有的属性,而将其分类为”阶层丛集法(hierarchical clustering,HC)”方法与”部分丛集法(partitional clustering,PC)”方法二种。而且各种不同的丛集法所采用的理论观点均有所相似与差异之处,并且对一个丛集化算法而言,不同的起点选择与规则,往往就会产生不同的分类方式。不管是从单体丛集(singleton cluster)或是包含所有个体之丛集,阶层式的群组数据对象乃是其执行分割后的结果,而部分丛集法通常是直接分割数据使之成为某些预定(prespecified)不具阶层结构之丛集数目。