第 3 章灾害节点属性的量化及分级方法第 2 章我们给出了灾害复杂网络的整体结构,在这种结构下,网络灾害节点是与具体的历史灾害记录相对应的,这就需要对这些历史灾害记录进行合理的属性定义和量化才能转化成有效数据。历史灾害记录数量庞大并且以描述性语言为主,只有确定合理的量化方案才能使得生成的数据使用起来科学、高效。本章首先针对灾害记录量化中比较关键的等级划分问题提出一种基于蚁群聚类的历史灾害分级方法;以地震灾害为例,基于混合模糊算法,针对灾种特殊属性量化问题提出一种判定历史地震烈度的方法。 3.1 以蚁群聚类为基础的历史灾害分级方法 3.1.1 研究现状分析我国具有悠久的历史文化和丰富的长序列资料库,各朝代正史都记载了各种灾难的产生和危害,为后人在灾害识别、防治方面提供了很好的理论实践参考,也得到了国内外研究专家的高度好评。国家减灾委指出,历史灾害信息平台是我国灾害空间建设的重要内容组成,随后与之相关的《国家自然灾害空间信息基础设施总体构思》也在2011 年 5 月正式提出[6]。由于科技发展的局限性,古代历史灾害记录大多以语言描述为主,缺乏具体的属性值和可比性。以“十二月戊戌,开封府陈留等六县水灾,诏免其田租”为例,这条较为典型的历史灾害记录仅简略交代了灾难种类、发生的时间和地点、政府反映等信息,缺乏关键的数据如具体伤亡和经济损失数据。由于涉及较多的人为观念,其数据量化难度高,不足以使人信服。根据现代翔实灾害记录衍生出的各类灾害分级方法与描述性的历史灾害记录兼容性很低,在灾害的还原选择以及量化上具有一定难度。与历史灾害记录相比,现代灾害分级方法的主要依据是客观准确的灾害属性统计结果,如伤亡人数、受灾面积、倒房数量、直接经济损失等,这些数据具有较高的量化程度和可比性。针对于此,神经网络[167]表现出了一定的优势,其能够有效地对非线性函数进行拟合,从而实现模式识别和聚类分级,在一定程度上降低了现代灾害记录分级方法[153156]的局限性。但是历史历史灾害数据挖掘与建模34 灾害分级没有准确先例,因此利用神经网络必须先通过专家进行人工分级,再对结果进行提炼,因此该阶段依然要受人的主观因素影响。由此,可将历史灾害归结为以下分级问题:(1)分级标准问题。由于不同专家各自评判的标准不同,会对同一灾害记录产生不同的评级结果。针对历史灾害记录的描述性和主观性,采用聚类法,能够摆脱传统的具体分级标准,从而提高数据的客观性。(2)数据量化问题。由于历史灾害记录描述格式的不规范,要求研究者不仅要确定什么信息能够代表灾害的本质特征,还要结合灾害的其他个性信息对其进行调整。(3)批量处理问题。处理数据量的大小是与分级方法的运算速度直接相关的,大样本会产生较低的运算效率,因此算法的时效性是历史灾害记录分级处理必须要考虑的因素。(4)专家监督问题。聚类结果离不开历史专家的认可,缺乏表述性的历史灾害数据系统更需要专家的意见。历史灾害记录具有主观性,如果专家之间无法达成一致,则一味依赖专家意见会导致分级过程缺乏客观性。针对这一缺陷,可以在大方向上采取专家的指导意见,对其加以权衡。与此相关新的灾害聚类分级方法有模糊聚类[158,159]、灰色聚类[160,161]等,但仍受主观参数和高度量化的灾害记录影响,如模糊聚类必须手动设置合适的 α 值。鉴于此,本章针对历史灾害分级问题采用先聚类再分级的方法。为了有效减免灾害分级流程中的主观因素,我们采用一种蚁群聚类算法自动聚类历史灾害记录,而灾害分级则是通过判断各聚类中心的大小实现,最终通过实验证明它的有效性。3.1.2 蚁群聚类思想按有关特性的相似程度,将物理或抽象的数据集合进行分组,这一过程被称为聚类。灾害分级问题就是一种层次聚类问题。聚类能够提高同一组中各数据属性的拟合率和不同组数据间属性的相斥率,这一点与灾害分级对等级内和等级间灾害数据属性的要求是一致的。 1991 年,蚁群算法[162,163]首次被提出,从此研究者根据观察蚂蚁行为提出了多个对应模型并被广泛应用于多个领域。孵化分类(brood sorting)行为是一种蚂蚁常见的群居行为,巢穴孵化区的中心放置着成束的蚂蚁卵和小幼虫,孵化束外围排列着最大的幼虫。1991 年,Deneubourg等人按照蚂蚁根据环境物品数量进行取舍的原理,对这一现象建立了一个模型[164166]。例如,一只蚂蚁很有可能灾害节点属性的量化及分级方法35第3章会将携带的一个小卵存放在相同卵密集的区域;与此不同的是,单独位于一堆小卵中的大幼虫被未携带任何物品的蚂蚁带走的概率会比较大。除此之外,蚂蚁几乎不会对物品进行取放操作。基于上述蚂蚁行为,本章从中提炼出一种蚁群聚类模型,以进行历史灾害分级。首先,依据专家意见,划分出四个灾害等级,分别为轻灾、中灾、重灾、特重灾,换言之,将历史灾害聚为四类,然后随机分配历史灾害数据到四个组中,引导蚂蚁进入组,将随机混乱的数据进行分门别类的整理和调换。同时仿照上述蚂蚁孵化模型,蚂蚁无论执行何种操作都不是确定性的,而是按照概率进行的。当蚂蚁面对多个组时,往往会针对被其认为最不整齐的组进行整理,但这一过程仍存在着一定概率,因此可以避免算法产生局部最优的问题,可以保证算法的公正性和客观性。Kmeans 聚类算法在很大程度上会受到初始聚类中心选取质量的影响,蚁群聚类算法则打破了这一局限。蚂蚁会依据各组混乱程度进行聚类中心的调整,能够很好地解决大样本问题。数量众多的样本可以产生层次明确的聚类中心,其产生的聚类结果也更有意义。 3.1.3 历史灾害记录的属性定义结合历史专家的意见,同时分析了大量历史灾害记录中的信息特征,并对所有灾害记录进行了标准化编码,整合出各条记录的灾害信息内容,主要包括以下 4 项属性:(1)受灾范围:指遭受灾害影响的地区,以县为单位,为了精确计量范围,我们通过GIS 系统实现了现代县制转化,量化程度较高,该项属性是不可缺省的。(2)物情:指灾害对房屋、庄稼等实物的影响,如“伤民田”、“水决三十里”和“颗粒无收”等。(3)民情:指灾难过后当地人民的状况信息描述,如“溺死人畜”、“民饥”等。(4)政情:指灾难过后政府的作为情况,如“祈祷雨泽”、“诏免其租”、“发仓赈济”等。“物情”、“民情”和“政情”可以大致涵盖每条历史灾害记录的基本灾情信息,但是并不是不可缺省的,实际上历史记录一般也无法全部具备上述 4项属性。为了使这三项属性能够正确发挥区别等级的作用,必须科学地定制出各项属性的编码方案,从而将这些历史灾害记录量化并批量载入灾害数据库。以“政情”属性为例,其可分为无记录、祈祭、遣官、减租税粮、免租税粮、赈济六个属性级别,若将其分别设置为 0、1、2、3、4、5 六个编码,则可将历史灾害记录中的诏历史灾害数据挖掘与建模36 免盐粮、诏免税粮、免粮、免征秋粮、免征田粮等描述归纳为“免租税粮”,以“4”进行编码。另外,实际灾情严重程度的上升幅度与 0、1、2、3、4、5并不是完全符合的,因此还需要结合专家的评估意见和聚类结果适当调整各等级的对应编码。属性值通过历史灾害的 4 个等级和 4 个数据属性实现了初步量化,为实现历史灾害数据的聚类提供了处理前提。在对实际历史灾害进行聚类时,4 项属性的权重是有所差别的。为了保证聚类的高质量,需要根据专家反馈意见和聚类结果进行权值的修改,换言之,对历史专家专业意见的汲取主要体现在灾害信息量化的过程上,专家的指导监督作用存在于大方向上,而非存在于快速自动化处理的聚类过程中。 3.1.4 蚁群聚类算法描述设历史灾害数据集合为S,数据属性为 p(本问题中p=4)项,S中的数据被随机分配为 k(此处 k=4)个组,那么每组有 tn(n∈[1,k])个灾害数据。算法具体流程如下:(1)数据预处理。前面已经介绍过,由于历史灾害记录的简略性,通常具有缺失属性值问题,因而必须对这些空值进行合理处理。可结合灰色关联系数定义,针对数据聚合性差这一问题进行处理和归一。具体如公式(3.1)所示。用 xni 代表第 n 个灾害数据的第 i 个初始属性值,初次处理后,生成 yni: minmaxmin 1 (2()()) ni niiii y xxxx=---(3.1)其中,xmaxi、xmini 分别为灾害数据集合 S 中第 i 个属性的最大值和最小值。(2)选出被整理组。蚂蚁按照公式(3.2)评估各个灾害数据组的不整齐度,用 chaosn(n∈[1,k])来表示,此组越不整齐那么相应 chaos 值越大,所以蚂蚁对该组进行操作的可能性就越大。第 n 个组的不整齐度表示为: 2 1 () n t in i n n xavg chaos t=-=å(3.2)其中, 2 1 p ij j xy==å表示第n组中第i条数据各属性的平方和, 1 n t nin i avgxt=æö=ç÷ç÷èøå表示第 n 组各 xi 的平均值,即 chaosn 表示第 n 组中各灾害数据属性平方和的标灾害节点属性的量化及分级方法37第3章准差。然后基于赌轮选择法[164],根据各个组的chaos值选择一个出数据组。(3)选出一个灾害数据。按照公式(3.3),蚂蚁在遴选出的组中,进行每个灾害数据对该组不整齐度的影响评估,可以用 influence 来代表,influence 值的大小和此灾害数据的影响度成正比,也就是说值越大的数据其被蚂蚁取出的机率越大。第 i 个数据在组中的影响力公式为: 2 () iin influencexavg=-(3.3)其中求得xi、avgn 的方法与第 2步一样。然后基于赌轮选择法,依据组中各个灾害数据的 influence 值挑选出单个数据进行重新归属。(4)选出归属组。按照公式(3.4)评估,用 similarityn(n∈[1,k])来表示蚂蚁所选出的灾害数据与各个组的拟合度,较大的 similarity值表示较高的拟合度,会增加该灾害数据放入对应组的概率。与第 n 个组的拟合度表示为: 2 1 () n in similarity xavg=-(3.4)其中求得xi、avgn 的方法与第 2步一样。然后基于赌轮选择法,就各个组的 similarity 值蚂蚁可以把选出的灾害数据添加到此组中。(5)选择蚂蚁。为了达到算法收敛的目的,单只蚂蚁是不够的,这里通过多只蚂蚁分别进行 2~4 步来对比效果,然后以公式(3.5)对每只蚂蚁整理的质量进行评估(用 fitness 表示)。fitness值与蚂蚁整理的质量成正比,值越高代表质量越好。然后将 fitness 值最大的蚂蚁的整理方案定义原聚类。第 n 只蚂蚁的整理质量公式为: 1 * n nn fitness tchaos=(3.5)其中 tn 为第 n 个组的大小,chaosn 为此组的不整齐值。这些值都是蚂蚁操作后更新的值。(6)算法收敛。对上述多只蚂蚁的整理行为进行迭代,直到达到算法终止条件,原则上此时蚂蚁选出的灾害数据不会再放到其他组,亦即聚类结果达到稳定状态。同时各组聚类中心的大小可以作为等级评定标准,即根据其大小顺序划分为轻灾、中灾、历史灾害数据挖掘与建模38 重灾、特重灾四个等级。蚂蚁的数据结构及算法流程伪代码能够更为方便地理解上述算法的实现过程。可将蚂蚁的数据结构定义如下: structure single_ant % 定义数据结构single_ant begin integer from % 数据出组 integer in % 被整理的灾害数据 integer to % 数据归属组 real fitness % 适应值 end single_ant ant[n] % 将蚂蚁数量设为 n 以下是算法的程序伪代码,将数据集分为 m个组,分别用 S1,S2,…,Sm表示。 Procedure AntClustering InitializeData() % 灾害数据预处理 while (not terminate) do % 未收敛会一直循环 bestß0.0 % 标记适应值最高的蚂蚁 for k = 1 to n do % 使