3.2 财政数字化转型大数据技术介绍
3.2.1 流式处理Flink介绍
大数据技术的到来使财政各种业务场景不断丰富,产生大量数据,而很多政府部门还没有相关数据采集与存储的能力。财政业务数据通常伴随着业务的发生而产生,其实时性强、数据量大,价值更具有隐蔽性,流式的数据使Spark、Map Reduce、Storm等实时批处理框架在财政场景无法满足使用者的需求。财政流式处理的新场景也迫切需要新技术出现,流式处理Flink应运而生。
在Flink程序中,数据流处理的流程如下。当执行Flink程序后,数据流会与Flink程序产生映射,每个Flink程序的数据流可以输入多个程序,当程序中有消息队列或者文件输入时,流处理就开始了,当这些文件接受加工处理输出到下一个容器时,标志着流处理结束,Flink程序可以向多个接收器输出数据。在数据处理过程中,Flink程序支持对流数据执行非常丰富的变换,包括按时间窗口计数与聚合,按数据点聚合等操作,允许应用程序对数据流进行拆分,对多个数据流进行合并。
Flink程序的数据源输入以及接收器输出分为很多种。Flink程序可以和多种类型的应用进行对接,包括Amazon Kinesis、Apache Kafka、Apache Cassandra、Hadoop Distributed File System(HDFS)等,这些应用程序既可以作为Flink的数据源,也可以作为接收器。另外,Flink程序继承了分布式集群的运行特点,既可以在分布式的集群内运行,也可以以独立模式(通常说的单机版本)或基于Docker(一个开源的应用容器引擎)的环境进行部署。
在财政大数据平台中应用Flink程序的优点,还在于其状态检查点与容错机制,支持数据异常的检查与恢复。Flink程序的检查点是其执行过程中的快照信息,记录某一刻的数据状态和应用程序状态。如果发生故障,只需要启用检查点,就可以将数据恢复到上一个快照点,确保数据的完整性与准确性,避免异常事件对财政数据采集与存储的影响。
Flink程序中除了自带的快照恢复机制,还存在保存点机制。快照恢复机制是应用程序自动实现的,相对的,财政工作人员还可以手动设置数据保存点,当数据出故障时,可以停止应用程序,将数据恢复到手动保存点。保存点保存了程序的应用状态,因此,可以在不丢失应用状态的情况下对程序进行恢复。
3.2.2 Hive数据仓库
在本平台规划中,为了解决财政数据巨量存储的问题,将会使用分布式的Hive数据仓库对财政数据进行保存。Hive数据仓库是基于Hadoop分布式架构的关系型数据保存工具,支持传统的数仓建模,可以基于Hive数据仓库进行数据的提取、转化、加载。Hive数据仓库可以将关系型的数据映射为一张形如Excel的数据表,最重要的是,Hive数据仓库提供了与MySQL基本一致的SQL(Structured Query Language,结构化查询语言)查询功能,这将大大降低财政相关人员使用Hive数据仓库的难度。
Hive数据仓库继承了SQL语句,能将其转变为Map Reduce任务。这一个特性,使得Hive的学习成本低,可以通过SQL代码对大量的财政数据进行分布式Map Reduce统计,而不必开发专门的应用程序。因此,Hive数据仓库十分适合目前的财政大数据存储与财政工作人员日常的统计分析操作。
需要注意的是,在Hadoop框架上使用Hive数据仓库通常存在较高的延迟,一方面是Hadoop框架在提交程序与资源调度时,需要消耗大量的时间,另一方面是Hive数据仓库将SQL语句转化为Map Reduce执行时需要时间。因此,Hive数据仓库并不能对财政大数据进行实时查找,它比较适合离线查找与大规模静态数据分析。例如,在Hive数据仓库执行SQL语句进行MB级别的数据查询时性能不如MySQL,但是在进行GB级别的或者TB级别的数据查询时,性能优越。因此,Hive数据仓库的最佳使用场景是财政大数据集的批量处理任务,例如一年一度的数据汇总分析,月度的财政报告查询等。
3.2.3 HBase数据仓库
鉴于Hive数据仓库只适用于大规模离线数据的批量非实时查询,在构建财政大数据平台时,还需要支持实时数据处理的数据存储方式——HBase数据仓库,它在一定程度上与Hive数据仓库相似,都基于分布式结构,可以存储巨量数据。不同的是,Hive数据仓库是面向行存储的,存储的是关系型结构化的数据表单,HBase数据仓库是面向列存储的,存储方式比较松散,以键值对的方式存储,读写非常迅速,是一个适合于非结构化数据存储的格式。由于这个特点,HBase数据仓库不适合用于数据统计与分析,更适合用于数据实时查询。因此,本项目结合Hive数据仓库与HBase数据仓库两者的特点,实现财政大数据的实时查询与离线分析,具体内容详见4.2财政数字化转型平台总体架构设计内容描述。
3.2.4 MySQL数据仓库
Hive数据仓库适合离线批量分析统计,HBase数据仓库适合财政大数据实时查询,但是两种数据仓库都不适合数据展示。一方面,大批量数据展示没有意义,另一方面汇总后的数据一般体量较小,结构规则。因此,平台规划在通过HBase数据仓库与Hive数据仓库将数据处理后,将数据存储到MySQL数据仓库进行数据实时展示。
MySQL数据仓库不支持大数据存储,表单数据过千万条会影响查找速度,但是,它为小数据量的可视化展示提供了大量的访问节点,读取性能优良,前端查询能实时交互与反馈。MySQL数据仓库将不同主题的财政数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了读取速度并提高了灵活性。
3.2.5 Logical回归算法介绍
做财政决策时有很多需要判别的场景,例如多个决策该选谁,未来经济运行是好是坏,是否应该进行税务改革等。完成判别需要整合大量且多维的数据进行研究,才能得出结论。常用的判别模型是逻辑回归,由比利时学者P.F.Verhulst首次提出,它的基本原理是在线性回归的基础上另外套用了一个逻辑函数,运用概率的方法来判定某种事件发生的可能性大小。本文的目的是通过Logistic(逻辑斯蒂曲线)回归模型去识别某一财政措施是否合理。第一步,收集决策目标的相关指标,可以将它设置为x=(x1, x2, x3,…, xn),假设在选取的指标条件下合理概率为P(y=1|x)=P,此时的y=1可以视为该决策合理,那么Logistic回归模型可以表示为
式中:称为Logistic函数;g(x)=w0+w1x1+…+wnxn。
那么该决策不合理的概率为
计算这两个条件概率的比值为
再将这个比值取对数为
最终得到这个决策合理的概率,一般来说划分决策是否合理的阈值是0,如果测试集中得到的数据大于0,则说明这个决策合理的概率大于不合理的概率。
3.2.6 随机森林算法介绍
Logistic回归模型能解决二分类的决策问题,然而,财政在运行过程中还存在多分类的问题,因此介绍另一种多分类算法——随机森林。Leo Breiman和Adele Cutler提出的一种机器学习方法被命名为随机森林,它是一种覆盖了若干种决策树的特殊分类器,其核心原理是如果在一个样本集的特征空间里,相邻的n个样本属于同一个类别,那么基于此可以判定该样本也属于这个类别,同时具备这个样本集里的特征。可以发现,随机森林对样本的预测并不是单线程的,而是利用了多棵决策树共同预测样本的类别。这里所说的决策树是指此结构类似于树状结构,具有多个树状分叉节点,一般称为决策节点,在进行类别决策时一般只与邻近的样本有关,并且在监督学习的条件下,通过事先设置好的特征指标来判定将哪个指标作为决策的节点。在选择时,通常按照事先设定好的度量指标来确定哪个特征将作为决策节点,最后的决策结果以叶节点作为表示,特征的重要程度以确定特征的先后顺序来表示,同时按照决策树之间的距离进行排序,以出现频率最高的类别作为决策树的预测分类。在随机森林中覆盖的千百个决策树中,通过输入测试的数据与之前决策树输出一个的分类结果相比较,找出与之最为接近的特征,从而判定此样本被分为哪一类。
3.2.7 支持向量机算法介绍
除了以上模型,还可以综合使用其他模型进行辅助参考。机器学习的模型大多有自己适合的场景,因此在选择模型时需要多样化。支持向量机(Support Vector Machines, SVM)是一种分类模型,它在特征空间上被定义为距离最大的线性分类器,向量机的最大作用就是使分类的数据间隔最大化,即对每一个类别最近的元素距离最远,且这种方法降低了对数据质量的要求,因此在较小的数据集里面也有极好的表现。
支持向量机可以运用于数据线性可分和线性不可分两种情况,可等同于在二维平面上将数据二分类和多维空间中将数据二分类。支持向量机的基本算法是找到几何间隔最大的分离超平面并且使之能够正确划分训练数据集,如图3-1所示。
图3-1 支持向量机原理
划分超平面的公式为wT+b=0,其中以w=(w1, w2,…, wn)为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。
假设该直线能够将两类数据都正确分类,将其记为(w, b),数据集中任意一点x到超平面(w, b)的距离可写为
满足该条件的决策边界实际上构造了两个平行的超平面作为间隔边界以判别样本的分类,即
w T xi+b≥1→yi=1
w T xi+b≤-1→yi=-1
所有在上间隔边界上方的样本属于正类,在下间隔边界下方的样本属于负类。两个间隔边界的距离为
3.2.8 模型评估方法介绍
在对3种分类集成方法的原理进行介绍后,接下来需要对3种分类方法的建模效果进行验证。分类模型的识别效果不可能达到100%正确,目前的研究也只是选出达到识别极限值的分类识别模型,下面通过常用的混淆矩阵的方法对分类模型的效果进行比较。
混淆矩阵是评价模型结果的指标,多用于判断分类模型的优劣,使用n行n类的形式来呈现准确率、精确率与特异度。准确率是指分类模型中判断正确的结果占总观测值的比重;精确率表达的是模型找到数据集中相关实例的能力;特异度表示为精确率和准确率的调和均值,模型的识别效果可以由以上3种指标对比得出。模型识别数据集中的数据后可以分为4种结果,合理的决策被正确地识别出,合理的决策未被正确地识别出,不合理的决策被正确地识别出,不合理的决策被错误识别为合理的决策。用TN(True Negative)代表被正确识别的不合理决策的数量;FN(False Negative)代表不合理决策被错误识别为合理决策的数量;TP(True Positive)代表被正确识别的合理决策的数量;FP(False Positive)代表被错误识别的合理决策的数量。由此可得混淆矩阵,见表3-1。
表3-1 混淆矩阵
混淆矩阵计算公式见表3-2。
表3-2 混淆矩阵计算公式
在平台构建过程中可通过准确率、精确率、特异度这3个指标对模型的识别效果进行评判,而在实际运用中,此数据会受到样本数据的量级影响,出现过拟合的现象。精确率是在减少样本方差的条件下对数据的进一步优化,表现出比准确率更高的精度。由计算公式的原理可知,精确率的提高带来的是准确率的下降,所以需要引入特异度来平衡两者之间的关系,即精确值和准确率的调和均值,取值范围为0~1,1代表模型的输出结果最好,0代表模型的输出结果最差。