官术网_书友最值得收藏!

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個樣本屬于同一個類別,那么基于此可以判定該樣本也屬于這個類別,同時具備這個樣本集里的特征??梢园l現,隨機森林對樣本的預測并不是單線程的,而是利用了多棵決策樹共同預測樣本的類別。這里所說的決策樹是指此結構類似于樹狀結構,具有多個樹狀分叉節點,一般稱為決策節點,在進行類別決策時一般只與鄰近的樣本有關,并且在監督學習的條件下,通過事先設置好的特征指標來判定將哪個指標作為決策的節點。在選擇時,通常按照事先設定好的度量指標來確定哪個特征將作為決策節點,最后的決策結果以葉節點作為表示,特征的重要程度以確定特征的先后順序來表示,同時按照決策樹之間的距離進行排序,以出現頻率最高的類別作為決策樹的預測分類。在隨機森林中覆蓋的千百個決策樹中,通過輸入測試的數據與之前決策樹輸出一個的分類結果相比較,找出與之最為接近的特征,從而判定此樣本被分為哪一類。

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%正確,目前的研究也只是選出達到識別極限值的分類識別模型,下面通過常用的混淆矩陣的方法對分類模型的效果進行比較。

混淆矩陣是評價模型結果的指標,多用于判斷分類模型的優劣,使用nn類的形式來呈現準確率、精確率與特異度。準確率是指分類模型中判斷正確的結果占總觀測值的比重;精確率表達的是模型找到數據集中相關實例的能力;特異度表示為精確率和準確率的調和均值,模型的識別效果可以由以上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代表模型的輸出結果最差。

主站蜘蛛池模板: 高密市| 定西市| 怀宁县| 灵台县| 台南市| 沂南县| 广河县| 常德市| 全州县| 上高县| 濉溪县| 秦安县| 咸宁市| 霍林郭勒市| 涞水县| 疏附县| 洛扎县| 襄城县| 刚察县| 景东| 三河市| 双柏县| 大荔县| 阿坝| 方正县| 绥化市| 乐清市| 汪清县| 黔西| 东兰县| 驻马店市| 北京市| 太原市| 怀仁县| 扎鲁特旗| 雷山县| 枞阳县| 东乌珠穆沁旗| 五华县| 平南县| 竹溪县|