基于Hadoop的客服运维文本聚类算法研究

2018-10-21 01:24王玮严文涛苏琦刘荫于展鹏殷齐林赵宪佳孙更新
关键词:聚类算法大数据分析数据挖掘

王玮 严文涛 苏琦 刘荫 于展鹏 殷齐林 赵宪佳 孙更新

摘要: 为快速准确地提取和挖掘信息系统运维服务过程中的关键咨询问题,本文利用分布式技术,基于Hadoop的客服运维文本聚类算法,对海量文本数据进行聚类研究。给出了基于Hadoop的运维数据分布式并行计算模型,并在Hadoop框架中对系统中所有运维数据进行分析处理。同时,给出了分布式文本聚类算法,并以10万余条电力信息系统运维数据为数据源,对设计的分布式聚类算法和传统聚类算法进行分析对比。实验结果表明,本文设计的分布式聚类算法所需时间低于传统聚类算法,不仅解决了传统聚类算法在处理海量数据方面由于数据规模过大引起的速度慢、效率低的问题,而且还借助大数据中蕴含的价值和动力,提升了企业运维服务水平。该研究具有较高的实用价值和理论意义。

关键词: 聚类算法; 数据挖掘; 大数据分析; Hadoop; 客服运维

中图分类号: TP311.13文献标识码: A

收稿日期: 20170518; 修回日期: 20170828

作者简介: 王玮(1970),女,汉族,山东济南人,硕士,高级工程师,主要研究方向为企业信息化应用。Email: zhaoxj@jacore.com在信息系统运维服务过程中,及时解决用户问题成为企业提升服务质量的关键。当用户进行咨询时,能否及时解决问题会对用户满意度产生巨大影响。但用户咨询的问题涉及面广且重复,因此要达到用户满意则需配置数量较多的运维人员,不利于企业降低运行成本。大部分运维服务信息都是以文本信息的形式存在,对咨询的关键问题进行内容提取和挖掘,并对运维信息进行精确、快速的处理,从分析处理结果中获取有用的信息成为运维信息知识发现领域急需解决的核心问题。利用分布式计算技术和文本聚类技术,通过并行数据挖掘的方法对大量的运维数据进行计算,这是解决该问题的必要途径。海量运维客服数据中包含很多用户重复咨询的问题,利用数据挖掘方法对关键咨询的问题进行内容提取,识别出关键信息,自动统计用户常见问题及热点问题,自动编写专门的培训资料并更新知识库,用以支撑决策及业务的智能化运转,为用户提供个性化的运维服务和针对性的知识培训,以便提高信息系统运维水平及效率,从而实现以用户为中心,多维度了解用户,实现数据化管理,借助大数据中蕴含的价值和动力促进公司服务水平不断提升。在数据挖掘的技术领域中,文本聚类是重要的技术,无监督的机器学习[1]是文本聚类技术的重要特点,一般流程是首先将文本进行数据化预处理,然后通过相似度的计算方法对数据进行处理,最后得出聚类结果。本文以分析聚类的基本原理为依据,在大量运维数据分析过程中对现有聚类方法的优点和缺点进行总结,在此基础上,把分布式计算机技术应用到数据挖掘领域中,提出了文本聚类算法的分布式计算方法的应用。针对传统聚类算法中大量数据的稀疏和高维两方面不足所导致的问题,文本聚类算法中的分布式计算采取了有效的解决方法,提升了算法执行的速度和分析效率。该研究具有较高的实际应用价值。

1基于Hadoop的运维数据分布式并行计算模型

聚类是按照一定的标准把数据集合进行多个簇的方式来划分的分析过程,计算聚类结果[2]就是用这些簇的集合进行表示。在聚类技术应用领域,文本聚类具有很高的应用性,文本聚类以聚类的规则作为依据,根据文本内容将不同的文档进行聚类,最终将内容相似的文档划分为一类。随着聚类技术的发展及其在实际中的广泛应用,根据实现的具体思想和应用领域不同,产生了很多不同的聚类算法,主要包括基于划分(partitionbased methods,PBM)的聚类算法、基于层次(hierarchical methods,HM)的聚类算法、基于密度(hensitybased methods,DBM)的聚类算法、基于網格(gridbased methods,GBM)的聚类算法和基于模型(modelbased methods,MBM)的聚类算法。基于划分的聚类算法的代表算法是Kmeans聚类算法[3],其核心思想是对包含N个对象的数据集合预先划分为K个类,然后对数据集合中任何K个对象进行选取,把选取出来的对象作为聚类的初始中心点,再以之前设定好的启发式算法为依据进行迭代重置,直到类内部对象的平均值不再发生变化为止。层次聚类算法通过将数据组织成一个树状结构来计算样本之间的距离。层次聚类以聚类的顺序为标准,划分为从下向上和从上向下两种顺序的层次聚类。在凝聚(agglomerative nesting,AGENES)聚类算法[4]中,把数据集合的各个对象分别作为一个类,再按照每个类之间的相似度规则逐层合并,直到全部对象合成一个类。分裂分析(divisive analysis,DIANA)聚类算法[5]则是典型的自上向下的聚类算法,首先设置要得到的聚类数目作为聚类结束条件,采用类的平均相异度作为相似度规则。基于划分的聚类方法的典型算法是基于密度的空间聚类(densitybased spatial clustering of application with noise,DBSCAN)聚类算法[6]。在DBSCAN聚类算法中,如果一个对象的邻域中包含多个对象,则创建一个以该对象为核心的新类,进而继续迭代,从核心对象出发对直接接触的其他对象进行寻找,直至寻找不到任何可以添加到类的对象为止。统计信息网格(statistical information grid,STING)算法是基于网格的聚类算法中最具有代表性的算法之一[7],该算法首先按照矩形方式对空间区域进行单元格的划分,划分出来的矩形单元格和不同级别的对象之间相互对应,单元格按照对象之间的关系建立一个层次结构,然后划分成诸多低一层的单元格。这样可依据预先设定的网格单元属性的信息来进行统计查询。基于模型的聚类算法的代表性算法是自组织神经网络(self organizing maps,SOM)算法[8],该算法首先对神经网络输出层赋予随机的连接权向量,并对设置网络的学习率进行初始值的设置,向量的随机选取是从训练数据中进行选择,然后再对选取的向量进行操作,选取的向量与各连接权向量之间的相似度通过计算可以得出,把得出的相似度的值进行比较,选出最大相似度的节点作为获胜节点,获胜节点的作用是作为t时间学习权值的调整域进行确定的中心,以获胜节点为中心,对优胜领域内的节点的权值和获胜节点的权值进行及时更新。按照上面的操作过程执行,直到学习率衰减到0或某个指定的阈值为止。

对于海量运维数据,通过分布式系统对其进行并行处理是提高计算效率和处理能力的重要途径之一。Hadoop作为目前应用最广泛的一种云计算平台,利用HDFS分布式文件系统对海量运维数据进行存储,在分布式环境下通过MapReduce编程模型对运维数据进行并行处理。MapReduce是一种分布式并行计算编程模型,“Map(映射)”和“Reduce(归约)”及其主要思想都是借鉴矢量编程语言的特性。运维数据Hadoop并行计算模型的基本执行流程如图1所示。

图1运维数据Hadoop并行计算模型的基本执行流程在Hadoop结构模型框架中,对系统中的所有运维数据分析的MapReduce任务进行初始化,转化为系统中的Job,Job又被分为Map和Reudce部分。在MapReduce部分的执行过程中,把输入文件划分为M份,如图1左方所示分成了split 0~4,然后把每个split传送给每个单独的Map,因此Map作业数量是由M决定,和split一一对应。在Map部分,形式为“”的输入键值对是通过Map函数接收,经过数据处理后,将生成同样形式的运维数据输出键值对。数据合并过程就是将输出键值对中有相同键的键值对合并在一起,Reduce过程与整个合并过程类似,所以一般情况下,可以用Reduce函数代替合并过程,这样海量的客服运维数据就可以在Hadoop框架中进行并行处理。

2分布式文本聚类算法

本文的分布式文本聚类算法,是为适应客服运维系统的海量数据集合的特点而设计,与传统聚类算法相比,本算法具有支持分布式并行运算和实时性的特点。本文的分布式聚类算法是由基于划分的聚类和基于层次聚类两部分组成。客服运维系统自身的特点决定了本算法必须具有较强的实时性,这就要求必须对海量运维数据集合进行预处理,从而达到初步降维的效果,在此基础上,对已有明确相关性的文档进行初步聚类,然后再进行二次聚类,最终达到系统要求的聚类结果。分布式文本聚类算法实现流程如图2所示。

图2分布式文本聚类算法实现流程对大文档数据集进行聚类之前,首先需要进行数据预处理,即对文档集中的每个文档对象进行中文分词。本文以IKAnalyer分词器为工具,采用改进的二元gram分词方法准确分词,同时将文档集合中的文档对象表示成算法所需的数据形式。文档对象空间的高维度可能会降低聚类算法的准确度,因此需对文档对象首先进行降维处理。本算法选取文档对象中的特征词,根据特征词的权重是否小于设定的阈值,决定是否消去该特征词与文档对象的关系,以实现初步降维的效果。倒排表是將文档对象中的特征词作为划分标准,将文档对象进行聚合的数据结构[9]。利用倒排表可以为后续基于划分的聚类算法初步聚类进行数据相关性准备。

在初步聚类过程中,需要计算文档对象间的相似度,由于在算法中文档是以向量的形式表示,所以计算文档对象间的相似度通常采用向量间的余弦夹角公式,即

Sim(D1,D2)=(∑ni=1x1ky2k)/(∑ni=1x21k∑ni=1y22k)

式中,x1k和y2k分别表示向量D1和D2中的元素;如果Sim(D1,D2)的值越大,那么向量D1和D2之间的相似度就会越高。

初始聚类是按照一定的方法,选择反倒排表的文档对象,然后进行归类处理。初始聚类的目的是把文档对象进行划分,然后放入文档集合中,这些文档集合是全划分,所有文档集合间没有重叠。初始聚类算法流程如下:

1)在反倒排表的文档对象中,把特征词进行关联处理,再把进行关联处理后的文档集合以权重值为依据进行聚类中心点的计算。

2)应用余弦夹角公式对文档对象和文档集合中心点相似度进行计算,从而将该文档对象划入与其相似度最大的文档集合中。

3)在所有包含该文档对象的文档集合中删除该文档。

在二次聚类过程中,需要对初步聚类的划分结果再次聚类,达到最终的稳定聚类结果。二次聚类的基本流程如下:

1)计算初步聚类后划分的每个文档集合的中心点。

2)通过基于层次的聚类算法对初步聚类结果集进行二次聚类计算。

3)把二次聚类的结果合并在一起,最终实现在相同类集合中存放的文档对象内容都是相同的,不同类的结合中存放的文档内容不同,并且每个文档只能归属到一个类。

3Hadoop的分布式文本聚类算法实现

在Hadoop的分布式文本聚类算法中,分布式应用程序主要包括Mapper和Reducer两部分。Mapper负责处理由InputFormat切割成的数据分片,然后通过Inputformat提供的记录读取器将输入解析成键值对的形式提供给Mapper部分中的Map函数[10]。经过map处理后的数据仍会以键值对的形式输出[1116]。Mapper部分的输出将分发到各个Reducer部分,在此过程中,Reducer部分为了对Mapper的输出进行并行处理,需要对Mapper的输出进行划分和分割处理,然后在相同的Reducer上把相同的键的输出进行分配,最后要实现把输入的键和与键对应的值在Reducer部分进行叠加结合。数据经过Reducer部分处理后会继续以键值对的形式输出[1720]。该算法的具体步骤如下:

1)将文档数据集合保存到分布式Hadoop分布式文件系统(Hadoop distributed file system,HDFS)文件系统中作为输入数据,在Map中利用正则表达式对值进行归一化,然后使用分词器对值进行分词操作。Reduce的输入是Map的输出的集合,Reduce把相同的key汇总后,再把相同的key的value值相加,得到特征词语在该文档中出现的次数。

2)以1)的Reduce输出为Map的数据输入,计算每个文档中特征词语在哪些文档中出现过,Reduce部分的输入将作为Map的输出,计算文档中特征词语出现的频率,进而通过权重计算公式获得每个特征词语在每一个文档中的加权权重值。将全部特征词语进行权重计算,对权重值小的词语消去,进行降维。

3)以2)的Reduce输出作为Map部分的输入,通过Map的处理对中间结果的表达形式进行格式转换,Reduce的输入为Map的输出的集合,对value的集合进行合并。

4)以3)的Reduce输出为Map部分的输入,以文本特征词为键,以文档的编号为值,Reducer的输入为Mapper输出的集合,对文档号进行合并。

5)Map的数据输入是以4)的Reduce输出为准,并且key值取决于文档号,value值取决于特征词语,Reduce的输入为Mapper输出的集合,对特征词语进行合并。

6)以5)中的Reduce部分的输出作为Map的输入,对文档编号为docId的文档进行权重关联,从而得到文档编号为docId的文档中特征词的权重集合,然后通过反倒排表关联对键值对中的所有特征词进行关联,并通过得出的特征词关联文档的集合,对文档集合的中心点进行计算,并利用余弦公式计算中心点与文档编号为docId的文档间的相似度,从中找到相似度最大的文档集合。最后以该文档集合所对应的特征词为键,以该文档编号docId为值。Reduce部分中以Map的输出为Reduce的输入,完成对值集合的合并。

7)Map的输入通过6)中的Reduce部分输出得出,首先建立空集合,如果第1个文档集合首先被输入,那么就在建立的空集合中把第1个文档集合添加进来。如果输入不是第1个文档集合,则与已有集合中的类进行相似度比较,进行比较之后的相似度的值如果超过了设定的阈值,那么就在已有的文档集合中把进行比较的类的文档添加进来,原来的类将会被新合并的类所取代,如果进行比较的相似度的值没有超过设定的阈值,那么就建立一个新的类,并把新的类添加到已有的集合中。Reduce部分的输入作为Map部分的输出,在Reduce部分中对所有文档集合进行合并,直到所有文档集合都添加到类集合中。至此,整个分布式文档聚类算法结束。

4实验与分析

本文以10万余条电力信息系统运维数据为数据源,从3个方面对设计的分布式聚类算法和传统聚类算法的性能表现进行测试,这些数据具有高维和稀疏性等特点。

在同一分布式集群节点数量保持不变的情况下,分别使用10 000,40 000,70 000,100 000条测试数据,计算所需时间的增减关系。不同数量级的数据对传统聚类算法和分布式聚类算法的性能测试结果如图3所示。由图3可以看出,当集群节点数量稳定时,数据量虽然增加,但是系统运行时间却在减少,而且在相同数据量的情况下,本文设计的分布式聚類算法所需时间要低于传统聚类算法。

保持测试数据量不变,通过分布式集群节点数量的变化,测试处理时间增量的增减关系。使用不同集群节点数量对传统聚类算法和分布式聚类算法进行测试,不同节点的数量运行时间如图4所示。

由图4可以看出,测试数据总量保持不变,随着分布式集群节点数量的增加,系统运行时间逐渐减少,而且在相同集群节点数量的情况下,本文设计的分布式聚类算法所需时间要低于传统的聚类算法。

以50 000条数据集分别对本文提出的分布式文本聚类算法中的二次聚类步骤分别进行测试,查看在不同分布式集群节点的数量下,时间的增减关系。初步聚类算法实现所消耗时间如图5所示,二次聚类算法实现所消耗时间如图6所示。

在分布式文本聚类算法计算过程中,如果分布式集群节点数量保持不变,随着处理的数据数量增加,系统运行需要的时间减少;在处理数据数量不变的情况下,聚类算法需要的时间随着分布式集群节点数量的增加而呈递减变化。从两个聚类步骤的时间复杂度测试算法中可以看出,在两个聚类步骤的时间增量上,分布式文本聚类算法呈递减变化。

5结束语

本文设计的分布式聚类算法通过Hadoop分布式平台来实现,对运维系统中咨询的关键问题进行内容提取,利用聚类算法从海量数据中识别出关键信息,自动统计出用户常见问题及热点问题,用以支撑决策及运维服务的智能化运转,借助大数据中蕴含的价值和动力促进企业服务水平不断提升,具有较高的实用价值和理论意义,对于海量数据的聚类算法的执行效率将是下一步研究的主要问题。

参考文献:

[1]王继成, 潘金贵, 张福炎. Web 文本挖掘技术研究[J]. 计算机研究与发展, 2000, 37(5): 513520.

[2]吴启明, 易云飞. 文本聚类综述[J]. 河池学院学报, 2008, 28(2): 2830.

[3]毛国君, 段立娟, 王实. 数据挖掘原理与算法[M]. 北京: 清华大学出版社, 2005.

[4]Zhang T, Rramakrishoan R, Livny M. An Efficient Data Clustering Method for Very Large Databases [C]//In Procof ACMSIGMOD International Conference on Management of Data. Canada: ACM, 1996: 103114.

[5]Aggarwal C, Han J, Yu P S, et al. A Framework for Projected Clustering of High Dimensional Data Streams[C]//13th International Conference on Very Large Databases. Endowment: VLDB, 2004: 852863.

[6]胡可云, 田凤占, 黄厚宽. 数据挖掘理论与应用[M]. 北京: 清华大学出版社, 2008.

[7]Fmurtagh S. A Survey of Recent Advances in Hierarchical Clustering Algorithms[J]. The Computer Journal, 1983, 26(4): 354359.

[8]薛贵荣. 数据挖掘[M]. 北京: 清华大学出版社, 2007.

[9]刘务华, 罗铁坚, 王文杰. 文本聚类算法的质量评价[J]. 中国科学院研究生院学报, 2006, 23(5): 640646.

[10]Klusch M, Lodi S, Moro G. Distributed Clustering Based on Sampling Local Density Estimates[C]//Eighteenth International JointConference on Artificial Intelligence. London: Morgan Kaufmann Publishers, 2003: 485490.

[11]栾亚建, 黄翀民, 龚高晟. Hadoop平台的性能优化研究[J]. 计算机工程, 2010, 36(14): 262263.

[12]向小军, 高阳, 商琳, 等. 基于Hadoop平台的海量文本分类的并行化[J]. 计算机科学, 2011, 38(10): 184188.

[13]许丞, 刘洪, 谭良. Hadoop云平台的一种新的任务调度和监控机制[J]. 计算机科学, 2013, 40(1): 112117.

[14]杨来, 史忠植, 梁帆, 等. 基于Hadoop云平台的并行数据挖掘方法[J]. 系统仿真学报, 2013, 25(5): 8694.

[15]胡丹, 于炯, 英昌甜, 等. Hadoop平台下改进的LATE调度算法[J]. 计算机工程与应用, 2014, 50(4): 8689.

[16]陈明丽, 刘旭敏. Hadoop平台下改进的推测任务调度算法[J]. 传感器与微系统, 2017, 36(2): 134137.

[17]刘莎, 谭良. Hadoop云平台中基于信任的访问控制模型[J]. 计算机科学, 2014, 41(5): 155163.

[18]史文浩, 江國华, 秦小麟. 基于用户信任值的HDFS访问控制模型研究[J]. 计算机科学与探索, 2016, 10(1): 2535.

[19]宛婉, 周国祥. Hadoop平台的海量数据并行随机抽样[J]. 计算机工程与应用, 2014, 50(20): 115118.

[20]赵庆. 基于Hadoop平台下的CanopyKmeans高效算法[J]. 电子科技, 2014, 27(2): 2931.

猜你喜欢
聚类算法大数据分析数据挖掘
数据挖掘综述
软件工程领域中的异常数据挖掘算法
K—Means聚类算法在MapReduce框架下的实现
基于K?均值与AGNES聚类算法的校园网行为分析系统研究
面向大数据远程开放实验平台构建研究
面向大数据分析的信息管理实践教学体系构建
传媒变局中的人口电视栏目困境与创新
基于R的医学大数据挖掘系统研究
基于改进的K_means算法在图像分割中的应用
大规模风电场集中接入对电力系统小干扰稳定的影响分析