王正剛,劉 忠,劉 偉,金 瑾
(1.中國科學院 成都計算機應(yīng)用研究所,四川 成都 610041;2. 中華人民共和國成都海關(guān),四川 成都 610041;3.中國科學院大學,北京 100049;4.成都信息工程大學,四川 成都 610103)
海關(guān)風險布控是海關(guān)入境檢疫和安全的重要保障,海關(guān)監(jiān)管人員綜合各類風險信息數(shù)據(jù),對照商品貨物報關(guān)單、艙單信息,分析商品貨物中可能存在的風險,依據(jù)經(jīng)驗對某些高風險商品進行布控,進入人工查驗環(huán)節(jié)的過程。傳統(tǒng)風險布控流程智能化程度較低,風險分析和布控的標準無法統(tǒng)一,準確率和布控查獲率較低,無法滿足海量商品單證風險分析的需要。因此,迫切需要實現(xiàn)該工作流程的智能化和系統(tǒng)化,這一流程的智能化要解決海關(guān)表格數(shù)據(jù)的分類。對于數(shù)據(jù)分類問題,本質(zhì)上是要構(gòu)造一個函數(shù),將連續(xù)型變量映射成離散型變量。假設(shè)D(X)是實例空間X上的一個概率分布,S是從眾多海關(guān)數(shù)據(jù)中抽取的訓練集,訓練集S中的每個實例都以概率分布D(X)從實例空間X中取得,x為S中的樣本。訓練集S被選中的概率P滿足如下公式:
海關(guān)智能化風險布控的目標如式(1)所示,根據(jù)訓練集S構(gòu)造一個分類模型,預(yù)測實例空間X中實例的分類。假設(shè)c*是實例空間X的正確的分類函數(shù),即對于任意的x∈X,c*(x)是它正確的分類。顯然,c*可以完全由集合{x∈X:c*(x)=1}確定。為了描述方便,可以令c*={x∈X:c*(x)=1}。然后,令h為由訓練集S構(gòu)造的分類器,則分類器h的真正錯誤概率可以定義為:
式中,hΔc*={x∈X:h(x)≠c*(x)}是h和c*的異或集。同時,分類器h的實驗錯誤概率可以定義為:
根據(jù)海關(guān)數(shù)據(jù)的特點選用適當?shù)姆诸惸P?,并將分類模型系統(tǒng)化,實現(xiàn)智能化風險布控是海關(guān)入境檢疫和安全的巨大進步。
基于先進的B/S 架構(gòu)即瀏覽器和服務(wù)器架構(gòu)開發(fā)應(yīng)用系統(tǒng),由3 個模塊組成:Web 應(yīng)用程序模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)存儲與分類模塊。各模塊功能和數(shù)據(jù)流如圖1所示。
圖1 系統(tǒng)模塊功能框圖
將來自于H2010/H2018 系統(tǒng)、e-CIQ 下發(fā)庫、艙單管理系統(tǒng)的海關(guān)數(shù)據(jù)匯集到數(shù)據(jù)匯聚服務(wù)器中,通過數(shù)據(jù)的抽取、轉(zhuǎn)換、清洗、加載等處理過程,完成多種形式表格數(shù)據(jù)的轉(zhuǎn)化,并存入應(yīng)用數(shù)據(jù)庫中。編寫Python 函數(shù)包,實現(xiàn)Python 與SQL 之間的調(diào)用,通過數(shù)據(jù)存儲和分類模塊對數(shù)據(jù)進行分類,并對系統(tǒng)的架構(gòu)進行研究,實現(xiàn)較好的交互功能。
Web 應(yīng)用程序模塊的主要任務(wù)包括構(gòu)建Web 頁面的上傳數(shù)據(jù)、模型選擇與分析、訓練過程、結(jié)果輸出等服務(wù)控件。從應(yīng)用數(shù)據(jù)庫中提取數(shù)據(jù)文件,通過數(shù)據(jù)處理模塊的數(shù)據(jù)規(guī)則進行清洗,完成數(shù)據(jù)清洗以及語義替換后,根據(jù)文獻[1]所述完成模擬圖像轉(zhuǎn)化,將表格數(shù)據(jù)的處理轉(zhuǎn)化為計算機處理的形式。該模塊采用Deamweaver 10和Visual Studio 2012作為開發(fā)平臺[2],通過將Deamweaver與Visual Studio相結(jié)合,可以大大提高數(shù)據(jù)庫與Web 應(yīng)用程序的集成效率,實現(xiàn)實時查詢和訪問更新數(shù)據(jù)庫的功能。
數(shù)據(jù)處理模塊需要完成不同來源、格式和特點的數(shù)據(jù)在邏輯上或物理上的集中,提供3 個主要業(yè)務(wù)數(shù)據(jù)庫,包含H2010H2018 報關(guān)單管理數(shù)據(jù)庫、e-CIQ 下發(fā)數(shù)據(jù)庫以及艙單管理數(shù)據(jù)庫的數(shù)據(jù)共享,運用ETL(Extract-Transform-Load)工具[3]實現(xiàn)不同數(shù)據(jù)庫之間海關(guān)數(shù)據(jù)的抽取、轉(zhuǎn)換和加載。ETL 的基本流程如圖2 所示。
圖2 ETL 數(shù)據(jù)抽取和加工過程
1.2.1 增量數(shù)據(jù)抽取
抽取是在數(shù)據(jù)庫中抽取表中新增或修改的數(shù)據(jù),抽取要求準確性和穩(wěn)定性。準確性是能夠?qū)I(yè)務(wù)系統(tǒng)中的變化數(shù)據(jù)按一定的頻率(系統(tǒng)設(shè)計抽取時間為12 h)準確地捕獲到;穩(wěn)定性是不能對現(xiàn)有業(yè)務(wù)系統(tǒng)造成太大的壓力,影響現(xiàn)有業(yè)務(wù)開展。因此,從現(xiàn)實使用效率和整體虛擬機集群的穩(wěn)定性考慮,海關(guān)大數(shù)據(jù)分析系統(tǒng)相關(guān)數(shù)據(jù)庫抽取選用增量抽取方式。
1.2.2 數(shù)據(jù)轉(zhuǎn)換
將從3 個源數(shù)據(jù)庫抽取的數(shù)據(jù)按照海關(guān)數(shù)據(jù)分類需求,對不同數(shù)據(jù)庫抽取的表頭、表體數(shù)據(jù)進行關(guān)聯(lián),為每條單證構(gòu)建一張包含全部數(shù)據(jù)字段的數(shù)據(jù)表格。對不滿足目的庫海關(guān)數(shù)據(jù)分類要求的數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換、清洗和加工,并對表格數(shù)據(jù)進行二維化,為神經(jīng)網(wǎng)絡(luò)提供訓練數(shù)據(jù)集。
1.2.3 數(shù)據(jù)加載
將轉(zhuǎn)換和加工后的數(shù)據(jù)裝載到目的庫中是ETL 過程的最后步驟。由于目的庫是關(guān)系數(shù)據(jù)庫,因此采用批量裝載方法,運用sqlldr 等命令實現(xiàn),采用這種方法進行的日志記錄是可恢復(fù)的,具備更好的可追溯性和可靠性。
數(shù)據(jù)存儲與分類模塊是海關(guān)大數(shù)據(jù)分析系統(tǒng)的核心組成部分。運用Python tensorflow 3.7 架構(gòu),通過“數(shù)據(jù)加載—模型加載—模型訓練和保存”3 個步驟,完成Resnet50[4]、Xception[5]、Mobilenet-V2[6]、BF-Net[1]等4 種網(wǎng)絡(luò)訓練模型的保存。該模塊包含4 種使用原始海關(guān)數(shù)據(jù)訓練完成的模型文件,以及在系統(tǒng)使用過程中對新抽取的海關(guān)數(shù)據(jù)進行訓練的模型文件,具備增量數(shù)據(jù)訓練功能和實時數(shù)據(jù)分類功能。網(wǎng)絡(luò)模型編譯由Python tensorflow 3.7 完成,為了實現(xiàn)Python 與SQL 之間的高效調(diào)用,我們對模型與數(shù)據(jù)庫連接的編程做了相應(yīng)研究。
數(shù)據(jù)庫駐留表上的應(yīng)用程序在盡可能接近數(shù)據(jù)的地方執(zhí)行計算,通過對這些表的查詢來表示計算。由于這些計算內(nèi)容是即時性的,并可能首先占用應(yīng)用程序的堆棧空間,因此在編程時需要利用現(xiàn)代數(shù)據(jù)庫內(nèi)核最新設(shè)計的數(shù)據(jù)處理能力,并避免提取太多具有一定規(guī)模的表內(nèi)容。在數(shù)據(jù)庫編程的過程中,難以一直堅持這樣的規(guī)則,如果計算很復(fù)雜,大部分的應(yīng)用程序就會用命令式的常規(guī)程序來實現(xiàn)。程序執(zhí)行是在數(shù)據(jù)庫內(nèi)核之外執(zhí)行的,與數(shù)據(jù)存在一定的距離;然后,這些程序通過嵌入式SQL 查詢與數(shù)據(jù)綁定,并查詢、識別和提取與下一個計算步驟相關(guān)的數(shù)據(jù)部分。Python 解釋器和SQL 引擎的相互作用如圖3 所示。
圖3 Python 解釋器和SQL 引擎的相互作用
為了提升數(shù)據(jù)庫與網(wǎng)絡(luò)模型之間的交互效率,編寫Python 函數(shù)包,函數(shù)包包含while 嵌套和for 迭代,包括早期退出(break)、條件執(zhí)行(if/else)、語句排序和變量引用/更新等命令式編程范式的特征結(jié)構(gòu)。該函數(shù)包嵌入通過SQL語句發(fā)出的SQL 查詢等操作,實現(xiàn)Python 與數(shù)據(jù)庫之間的調(diào)用。任何編程語言和數(shù)據(jù)庫后端都存在連接和部署的問題。在本系統(tǒng)中,主要用到Python3 和Python3 的Psycopg2 和pymysql 庫[7],針對PostgreSQL 后端運用庫實現(xiàn)廣泛的數(shù)據(jù)庫部署。
如圖4 所示,PostgreSQL 從用戶輸入查詢到最后結(jié)果的輸出可以分為兩大部分:前臺處理和后臺執(zhí)行。其中后臺執(zhí)行又包含4 個部分:Parser、Rewriter、Planner、Executor。
圖4 PostgreSQL 查詢
基于函數(shù)包的應(yīng)用程序在運行時,其性能通常可以達到調(diào)用的效果[8]。每次調(diào)用函數(shù)包都會在Python 解釋器和SQL 數(shù)據(jù)庫引擎之間產(chǎn)生一個常量。執(zhí)行由Python 端啟動,它遵循函數(shù)體的控制流。當嵌入式查詢SQL(Qi, [v1, ...,vn])時,數(shù)據(jù)庫引擎計劃查詢Qi(或從緩存中檢索以前構(gòu)造的計劃),實例化計劃參數(shù)v1, ...,vn操作,評估計劃,然后將結(jié)果返回給Python 之前拆卸臨時計劃的數(shù)據(jù)結(jié)構(gòu)。
圖3(a)描述系統(tǒng)反復(fù)地為Qi的任務(wù)觸發(fā)拆卸,如果SQL 查詢是迭代的,則代價比較大,一個函數(shù)調(diào)用往往會導致計劃和評估兩位數(shù)以上的SQL 查詢?;诤瘮?shù)包的方式可以有效地避免這種冗余情況,如圖3(b)所示。
由于數(shù)據(jù)分類任務(wù)的實時性要求,將復(fù)雜的計算駐留在數(shù)據(jù)庫系統(tǒng)[9]之外,采用函數(shù)包的編程方式實現(xiàn)Python 與SQL 之間的調(diào)用是非常有效的解決方案。
海關(guān)大數(shù)據(jù)分析系統(tǒng)體系架構(gòu)包含系統(tǒng)部署、系統(tǒng)數(shù)據(jù)和系統(tǒng)安全架構(gòu)。系統(tǒng)部署架構(gòu)如圖5 所示。
圖5 海關(guān)大數(shù)據(jù)分析系統(tǒng)部署架構(gòu)
應(yīng)用和數(shù)據(jù)庫獨立部署在海關(guān)管理網(wǎng)Vmware虛擬平臺。數(shù)據(jù)庫獨立部署采用讀寫分離,同時采用獨立的存儲保障數(shù)據(jù)的安全,提高系統(tǒng)的穩(wěn)定性和可靠性。
2.1.1 數(shù)據(jù)流
通過ETL(Extract-Transform-Load)工具對增量數(shù)據(jù)進行抽取,完成表格數(shù)據(jù)抽取、清洗、合并過程,再通過內(nèi)網(wǎng)交換平臺匯聚到數(shù)據(jù)匯聚服務(wù)器,實現(xiàn)數(shù)據(jù)轉(zhuǎn)換,生成模擬圖像,并傳輸?shù)綌?shù)據(jù)庫服務(wù)器。應(yīng)用服務(wù)器通過API 接口調(diào)用模擬圖像,進行海關(guān)數(shù)據(jù)分類識別,最后由系統(tǒng)計算每一條單證數(shù)據(jù)的分類結(jié)果。
2.1.2 可靠性
對海關(guān)大數(shù)據(jù)分析系統(tǒng)的應(yīng)用和數(shù)據(jù)接口實現(xiàn)統(tǒng)一,對數(shù)據(jù)實現(xiàn)集中存儲。基于海關(guān)內(nèi)網(wǎng)已有虛擬化平臺和服務(wù)器操作系統(tǒng)運行要求,該系統(tǒng)需兼容Vmware、KVM、QEMU等多種虛擬化平臺環(huán)境,同時適用于x86 和Linux 等不同架構(gòu)的操作系統(tǒng)。
2.1.3 擴展性
針對海關(guān)風險管理部門對系統(tǒng)的擴展性需求,該系統(tǒng)預(yù)留水平或垂直擴展條件,以充分利用硬件系統(tǒng)的資源,滿足海關(guān)大數(shù)據(jù)分析業(yè)務(wù)場景擴展要求,提升系統(tǒng)對新出現(xiàn)表格數(shù)據(jù)類型的兼容性和適用性。
海關(guān)數(shù)據(jù)信息主要包括海關(guān)管理的貿(mào)易態(tài)勢以及綜合業(yè)務(wù)、打擊走私、關(guān)稅征收、衛(wèi)生檢疫、動植檢疫、食品安全、商品檢疫、口岸監(jiān)管等業(yè)務(wù)信息。在數(shù)據(jù)架構(gòu)設(shè)計時,以海關(guān)報關(guān)和艙單數(shù)據(jù)為主,充分考慮模擬圖像數(shù)據(jù)的處理和存儲,以及數(shù)據(jù)庫的使用性能,合理規(guī)避數(shù)據(jù)庫的瓶頸,以此對數(shù)據(jù)進行分類分庫處理。
2.2.1 數(shù)據(jù)管理
為抽取的數(shù)據(jù)建立統(tǒng)一的數(shù)據(jù)倉庫,數(shù)據(jù)倉庫支持數(shù)據(jù)服務(wù)管理和元數(shù)據(jù)管理,同時集成BI(Business Intelligence)工具支撐服務(wù)和組件,為元數(shù)據(jù)管理提供完整數(shù)據(jù)字典。數(shù)據(jù)倉庫根據(jù)數(shù)據(jù)的生命周期,考慮了數(shù)據(jù)訪問、數(shù)據(jù)傳輸、數(shù)據(jù)存儲到數(shù)據(jù)銷毀各環(huán)節(jié)的數(shù)據(jù)安全。
2.2.2 數(shù)據(jù)訪問
海關(guān)監(jiān)管人員日常訪問操作需通過身份鑒別。數(shù)據(jù)庫管理員的運維操作均須雙因素認證,操作權(quán)限須經(jīng)安全審批并進行命令級規(guī)則固化。系統(tǒng)會對違規(guī)操作進行實時報警。
2.2.3 數(shù)據(jù)存儲
所有數(shù)據(jù)均采用碎片化技術(shù)進行保存,將數(shù)據(jù)分割成眾多數(shù)據(jù)片段,并遵循不一樣的隨機算法將數(shù)據(jù)存儲在服務(wù)器上。
2.2.4 數(shù)據(jù)銷毀
采用內(nèi)存釋放和數(shù)據(jù)清空手段在需要清除數(shù)據(jù)時對所有數(shù)據(jù)進行徹底刪除,數(shù)據(jù)庫管理員應(yīng)對數(shù)據(jù)庫服務(wù)器和存儲情況進行實時監(jiān)控。
針對系統(tǒng)涉及的應(yīng)用和數(shù)據(jù)資源開展定期備份,并定期巡檢備份日志和狀態(tài)。同時,為確保數(shù)據(jù)和網(wǎng)絡(luò)安全,需要對系統(tǒng)進行3 個方面的安全設(shè)計和管理:安全審計、訪問控制、數(shù)據(jù)加密[10]。對接入系統(tǒng)的設(shè)備進行統(tǒng)一管理,對登錄系統(tǒng)的用戶身份進行識別和管理;加強用戶權(quán)限的管理,實現(xiàn)特權(quán)用戶的權(quán)限分離;對所有系統(tǒng)運維人員的全部操作行為進行記錄;對物理資源和虛擬資源進行統(tǒng)一調(diào)度和分配。涉及對相關(guān)數(shù)據(jù)進行操作和使用時需要向相關(guān)業(yè)務(wù)主管部門進行申請審批。
系統(tǒng)運行的軟硬件環(huán)境為:Vmware 虛擬化平臺,版本號為VmwarevCenter6.7;承載虛擬機的物理機集群為聯(lián)想ThinkSystem SR850 +IBM V5000+EMC 存儲網(wǎng)關(guān),分配3 臺服務(wù)器虛擬機資源用于該系統(tǒng)的部署維護。3 臺服務(wù)器配置見表1 所列。
表1 虛擬機服務(wù)器配置參數(shù)
在傳統(tǒng)方式下,海關(guān)監(jiān)管人員需要逐一對近期需要通關(guān)的每一單進出口商品特別是進口商品開展風險分析,下達風險布控指令,工作壓力巨大,且風險分析的效率和準確度較低。而風險布控的商品越多,一線海關(guān)查驗人員的查驗壓力也越大。依托海關(guān)大數(shù)據(jù)分析系統(tǒng),海關(guān)監(jiān)管人員只需要點擊分類的數(shù)據(jù)項,再在右邊“選擇模型&分析”欄目中選擇用于分類的神經(jīng)網(wǎng)絡(luò)模型,點擊“訓練模型”,即可實現(xiàn)海關(guān)表格數(shù)據(jù)的自動風險分類。
海關(guān)監(jiān)管人員依托該系統(tǒng)過濾掉大量的可以直接放行的低風險商品單證(一般情況下,1 000 條報關(guān)數(shù)據(jù)可以直接過濾掉800 條左右的低風險商品信息),大大提高了海關(guān)風險布控的效率。同時,根據(jù)高風險商品的分類信息下達相應(yīng)的風險布控指令,進入查驗環(huán)節(jié),由此基本實現(xiàn)了海關(guān)智能化風險布控。另外,海關(guān)監(jiān)管人員還可以對不同模型的風險判別結(jié)果進行交叉驗證,根據(jù)國家政策調(diào)整和海關(guān)總署令的要求以及對外貿(mào)易的形勢變化,選擇嚴格或?qū)捤傻娘L險布控尺度,更好地實現(xiàn)人機交互。海關(guān)大數(shù)據(jù)分析系統(tǒng)如圖6所示。
圖6 海關(guān)大數(shù)據(jù)分析系統(tǒng)
本文提出用Web 應(yīng)用程序、數(shù)據(jù)處理、數(shù)據(jù)存儲與分類等3 個模塊構(gòu)建海關(guān)大數(shù)據(jù)分析系統(tǒng)。研究了應(yīng)用系統(tǒng)體系架構(gòu),包括部署、數(shù)據(jù)、安全運維架構(gòu)體系;分析了系統(tǒng)承載的軟硬件環(huán)境。海關(guān)監(jiān)管人員應(yīng)用海關(guān)大數(shù)據(jù)分析系統(tǒng)可以大大提高風險布控的精準度和效率,減輕一線查驗人員的負擔,實現(xiàn)海關(guān)智能化風險布控。