梅文涵1 杨建喜2
(1武汉轻工大学数学与计算机学院 湖北 武汉 430023 2重庆交通大学 重庆 400074)
摘 要:针对桥梁健康监测获取海量数据却无法实时精确地监测评估桥梁结构状态的困难性,本立足数据挖掘算法理论,在Hadoop平台下运用KNN文本分类算法对桥梁结构缩尺模型加速度数据进行分类分析,采用分布式文件系统HDFS对监测数据进行存储和访问,应用Map/Reduce并行计算框架对桥梁各环境参数进行计算,并据此判断监测点属于何种工况,实现了桥梁监测海量数据的存储、访问、分类以及桥梁结构健康状况的判别,通过实验室缩尺模型工程实例验证了理论的有效性。实验结果表明,与传统的串行分类算法相比,基于Hadoop平台的并行分类算法具有较好的扩展性,并取得了基于大数据理论的桥梁监测技术研究的革新。
教育期刊网 http://www.jyqkw.com
关键词 :Hadoop平台;大数据;KNN文本分类算法;HDFS
中图分类号:U445 文献标识码:Adoi:10.3969/j.issn.1665-2272.2015.05.036
0 引言
随着桥梁事业的蓬勃发展,多数桥梁上建立了健康监测系统,可以通过传感器获取各种环境下的反映结构响应行为的信息,期间从各个监测点收集的数据量可达到GB级,而面对海量数据却不能及时得到反映桥梁结构状态的有效信息,桥梁结构监测系统的分析与处理不能及时完成,大数据概念和大数据技术的适时出现提供了一个分析处理桥梁监测历史数据的途径。Hadoop作为一个开源的云计算平台提供了分布式文件系统HDFS和并行编程模型Map/Reduce,以其高容错性、高伸缩性等优点允许用户将Hadoop部署在大量廉价的硬件上,人们可以充分利用集群的存储和高速运算能力,完成海量数据的处理,其中包括海量文本数据的分类问题。分类算法是一种重要的数据挖掘算法,该模型通过对海量样本数据进行训练能把未知类别的样本映射到给定类别中的某一个,以此判别桥梁状态所属类别,K近邻(K-Nearest Neighbor,KNN)文本分类算法是基于训练集的文本分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
云计算提供的海量数据存储和分布式计算能力在数据挖掘以及相关领域中是一种非常受青睐并且有效的方法,结合大数据技术和数据挖掘算法—KNN文本分类算法进行桥梁健康监测,在Hadoop平台下运用KNN文本分类算法对桥梁结构缩尺模型加速度数据进行分类分析,采用分布式文件系统HDFS对监测数据进行存储和访问,应用Map/Reduce并行计算框架对桥梁各环境参数进行计算,使用分布式文件系统Hadoop Distributed Filesystem来存储原始文档(已分类的数据)和待分类文档(监测数据),将文件读写和分布式并行计算框架MapReduce相结合实现KNN文本分类,将监测点的监测数据分到已有的工况中,并据此判断监测点属于何种工况,以便采取相关措施对桥梁进行维护,以此来探索基于大数据技术的桥梁监测分析处理的方法。
1 大数据及其应用平台
“大数据”是一个体量很大,数据类别多样的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取、管理和处理,主要具有数据体量巨大;①数据类别大; ②数据来自多种数据源, 囊括了半结构化和非结构化数据; ③数据处理速度快,在数据量非常庞大的情况下, 也能够做到数据的实时处理;④数据价值密度低,价值密度的高低与数据总量的大小成反比。如何通过强大的机器算法更迅速地完成数据的价值“提纯”并通过对海量数据进行分析获得有价值的数据成为目前大数据背景下亟待解决的难题。
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台及分布式处理的软件框架,主要用来处理大量数据,它实现了MapReduce一样的编程模式和框架,能在由大量计算机组成的集群中运行海量数据并进行分布式计算。处理的海量数据能达到PB级别(1PB=1024TB),并可以让应用程序在上千个节点中进行分布式处理。以Hadoop分布式文件系统(HDFS,HadoopDistributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。HDFS的高容错性、高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式系统;MapReduce分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,所以用户可以利用Hadoop轻松地组织计算机资源,从而搭建自己的分布式计算平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。MapReduce 是大规模数据(TB级)计算的利器,Map和Reduce是它的主要思想,来源于函数式编程语言,Map负责将数据打散,Reduce负责对数据进行聚集。它的流程如图1所示。
2 K近邻文本分类算法
K近邻(K-Nearest Neighbor,KNN)文本分类算法是基于训练集的文本分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:计算一个点A与其他所有点之间的距离,取出与该点最近的k个点,然后统计这k个点里面所属分类比例最大的,则点A属于该分类。根据加权距离和判断测试样本所属的类别的具体过程如下:
假设给定有m个训练样本集D,每个样本具有n个属性,di=(σi1,σi2,…,σin),其中i=(1,2,…,m)表示第几个训练样本。
(1)设定k的值,k最近邻的数量;
(2)把测试样本表示成测试文本向量X(ω1,ω2,…,ωn);
(3)根据下式计算测试样本与训练集中所有样本的相似度:
公式(1)中di为训练样本,X为测试样本。
(4)对根据步骤(3)计算出的m个相似度进行排序,选出k个最大值,作为X的近邻;
(5)根据公式(2)收集这k个最近邻的类别,
公式(2)中X表示测试样本,sim(X,di)为相似度计算公式,y(di,Cj)为类别属性函数,即如果di属于类别Cj,那么函数值为1,否则为0。
(6)对步骤(5)计算出的值排序,将测试样本分到值最大的类别中去。
3 工程实例
3.1 实例模型
本次工程实例根据云南黑冲沟特大桥全桥作为原型建立,使用的数据是由桥梁实验室的缩尺模型上建立的监测系统收集到的,原型立面图(见图2)。
试验获得以下三种工况的加速度时间序列:工况一,跨中无裂缝,模拟无损伤情况;工况二,跨中具有0.1mm裂缝,模拟有损伤情况;工况三,跨中有0.12mm+0.03mm两条裂缝情况,模拟损伤加剧情况。
根据本次动力学试验的研究目的,确定试验的主要测试内容为模型结构关键部位加速度,该测试项目可采用压电加速度传感器进行量测,采用重锤敲击的方式,给模型提供激励,来模拟完成脉动试验,采样频率为18.8Hz,在激振器开始激振5s后进行采样,采样时间为50s,获取各个测点的加速度数据,特征选择方法采用文档频率,k取30。
3.2 文档预处理
本次工程实例的样本数据是通过缩尺模型重锤敲击获取的加速度数据,监测系统收集了不同工况下的监测数据,对损伤前即健康状况,损伤后0.1mm裂缝和损伤加剧0.12mm+0.03mm裂缝进行样本数据训练分析,获取不同的损伤情况下各个监测点的分类情况,得出每个监测点的损伤情况,实验选定0.12mm+0.03mm两条裂缝情况下采用小车激励的方式获取该工况下的加速度时程信号作为待分类数据,通过对监测数据的分类,判定其是否存在损伤。
待分类文档节点中,WCDMapper继承hadoop平台的Mapper类,并重写map方法对待分类文档进行读取,并统计每个词出现的次数;WCDReducer继承hadoop平台的Reducer类,并重写reduce方法对待分类数据进行写操作。WCDMapper类的map方法和WCDReducer类的reduce方法分别如下,处理后的待分类文档如图3所示,前面一个是数据,后一个数字是该数据出现在待分类文档的次数。后面的原始文档经过预处理后也与此相似。
由于MapReduce只输出一个结果,而每个原始文档都采用MapReduce处理会增加代码量和内存的消耗,所以本文采用Hadoop平台提供的FileSystem、FSDataInput-Stream、FSDataOutputStream类来对原始文档进行相应的读写,最后输出到文档中的内容与图4.2相似,而文件读取方式不同。最后需要将它们合并到一个文档中,采用Hadoop平台提供的FileSystem、FSDataInputStream、FSDataOutputStream类来对文件进行读写。输出的matrix文件如图4.3所示,每一行的第一个数为监测的数据,后面的数字为该数据在每个文档中出现的次数。
3.3 特征选择
根据上一步得到的文件,计算每个数据的增益值,对每一个数据的信息增益进行从大到小排序,最后把增益值最大的个特征项输出到文件。本次设计中选取的为100,输出到文件的内容如图5所示,每一行只显示1个数据。
3.4 文档向量化
原始文档和待分类文档都需要向量化,原始文档向量化之后需要归一,而待分类文档向量化之后不需要归一,所以给他们分别提供了一个向量化的类。从文件中读入特征项。参数文件存储经过特征选择后剩下的特征项。
原始文档经过向量化之后,输出到每个文档的内容不一样,图6是文档名为0向量化后的部分内容。待分类文档的向量化后不需要归一化,输出到文档的内容如图7所示。
3.5 分类
此步骤计算原始文档和待分类文档向量两个向量的夹角的余弦。最后的绝对值越大,说明夹角越小,越相似,距离越近。在训练文本集中选出与新文本最相似的个文本,这个文档中属于哪一类的文档最多,则待分类的文档就属于哪一类。map( )方法获取待分类文档的向量,reduce( )方法输出结果到文件中。分类的结果表示待分类的文档属于哪一类,也即是该监测数据来源的监测点的损坏情况属于哪一类。本次实验选定0.12mm+0.03mm两条裂缝情况,采用小车激励的方式获取该工况下的加速度时程信号,数据分类结果如图8所示,该结果显示待分类的文档属于损伤0.1mm这一类。
3.6 结果分析
在上一步中已经获得了待分类文档分类的结果,此分类结果的数据只是监测数据的一部分,而且在分类中由于KNN分类的值选取没有较好的方法以及其他影响因素,获得的结果可能有误。因此将监测点传来的数据拆分到若干个带分类文档中,同时对这些文档进行分类。分类完成之后再对分类结果进行整合分析,获得最终的有效的结果即该监测点准确的损伤情况。Map( )方法读取各个待分类文档分类的结果,并对结果汇总加以分析,获得监测点数据最后的分类结果,reduce( )方法将最后的有效结果写入文件。最后的输出结果如图9所示。
综上所述,基于MapReduce编程模型的桥梁监测信息分类技术可以有效判别桥梁状态所属类别,由于HDFS将大数据分割成了若干个blocks存储在不同的节点上,这样KNN分类算法由一个主机的运算分散到多个节点并行处理,每个节点完成T个任务,时间复杂度为O(ns)/T,其中n为训练样本的总数,s为特征属性数模,应用HADOOP平台的分布式处理框架大大降低了算法的时间复杂度。
4 结论
本文针对桥梁健康监测系统历史数据无法有效利用,无法通过海量数据实时精确地监测评估桥梁结构状态的困难性,基于数据挖掘算法理论,提出了基于大数据的桥梁健康监测信息分类研究技术的革新,在Hadoop平台下运用KNN文本分类算法对桥梁结构缩尺模型加速度数据进行分类分析,采用分布式文件系统HDFS对监测数据进行存储和访问,应用Map/Reduce并行计算框架对桥梁各环境参数进行计算,将文件读写和分布式并行计算框架MapReduce相结合实现KNN文本分类,将监测点的监测数据分到已有的工况中,并据此判断监测点属于何种工况,实现了桥梁监测海量数据的存储、访问、分类以及桥梁结构健康状况的判别,Hadoop平台下的KNN算法实现了分布式并行计算,提高了算法运行时间效率,降低了时间复杂度,通过实验室缩尺模型实验验证了方法的有效性。
存在的不足之处是值的选择,值选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的干扰;而如果值选择过大,并且待分类样本属于训练集中包含数据数较少的类,那么在选择个近邻的时候,实际上并不相似的数据亦被包含进来,造成噪声增加而导致分类效果的降低。如何选取恰当的值也成为KNN的研究热点,尚需进一步改进。
教育期刊网 http://www.jyqkw.com
参考文献
1 黄荷.大数据时代降临[J]. 党政论坛,2012(11)
2 金鹏. 基于Hadoop的SINN文本分类算法的设计与实现[D]. 武汉:华中师范大学硕士学位论文,2013
3 李登荣.文本分类及其相关技术研究[D].复旦大学博士论文,2005
4 Samovsky M, Kacur T. Cloud-based classification of text documents using the Gridgain platform[C]. Applied Computational Intelligence and Informatics,2012(7)
5 Caruana G, Li M, Qi M. A MapReduce based parallel SVM for large scale spam filtering[C]. Fuzzy Systems and Knowledge Discovery, 2011 (4)
6 Viktor Mayer-Sch nberger.Big Data[M].杭州:浙江人民出版社,2013(1)
7 (英)维克托·迈尔-舍恩伯格,肯尼思·库克耶著.大数据时代[M]. 北京:人民出版社,2012
8 向小军,高阳,商琳,等.基于Hadoop平台的海量文本分类的并行化[J].计算机科学,2011(10)
9 (美)Tom White著. 周敏奇,王晓玲,金澈清,钱卫宁译. Hadoop权威指南(第2版) [M]. 北京:清华大学出版社,2011
10 万川梅,谢正兰. 深入云计算:Hadoop应用开发实战详解[M]. 北京:中国铁道出版社,2013
11 张宁,贾自艳,史忠植.使用KNN算法的文本分类[J].计算机工程,2005(6)
12 江涛,陈小莉,张玉芳.基于聚类算法的KNN文本分类算法研究[J].计算机工程与应用,2009(7)
(责任编辑 晓 天)