非结构化数据是与结构化数据相对应的概念。要理解什么样的数据是非结构化的,先来看一下什么是结构化数据。结构化数据通常指具有固定格式的数据,例如,存放在关系数据库中的二维表格就是一种典型的结构化数据。这类数据由若干行和列组成。每一行表示一个对象,每一列表示对象的一个属性。例如,日常生活中经常使用的通讯录、工资单等就是这种类型的表格。
可以看出,结构化数据具有固定的格式,看上去非常规整。这类数据可能是为了数据挖掘而特定收集的,在收集之初就设计好了格式;也有可能是经过了某个数据转换过程而得到的。对这类数据而言,行的增加比较容易,每增加一行相当于增加一个新的样本。而列的增加要困难得多,这要求对所有已存在的样本进行检查,并且为每一个样本的新属性添加测量值。
与结构化数据相反,非结构化数据指无固定格式的数据,例如,文本、网页、图像、视频、数据流、序列、社交网络、图结构等。这类数据也许存在着某种程度的内部结构,但是由于不具有固定的格式,所以通常称为非结构化数据。现有数据中绝大多数数据都是非结构化数据,而且随着时间的推移,非结构化数据的增长速度要远远超过结构化数据的增长速度。
传统结构化数据的统计分析已经较为普遍,但对于非结构化数据的分析,虽然已经引起业界和学界的广泛关注,但是仍有很大的探索空间。究其原因,主要源于非结构化数据的特点。与结构化数据相比,非结构化数据突破了结构定义不易改变和数据定长的限制,其数据存储和分析都更加复杂多样。
本书介绍了四种典型非结构化数据的分析和挖掘技术,分别是文本数据、社交网络数据、数据流数据和多媒体数据(包括图像、音频和视频),共12章。
第1~5章,主要介绍了文本挖掘的时代背景、文本挖掘与数据挖据的关系、文本预处理、文本分类、文本聚类、话题检测、观点挖掘和情感分析等。第6~10章,主要介绍了社会网络的相关基本概念、常见统计属性、社区发现、个体社会影响力分析、链路预测、网络信息扩散等。第11章,主要介绍了数据流中的变化探测、直方图、聚类和分类等。第12章,主要介绍了图像、音频和视频数据的特征提取、内容检索、内容识别等。
为了便于读者学习,大部分内容除了理论讲解之外,还给出了相应的在大数据环境下的上机实践案例。例如,在文本挖掘部分,给出了在Spark环境下用朴素贝叶斯进行垃圾短信识别、用LDA模型进行话题检测的Scala语言实现代码,以及用LIBSVM实现的发债企业负面新闻识别系统的实现方案;在社会网络分析部分,用Spark GraphX实现了微博用户关系分析和个体社会影响力计算,给出了相应的Scala语言实现代码、边聚类社区发现算法的C语言实现代码,以及基于邻居相似度指标的链路预测算法和两种信息扩散计算过程的R语言实现代码。
本书第1~5章由李翠平、刘苗、卫斌合作撰写,第6~10章由马丽丽和孙怡帆合作撰写,第11章由贾金柱撰写,第12章由李锡荣和许洁萍撰写。全书由李翠平统稿校对。中国人民大学数据仓库与商务智能实验室的很多同学参与了本书的写作和研讨、实践案例 设计、书稿校对等,他们是:王绍卿、赵衎衎、付岩松、葛昊、邵国栋、刘颖智、张超杰、李青华。作者在此对他们的支持和帮助表示诚挚的谢意。
*后,感谢北京五校联合(中国人民大学、北京大学、中国科学院大学、**财经大学、首都经济贸易大学)大数据分析硕士培养协同创新平台的所有老师;感谢中国人民大学出版社的大力支持。
我们在编写本书的过程中,尽可能做到深入浅出,力求概念正确,理论联系实际。非结构大数据分析是一个应用很广的领域,发展非常迅速,但我们水平有限,书中一定存在许多不足之处,希望同行和广大读者不吝赐教,多提宝贵意见。
李翠平