第四章 大数据与风险情报发现
对于大数据(Big Data),高德纳公司给出了这样的定义:是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产;麦肯锡全球研究所给出的定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和低价值密度四大特征。
人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,人工智能技术的核心是对大数据的收集、处理、分析和利用。
大数据、人工智能技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。从技术上看,大数据与云计算的关系就像一枚硬币的正反面一样密不可分。大数据必然无法用单台的计算机进行处理,必须采用分布式架构。它的特色在于对海量数据进行分布式数据挖掘。但它必须依托云计算的分布式处理、分布式数据库和云存储、虚拟化技术。随着云时代的来临,大数据也吸引了越来越多的关注。
大数据通常用来形容大量非结构化数据和半结构化数据,这些数据在下载到关系型数据库用于分析时会消耗更高的成本。大数据分析常和云计算以及人工智能联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向成千上万台电脑分配工作。大数据和人工智能都需要特殊的技术,以有效地处理大量的数据以及对这些数据用特定的数学分析模型进行分析,以帮助并支持人们完成特定的场景数据支持和某种实际应用的需要。
大数据、人工智能在经济发展中的巨大意义并不代表其能取代一切对于社会问题的理性思考,科学发展的逻辑不能被湮没在海量数据中。著名经济学家路德维希·冯·米塞斯曾提醒过:“就今日言,有很多人忙碌于资料之无益累积,以致对问题之说明与解决,丧失了其对特殊的经济意义的了解。”这确实是需要予以警惕的。
2015年9月,国务院印发《促进大数据发展行动纲要》(以下简称《纲要》),系统部署大数据发展工作。《纲要》明确,推动大数据发展和应用,在未来5至10年打造精准治理、多方协作的社会治理新模式,建立运行平稳、安全高效的经济运行新机制,构建以人为本、惠及全民的民生服务新体系,开启大众创业、万众创新的创新驱动新格局,培育高端智能、新兴繁荣的产业发展新生态。《纲要》部署三方面主要任务。一要加快政府数据开放共享,推动资源整合,提升治理能力。大力推动政府部门数据共享,稳步推动公共数据资源开放,统筹规划大数据基础设施建设,支持宏观调控科学化,推动政府治理精准化,推进商事服务便捷化,促进安全保障高效化,加快民生服务普惠化。二要推动产业创新发展,培育新兴业态,助力经济转型。发展大数据在工业、新兴产业、农业农村等行业领域应用,推动大数据发展与科研创新有机结合,推进基础研究和核心技术攻关,形成大数据产品体系,完善大数据产业链。三要强化安全保障,提高管理水平,促进健康发展。健全大数据安全保障体系,强化安全支撑。
奥地利符号计算研究所的克里斯托夫·库奇安博士在自己的页面上发布了一篇文章,里面提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的在大数据应用中经常用到的随核心的关键算法共32个。
这些算法包括:
(1)A*搜索算法—图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。
(2)集束搜索(又名定向搜索,Beam Search)—最佳优先搜索算法的优化。使用启发式函数评估它检查的每个节点的能力。不过,集束搜索只能在每个深度中发现最前面的m个最符合条件的节点,m是固定数字—集束的宽度。
(3)二分查找(Binary Search)—在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。
(4)分支界定算法(Branch and Bound)—在多种最优化问题中寻找特定最优化解决方案的算法,特别是针对离散、组合的最优化。
(5)Buchberger算法—一种数学算法,可将其视为针对单变量最大公约数求解的欧几里得算法和线性系统中高斯消元法的泛化。
(6)数据压缩—采取特定编码方案,使用更少的字节数(或是其他信息承载单元)对信息编码的过程,又叫来源编码。
(7)Diffie-Hellman密钥交换算法—一种加密协议,允许双方在事先不了解对方的情况下,在不安全的通信信道中,共同建立共享密钥。该密钥以后可与一个对称密码一起,加密后续通信。
(8)Dijkstra算法—针对没有负值权重边的有向图,计算其中的单一起点最短算法。
(9)离散微分算法(Discrete differentiation)。
(10)动态规划算法(Dynamic Programming)—展示互相覆盖的子问题和最优子架构算法。
(11)欧几里得算法(Euclidean algorithm)—计算两个整数的最大公约数。最古老的算法之一,出现在前300年前欧几里得的《几何原本》。
(12)期望-最大算法(Expectation-maximization algorithm,又名EM-Training)—在统计计算中,期望-最大算法在概率模型中寻找可能性最大的参数估算值,其中模型依赖于未发现的潜在变量。EM在两个步骤中交替计算,第一步是计算期望,利用对隐藏变量的现有估计值,计算其最大可能估计值;第二步是最大化,最大化在第一步上求得的最大可能值来计算参数的值。
(13)快速傅里叶变换(Fast Fourier transform,简称FFT)—计算离散的傅里叶变换(DFT)及其反转。该算法应用范围很广,从数字信号处理到解决偏微分方程,到快速计算大整数乘积。
(14)梯度下降(Gradient descent)—一种数学上的最优化算法。
(15)哈希法(Hashing)—一种将字符组成的字符串转换为固定长度的数值或索引值的方法。
(16)堆排序(Heaps)—利用堆这种数据结构而设计的一种排序算法。
(17)Karatsuba乘法—需要完成上千位整数的乘法的系统中使用,比如计算机代数系统和大数程序库,如果使用长乘法,速度太慢。该算法发现于1962年。
(18)LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)—以格规约(lattice)基数为输入,输出短正交向量基数。LLL算法在以下公共密钥加密方法中有大量使用:背包加密系统(knapsack)、有特定设置的RSA加密等等。
(19)最大流量算法(Maximum flow)—该算法试图从一个流量网络中找到最大的流。它的优势被定义为找到这样一个流的值。最大流问题可以看作更复杂的网络流问题的特定情况。最大流与网络中的界面有关,这就是最大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson能找到一个流网络中的最大流。
(20)归并排序(Merge Sort)—是建立在归并操作上的一种有效、稳定的排序算法。
(21)牛顿法(Newton's method)—求非线性方程(组)零点的一种重要的迭代法。
(22)Q-learning学习算法—这是一种通过学习动作值函数(action-value function)完成的强化学习算法,函数采取在给定状态的给定动作,并计算出期望的效用价值,在此后遵循固定的策略。Q-leanring的优势是,在不需要环境模型的情况下,可以对比可采纳行动的期望效用。
(23)两次筛法(Quadratic Sieve)—现代整数因子分解算法,在实践中,是目前已知第二快的此类算法(仅次于数域筛法Number Field Sieve)。对于110位以下的十位整数,它仍是最快的,而且都认为它比数域筛法更简单。
(24)RANSAC—是“RANdom SAmple Consensus”的缩写。该算法根据一系列观察得到的数据,数据中包含异常值,估算一个数学模型的参数值。其基本假设是:数据包含非异化值,也就是能够通过某些模型参数解释的值,异化值就是那些不符合模型的数据点。
(25)RSA—公钥加密算法。首个适用于以签名作为加密的算法。RSA在电商行业中仍大规模使用,大家也相信它有足够安全长度的公钥。
(26)Schönhage-Strassen算法—在数学中,Schönhage-Strassen算法是用来完成大整数的乘法的快速渐进算法。其算法复杂度为:O(N log(N)log(log(N))),该算法使用了傅里叶变换。
(27)单纯型算法(Simplex Algorithm)—在数学的优化理论中,单纯型算法是常用的技术,用来找到线性规划问题的数值解。线性规划问题包括在一组实变量上的一系列线性不等式组,以及一个等待最大化(或最小化)的固定线性函数。
(28)奇异值分解(Singular Value Decomposition,简称SVD)—在线性代数中,SVD是重要的实数或复数矩阵的分解方法,在信号处理和统计中有多种应用,比如计算矩阵的伪逆矩阵(以求解最小二乘法问题)、解决超定线性系统(overdetermined linear systems)、矩阵逼近、数值天气预报等。
(29)求解线性方程组(Solving a system of linear equations)—线性方程组是数学中最古老的问题,它们有很多应用,比如在数字信号处理、线性规划中的估算和预测、数值分析中的非线性问题逼近等。求解线性方程组,可以使用高斯-约当消去法(Gauss-Jordan elimination),或是柯列斯基分解(Cholesky decomposition)。
(30)Strukturtensor算法—应用于模式识别领域,为所有像素找出一种计算方法,看看该像素是否处于同质区域(homogenous region),看看它是否属于边缘,还是是一个顶点。
(31)合并查找算法(Union-find)—给定一组元素,该算法常常用来把这些元素分为多个分离的、彼此不重合的组。不相交集(disjoint-set)的数据结构可以跟踪这样的切分方法。合并查找算法可以在此种数据结构上完成两个有用的操作:查找、判断某特定元素属于哪个组;合并:联合或合并两个组为一个组。
(32)维特比算法(Viterbi algorithm)—寻找隐藏状态最有可能序列的动态规划算法,这种序列被称为维特比路径,其结果是一系列可以观察到的事件,特别是在隐藏的Markov模型中。
对非结构化数据处理分析是大数据的相关处理算法的优势之一。与此同时,另一个算法场景亦极其重要,那就是图论算法在数据分析尤其是在非结构化数据分析中的应用。
图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。
在一个图形数据库中,最主要的组成有两种:结点集和连接结点的关系(有的也称泡泡和箭头)。结点集就是一系列结点的集合,比较接近于关系数据库中所最常使用的二维表结构,而关系则是图形数据库所特有的组成部分。
相对于关系数据库中的各种关联表,图形数据库中的关系可以通过关系能够包含属性功能来提供更为丰富的关系展现方式。相较于关系型数据库,图形数据库的用户在对事物关系或各类数据进行关联性分析时将拥有一个更为强大的数据分析利器,那就是有力提升数据关联关系的发现能力。正因为如此,图数据分析方法能够帮助人们发现更多的隐藏在海量数据中的关联关系,即所谓的“发现潜在的知识”,或发现“新的知识”。换句话讲,就是发现我们通过其他传统的数据分析方法发现不了的数据之间的隐性连接。图数据分析的这种优势更适合或者决定了图数据分析更易于帮助人们发现某些业务风险的线索,或是犯罪线索,为大数据分析开辟了另一个广阔的空间。
因此,图数据分析能够广泛应用到生物医药、基因研究、金融、网络安全态势感知、银行、证券、保险、网络媒体分析、反恐等领域。目前,图数据分析经常被用在反商业欺诈、金融风控、反洗钱、反恐或者犯罪案件侦破等场景中。
与传统数据分析方法相比,图数据库分析非常依赖高性能计算(HPC)环境的计算能力,在X86体系运行图数据则更多地采用了分布式集群计算技术,以提升图数据分析的效率。
常用的图数据分析平台有以下几种:
Neo4j是一个流行的图形数据库,它是开源的。最近,Neo4j的社区版已经由遵循AGPL许可协议转向了遵循GPL许可协议。尽管如此,Neo4j的企业版依然使用AGPL许可。Neo4j基于Java实现,兼容ACID特性,也支持其他编程语言,如Ruby和Python。
FlockDB是Twitter为进行关系数据分析而构建的。FlockDB迄今为止还没有稳定的版本,对于它是否是一个真正的图形数据库,尚有争议。FlockDB和其他图形数据库(如Neo4j、OrientDB)的区别在于图的遍历,Twitter的数据模型不需要遍历社交图谱。尽管如此,由于FlockDB应用于Twitter这样的大型站点,以及它相比其他图形数据库的简洁性,仍然值得我们关注。
AllegroGrap是一个基于W3c标准的为资源描述框架构建的图形数据库。它为处理链接数据和Web语义而设计,支持SPARQL、RDFS++和Prolog。
AllegroGraph是Franz Lnz公司(Web语义产品提供商,旗舰产品是基于LISP的企业开发工具)的产品之一,Pfizer、Ford、Kodak、NASA和美国国防部都是该公司的客户。
GraphDB是德国Sones公司在.NET基础上构建的。Sones公司于2007年成立,近年来陆续进行了几轮融资。GraphDB社区版遵循AGPL v3许可协议,企业版是商业化的。GraphDB托管在Windows Azure平台上。
InfiniteGraph基于Java实现,它的目标是构建“分布式的图形数据库”,已为美国国防部和美国中央情报局所采用。
除此之外,还有其他一些图形数据库,如OrientDB、InfoGrid和HypergraphDB。Ravel则是构建在开源的Pregel实现之上,微软研究院的Trinity项目也是一个图形数据库项目。