大数据处理的算法与应用实践
随着存储价格的下降、计算能力的提升、3G及宽带的增加,以及感知器成本的下降,大数据将会获得更多的关注、研究、开发和应用。海量非结构化流式数据将成为大数据时代重要的数据形态,这也将对传统数据处理系统架构带来挑战,要求大数据处理系统逐渐由面向流程设计转变为面向数据设计。
本文将首先讨论非结构数据处理流程涉及到的主要算法和技术,并在最后列出非结构化处理在典型行业的一些实际应用案例。
一非结构化数据处理流程
非结构化处理流程主要以网页处理为例来阐述,包括三个阶段,分别是信息采集、网页预处理和网页分类。
信息采集是将非结构化的信息从大量的网页中抽取出来保存到结构化的数据库中的过程;网页预处理主要是进行一些数据清洗的工作,保证分类质量;网页分类工作则是通过数据挖掘算法训练出来的分类模型,对分类数据进行分类提炼,得出有价值的信息。
信息采集
信息采集面对的是特定的专业人群,其采集的信息只限定于特定的主题和相关的领域,出于对性能和成本的考虑其不必也不可能对整个互联网进行遍历,因此主题信息采集中通常需要研究以何种方式预测链接指向的页面与主题的相关性,并判断其是否值得访问;需要研究以何种爬行策略访问Web,以在尽可能多地采集到主题相关页面的同时尽可能少地采集到主题无关的页面。
信息采集的基本方法是通过预先设定的种子链接集,利用HTTP协议访问并下载页面,在用各种分析算法分析页面与主题的相关性之后提取出待访问的链接,预测链接指向主题相关页面的可能性,再以各种不同的爬行策略循环迭代地访问网页。
信息采集根据基于主题的不同可分为以下两类:一类是基于内容的主题信息采集:它需要建立一个针对主题的词表。另一类是基于超链接的主题信息采集:它是基于网页之间的引用关系,类似Pagerank算法。
网页预处理
网页预处理部分本文主要介绍一下网页去重,网页去重可以归为两类:一类是基于URL的对比去重,它适用哈希算法;另一类是基于内容的对比去重,它适用基于信息指纹的文本相似度算法。
网页去重需要先对文档对象的特征抽取,需要将文档内容分解,由若干组成文档的特征集合表示,该步骤主要是为了方便特征比较计算相似度。之后需要针对特征的压缩编码,主要通过哈希编码等文本向数字串映射方式以方便后续的特征存储以及特征比较,起到减少存储空间,加快比较速度的作用。最后需要进行文档的相似度计算,这一步需要根据文档特征重合比例来确定是否重复文档。一般是对网页提取一个信息特征,通常是一组词,或者是词加权重,调用特定的算法,转化为一组代码,也被称为指纹。若两个页面有相当数量的相同指纹,那么可以认为这两个页面内容重复性很高。
网页分类
分类问题是人类所面临的一个非常重要且具有普遍意义的问题。将事物正确地分类,有助于人们认识世界,使杂乱无章的现实世界变得有条理。自动文本分类就是对大量的自然语言文本按照一定的主题类别进行自动分类,它是自然语言处理的一个十分重要的问题。文本分类主要应用于信息检索,机器翻译,自动文摘,信息过滤,邮件分类等任务。文本分类的一个关键问题是特征词的选择问题及其权重分配。
在搜索引擎中,文本分类主要有以下用途:相关性排序会根据不同的网页类型做相应的排序规则;根据网页是索引页面还是信息页面,下载调度时会做不同的调度策略;在做页面信息抽取的时候,会根据页面分类的结果做不同的抽取策略;在做检索意图识别的时候,会根据用户所点击的URL所属的类别来推断检索串的类别等等。
网页分类方法有SVM分类方法和朴素贝叶斯方法:其中比较推荐的是SVM分类方法,Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(SupportVectorMachine,简称SVM)。支持向量机的提出有很深的理论背景。支持向量机方法是在近年来提出的一种新方法。
典型的SVM分类有两种,一种是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;另一种是基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。
典型的朴素贝叶斯分类,它可以分为模型训练、模型分类和分类结果评估三个阶段:模型训练阶段,主要计算训练集下所有类别的先验概率,以及所有特征词在每一个类别下的条件概率;模型分类阶段,对训练集建立模型;对每个待分类文档计算后验概率,后验概率大的类别为文档所属类;分类结果评估阶段:对分类结果进行抽样、人工检验。分别计算出每个类别分类的查准率和查全率,通过F-度量公式评估模型准确度。
二自然语言处理的典型方法与应用
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。研究能实现人与计算机之间用自然语言进行有效通信的理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
自然语言处理部分主要以舆情分析为例,舆情分析系统的数据来源有三个渠道,一是网络上公开的信息,如各大交易所每日评论,社交网络各方观点和财经门户网站。二是从合作方获取的信息,如交易信息等。三是微博、人人网等社交网络信息。
网页信息摘要
网页信息摘要需要将同一主题下的多个文本描述的主要信息,按压缩比提炼出一个文本的自然语言处理技术。对于互联网上海量的期货分析报道,如果能从中提炼出一个覆盖性强、形式简洁的摘要将具有重要的意义。
如何收集企业的战略信息?面对海量信息,一个研究员需要花费4个小时阅读相关信息。借助语义引擎,把50篇文献缩略成10余条概要,面对概要信息,一个研究员需要花费3分钟阅读相关信息,并形成思考。借助文字情绪引擎,把概要内容指数化、知识化,面对指数信息,一个研究员需要花费2秒钟阅读相关信息,并获得决策支持所需的知识。
热点事件预测
热点事件的发现与预测的算法有很多,最行之有效的方法是做大规模的逻辑回归。在大数据的背景下,我们拿到的数据是全量并非抽样,这使得类似逻辑回归等简单算法起到事半功倍的效果。通过历史事件传播数据,提取向量,并做逻辑回归出规则,就可以做很多预测。例如美国大选,疾病传播,甚至预测死亡。维克托·迈尔·舍恩伯格写的《大数据时代》一书中就有这么几个关于热点事件预测的案例:
案例一:华尔街“德温特资本市场”公司首席执行官保罗·霍廷每天的工作之一,就是利用电脑程序分析全球3.4亿微博账户的留言,进而判断民众情绪,再以“1”到“50”进行打分。根据打分结果,霍廷再决定如何处理手中数以百万美元计的股票。他的判断原则很简单:如果所有人似乎都高兴,那就买入;如果大家的焦虑情绪上升,那就抛售。这一招收效显着——当年第一季度,霍廷的公司获得了7%的收益率。
案例二:美国一个超市将女性顾客中的孕妇视作购物的黄金消费者。为了将这部分目标人群在怀孕前就争取过来,该超市通过调查罗列出几十种购物偏好,当某位顾客的收银条上集中呈现这类商品时,就会被认定为可能是孕妇或家中有孕妇,超市随后向其发送孕妇产品广告。一次,当有人以“家中并无孕妇却总是收到相关产品广告”为由控告这家超市后,却发现原来是自己还在上高中的女儿怀孕了。
案例三:2009年甲型H1N1流感病毒出现,在没有疫苗的情况下,公共卫生专家能做的只是减慢传播速度,要做到这一点,专家必须先知道流感出现在哪里,这只能依靠各地医生发现并告知疾控中心,信息肯定是滞后的。可是,Google的工程师们比疾控专家更早地判断出流感从哪里传播出来,他们依靠的就是Google所掌握的大数据。
历史相似事件可使用文档相似度比较。文档相似度比较算法首先采用TFIDF方法把文档建模为词频向量,然后使用向量距离计算算法求得。常用的距离计算方法如:Jaccard距离、欧式距离、余弦相似度等。
趋势分析和预测
根据交易的价格曲线走势,与综合指数对比,使舆论指数趋势体现与交易价格曲线的相关性和一定的前瞻性。通过构建时间序列模型,对未来走势进行预测,如图1所示。综合指数包括各个相关因素的变化趋势(天气因素等)以及舆论指数。
三行业应用案例
数据挖掘和自然语言处理的应用范围广泛,其中也不乏一些有意思的案例,它可能应用于运营商、银行、传统企业和券商,挑选几个具有代表性的案例与大家分享。
电信行业
某城市电信运营商的上网日志分析系统,该系统通过收集用户上网日志历史记录数据,分析出每个用户的偏好。首先该系统通过并行统计清洗出每个人有效历史上网日志URL;然后从日志URL中抓取网页内容,提取正文,并通过文本分类算法计算分类;最后通过统计出每个用户上网关注类别总数,分析出每个用户的偏好。
金融行业
某大型股份制商业银行供应商风险评估系统,该系统通过抓取供应商内部数据,如企业年报、公司变动、领导情况、财务状况等数据,分析公司运营指数;通过计算各供应商社交数据,对其社会影响力做评估;通过同行之间的数据分析对比,对供应商进行实力评估。这些数据指数可以有效协助商业银行进行供应商风险评估。
地产行业
某房地产企业的社会化品牌实时营销系统,该系统通过社交媒体(微信、微博等)数据,进行网络口碑监测,负面情绪被及时发现并制止;通过与客户进行互动,争取客户忠诚度;通过监控同行及竞争对手的各方面资讯,量化评估竞争态势;快速提升品牌知晓度和美誉度,将媒体影响力转换为客户量,缩短人气聚集周期。
证券行业
某券商战略信息监测通过历史回顾与信息摘要,提供题目、摘要、原文URL,今日舆情焦点(今日摘要),今日舆论,展示抓取的所有期货产品相关信息(如大豆)的缩略,并提供全文链接。通过热点事件列表可以看到历史相似事件对趋势的影响。通过天气指数与趋势对应曲线可以看到历史相似天气与历史趋势的对照。
从以上几个非结构化数据处理在典型行业的实际应用案例,我们不难看出,当今社会中的各个行业对数据挖掘和自然语言处理应用的需求量巨大,该领域蕴藏着巨大的商业价值和理论研究价值,在上网日志分析、商风险评估、社会化品牌实时营销和战略信息监测等实际应用领域都有着非常广阔的前景。