基于支持向量机的一般建筑震害预测方法研究
2010-01-28王彬彬赵勇强
苏 原, 王彬彬, 赵勇强, 吴 晟
(1.华中科技大学 a.土木工程与力学学院; b.控制结构湖北省重点实验室, 湖北 武汉 430074;2.武汉山海桥梁设计咨询有限公司, 湖北 武汉 430074;3.湖北中烟工业有限责任公司, 湖北 武汉 430040)
建筑物的群体震害预测是指对一个区域(城市或地区)的建筑群在预期地震作用下的破坏进行估计,给出每个预测单元中各类建筑物在每个震害破坏等级中所占的比例[1],为此,需要对抽样建筑物进行震害预测。传统的震害预测方法大多以建筑物的力学参数为基础建立模型进行单体的震害预测,计算有一定的精度,但对于城市中现有数量巨大的一般建筑的抗震能力进行震害预测,这样的单体建筑震害预测方法工作量巨大,显然是不可接受的。
目前,我国学者也提出了一些建筑群体震害预测方法[2,3],但这些方法中都存在权重的设置,使得预测过程需要人的干预,这样预测结果的准确性将依赖于使用者的个人能力和水平,具有一定的不确定性。因此找到一种既能对城市数量巨大的一般建筑物进行快速准确的震害预测,又减少人为干预的新的快速的建筑物群体震害预测方法,是很有必要的。为此,本文提出了基于支持向量机的一般建筑群体震害预测方法。
1 支持向量机的基本理论
1.1 支持向量机
支持向量机是机器学习的一种方法,其基本思想是根据给定的训练样本中的特征向量与类别之间的非线性关系建立支持向量机模型,用模型对未知样本进行分类或回归。Cortes & Vapnik 于1995年正式提出了机器学习领域中的重大成果——支持向量机 (Support Vector Machines,简称SVM)[4]。它的理论基础是以解决小样本情况下的机器学习问题为目标的统计学习理论(statistical learning theory,SLT)[5]。
1.2 分类函数
SVM最基本的理论是二值分类理论,其基本思想就是根据结构风险最小化原则,构造一个分类函数将两类不同的样本尽可能区分开来。对不同的样本,分类函数大致可以分为两类:线性分类函数和非线性分类函数。
其中,根据线性分类函数能否完全正确的将样本数据分开,又可将数据分为线性可分情形和非线性可分情形。一般的,如果给定的样本数据能够用一个线性函数(多维空间里即为超平面)完全正确的分开,就称这些数据是线性可分的,如果给定的样本数据不能够用一个线性函数完全正确的分开,则称这些数据是非线性可分的。
如果样本数据集利用线性函数不能进行较好的分类,则需要利用非线性分类函数(即构造非线性分类器)来对它进行分类。构造非线性分类器的方法就是先把数据映射到高维特征空间(含非线性特征分量),然后在高维特征空间中构造线性分类器,这就是SVM采用的方法[6]。
2 LIBSVM简介
震害预测问题是分类问题,本文主要介绍LIBSVM进行分类的原理。前面介绍了关于二值分类问题的基本原理,但由于建筑物在地震作用下的破环有多个等级,因此建筑物的震害预测属于多值分类问题,SVM采用构造多值分类器的方法来解决该问题。多值分类器的构造主要通过组合多个二值子分类器来构造多值分类器。这类方法目前主要的分支算法由Kressel[5]提出的1-a-1 (one-against-one)算法。
LIBSVM采用1-a-1算法构造多值分类器来解决多值分类问题。该算法对任意两个不同类别的样本构造一个SVM子分类器,这样对于k类样本就有k(k-1)/2个SVM子分类器,每个子分类器按照SVM的二值分类方法进行分类。其具体构造过程为:构造类别i和类别j的SVM子分类器时,在样本数据集中选取属于类别i及类别j的样本数据作为训练样本数据,并将属于类别i的数据标记为正,将属于类别j的数据标记为负。测试时,分别用k(k-1)/2个SVM子分类器对测试数据进行分类,并累计各类别的得分,选择得分最高者所对应的类别为测试数据的类别。
3 震害预测步骤
本文运行LIBSVM的平台是Windows XP,从命令列执行。本文选用的软件为libsvm-2.88、python26、gnuplot。LIBSVM进行震害预测的一般步骤主要包括:准备数据、缩放数据、选择最佳参数、训练学习样本获得支持向量机模型、测试模型、利用获取的模型进行预测。其中建立理想的支持向量机模型是运用该方法对建筑物进行震害预测的关键性步骤。建立理想的支持向量机模型首先要选择合理的样本。学习样本和检验样本最好从震害实例中选取,这样比较符合真实情况;采用其他震害预测方法得到的震害结果作为样本时,需要对样本进行合理筛选。同时样本应该有相当的数量,能够覆盖待预测的各种建筑类型和相关参数。其次是选择最优参数。本文采用的LIBSVM软件包拥有自行选择最优参数的程序,但并不是每次程序自动选择的参数都是最优的参数,如果利用检测文件对支持向量机模型检测之后发现模型的预测正确率不高,则需要重新选择惩罚参数C和径向基核函数的参数g来对学习样本进行训练,得到新的支持向量机模型,直到得到满意的结果之后,再用对应的支持向量机模型对预测样本进行预测。
4 基于支持向量机的震害预测模型
4.1 特征向量与震害等级的标识
基于支持向量机的建筑物震害预测方法的基本思想是通过从震害实例中提取的数据,利用支持向量机分析各种地震影响因素与震害等级之间的非线性关系并建立震害预测模型,然后根据得到的模型中的非线性关系对待测建筑的数据资料进行分析,从而判断出待测建筑物的震害等级。因此,特征向量与震害等级的正确选择是保证准确预测的前提条件。本文在考虑各种因素对建筑物震害的影响程度后,决定采用结构类型、建筑物所处场地类别、高度、地震烈度及建筑用途等因素作为样本的特征向量。
因为LIBSVM只能对数量化的数字信息进行处理,而建筑物的结构类型和用途是非数量化的向量,所以在利用支持向量机建立震害预测模型之前须利用数字对这两个特征向量进行标识。本文采用的标识数字见表1。
表1 特征向量的标识
对于建筑结构地震破坏等级的划分,我国己制定了相应的划分标准。该标准建议采用基本完好、轻微破坏、中等破坏、严重破坏和倒毁的五级标准来划分建筑结构的地震破坏等级[8]。因为震害等级也是非数字化的信息,所以同样必须利用数字对其进行标识,破坏等级分为5个等级,本文采用1~5五个数字标识。具体形式如表2所示。
表2 震害等级标识表
4.2 模型的建立与检验
4.2.1数据准备
本文从唐山地震[9]及海城地震[10]这两个历史地震中选取了35个震害实例作为建立支持向量机模型的学习样本和检验样本,每个震害实例都选取了结构类型、场地类别、高度、地震烈度及建筑用途等参数作为特征向量,建筑物遭受地震后的震害破坏等级为类别标识。将每组数据中的结构类型、建筑用途及震害等级按前面的标识方法进行数字标识,其中,前30组数据作为学习样本,后5组数据作为检验样本,按照LIBSVM要求的格式准备数据(见表3与表4)。然后分别将准备好的学习样本和检验样本以文本文档的形式存于c:libsvm-2.88windows目录下,其文件名分别命为xuexi.txt与jianyan.txt。
表3 学习样本
表4 检验样本
4.2.2模型建立
模型的建立由以下几个步骤构成。
(1)缩放数据:LIBSVM提供了对数据集进行统一缩放功能。要运行该程序,首先要从命令行进入软件所在的地方。命令列中输入cd c:livsvm-2.88windows,进入软件所在的文件夹下。本文将数据统一缩放到[0,1]之间,具体缩放程序为:
svm-scale-10-u1-s a.range xuexi. txt>xuexi.scale
svm-scale-r a.range jianyan.txt>jianyan.scale
程序运行后在c:libsvm-2.88windows目录下将产生多个文件。其中,a.range为缩放规则的文件名,xuexi.scale与jianyan.scale则分别为缩放后数据的文件名。
(2)参数选择:本文选择核函数为径向基核函数的分类模式,其中最重要的参数有两个,一个是惩罚参数C,另一个是径向基核函数的参数g,LVBSVM中运用交叉验证的方法选择来选择这两个参数的最佳值。选择程序为:
python grid.py xuexi.scale
输入程序后,系统将会自动搜索参数,需要说明的是,参数C与g都是以指数增长的,C的范围是2-5~215,g的范围是2-16~24,系统将在这两个范围组成的区域内,对两个参数进行网格搜索,哪组参数对学习样本进行训练的精确度最高便是最佳参数。程序运行结束后,c:libsvm-2.88windows目录下将产生两个新的文件:xuexi.scale.png和xuexi.scale.out。xuexi.scale.png为图形文件(图1),它显示的是参数的搜索过程及最优参数值;xuexi.scale.out文件则记录了每一组参数及其对学习样本进行训练得到的精度。从图1中可以看出,对该学习样本,最佳参数为:C=512;g=0.5。
图1 最佳参数C与g
(3)训练学习样本:利用上面得到的最优参数C与g对学习样本进行训练:
svm-train-c 512-g 0.5 xuexi.scale xuexi.model
程序运行后,c:libsvm-2.88windows目录下将产生文件xuexi.model,它表示训练后得到的模型文件。
(4)检验模型:利用检验样本对支持向量机模型进行检验:
svm-predict jianyan.scale xuexi.model jianyan.out
程序运行后,c:libsvm-2.88windows目录下产生文件jianyan.out,它为支持向量机模型对检验样本的预测结果,其与检验样本的实际结果比较如表5。
表5 检验结果
从表中可以看出,运用该支持向量机模型对检验样本的预测有4个结果准确,1个有偏差但偏差不大,说明该模型预测的精确度较高,可以用其对其他建筑物进行预测。
至此,支持向量机模型已经建立完毕,且通过检验表明该模型具有较高的准确度,可以用来对待测建筑物进行震害预测。
5 基于支持向量机的震害预测
本文对华中科技大学西七教学楼A区、图书馆南区,湖北省教委办公楼三栋建筑分别进行了单体建筑预测方法[8]和基于的支持向量机的在地震烈度为8度下的震害预测。三栋建筑的工程概况如表6。
表6 工程概况
基于力学参数进行的单体建筑预测方法得到的震害预测结果见表7;利用前文建立好的支持向量机模型进行的震害预测结果见表8。
通过使用本文建立的支持向量机模型对三个待测建筑的成功预测,我们可以看出,只要拥有足够的学习样本,基于支持向量机的震害预测方法就能够很好的对一个城市或区域的一般群体建筑进行震害预测。
表7 单体建筑预测方法得到的震害预测结果
表8 基于支持向量机预测方法得到的震害预测结果
6 结 论
基于支持向量机的群体震害预测方法具有以下优点:
(1)程序操作简单易懂。该方法中所使用的程序步骤主要包括准备数据、缩放数据、寻找最优参数、训练学习样本、检测模型以及进行预测,步骤简单易懂,极易上手。不需要了解高深的理论知识也可以进行预测工作,能够快速的推广。
(2)预测过程快速简单。准备好数据文件之后,程序的每一个步骤运行起来都很迅速,大大减少了等待的过程,提高了工作效率。和其他方法相比,大大提高了预测速度。
(3)预测结果相对可靠。只要学习样本能够覆盖预测样本的信息范围,就能建立精确地支持向量机模型,使得预测结果比较可靠。
(4)不需要人为干预。该方法在整个预测过程中没有需要人为设置的环节,对于相同的样本数据,任意的操作者都能得到相同的结果,不存在由于主观选择造成的不确定性,提高了预测结果的一致性。
虽然基于支持向量机的建筑物群体震害预测方法有多种优点,但是,目前该方法也存在了一些不足:
(1)参数的选择存在缺陷。参数的正确选择是准确预测的关键,虽然程序中能够自动寻找最优参数,但有时寻找出来的参数并不能得到较高的准确率。这时就需要工作者采用试用法来寻找最佳参数,给预测工作增加了一些困难。
(2)需要足够的样本。基于支持向量机的建筑物群体震害预测方法是根据学习样本的参数与震害等级之间的非线性关系建立的函数来对待测建筑做出预测。因此,学习样本越丰富,所建立的非线性关系就越精确,能够预测的建筑范围也就越广阔。
[1]胡少卿. 建筑物的群体震害预测方法研究及基础设施经济损失预测方法探讨[D]. 哈尔滨: 中国地震局工程力学研究所, 2007.
[2]郭小东, 苏经宇, 马东辉,等. 城市建筑物快速震害预测系统[J]. 自然灾害学报, 2006, 15(6): 128-134.
[3]王志涛, 苏经宇, 马东辉,等. 群体建筑物震害特征类比预测方法与应用[J]. 北京工业大学学报, 2008, 34(8): 843-846.
[4]Cortes C, Vapnik V. Support vector networds[J]. Machine Learning, 1995, 20:273-295.
[5]Vapnik V N. The Nature of Statistical Learning Theory[M]. New York: Springer Verlag, 1995.
[6]王国胜. 支持向量机的理论与算法研究[D]. 北京: 北京邮电大学, 2007.
[7]Kressel U. Pairwise classification and support vector ma-chines[C]// Scholkopf B, ed. Advances in Kernel Meth-ods-Support Vector Learning, MIT Press, Cambrifge, Mas-sachusetts, 1999: 255-268.
[8]尹之潜. 地震灾害及损失预测方法[R]. 北京: 地震出版社, 1995.
[9]刘恢先. 唐山大地震震害(第二册)[R]. 北京: 地震出版社, 1986.
[10]刘恢先. 海城地震震害[R]. 北京: 地震出版社, 1979.