金鑫?葉祥?盧明許?王潤林
摘要:為縮短數(shù)據(jù)挖掘算法到實際應(yīng)用的距離,通過設(shè)計、研發(fā)提出基于Streamlit框架,結(jié)合經(jīng)濟(jì)責(zé)任審計業(yè)務(wù)需求,構(gòu)建的情報子系統(tǒng)具有秒級響應(yīng),將通過Python實現(xiàn)的數(shù)據(jù)挖掘算法模塊轉(zhuǎn)換為B/S架構(gòu)的Web應(yīng)用,項目私有化部署通過Docker技術(shù)予以實現(xiàn)。該技術(shù)方案使得數(shù)據(jù)工程師專注于業(yè)務(wù)、算法與模型的優(yōu)化,為開發(fā)大型數(shù)據(jù)挖掘應(yīng)用提供了完整可靠的解決方案。
關(guān)鍵詞:數(shù)據(jù)挖掘;經(jīng)濟(jì)責(zé)任審計;Streamlit ;B/S架構(gòu);Docker
一、前言
數(shù)據(jù)應(yīng)用的構(gòu)建與設(shè)計,無論采用C/S架構(gòu)還是B/S架構(gòu),都涉及諸多技術(shù)方面,包括UI界面、數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)預(yù)處理、算法設(shè)計、模型調(diào)參以及對數(shù)據(jù)挖掘結(jié)果的展示與解釋。基于此,數(shù)據(jù)工程師難以集中精力依據(jù)特定業(yè)務(wù)的數(shù)據(jù)特征開發(fā)數(shù)據(jù)模型,且由于模型調(diào)參一般是在代碼層面進(jìn)行(即不能通過用戶交互的方式調(diào)參),造成數(shù)據(jù)應(yīng)用的開發(fā)效率較低、技術(shù)難度較大。針對以上問題,遵循CRISP-DM數(shù)據(jù)挖掘方法論,基于Streamlit 框架,研究構(gòu)建B/S架構(gòu)的數(shù)據(jù)挖掘應(yīng)用關(guān)鍵技術(shù),并給出經(jīng)濟(jì)責(zé)任審計領(lǐng)域情報子系統(tǒng)的應(yīng)用開發(fā)實例。
二、數(shù)據(jù)挖掘與數(shù)據(jù)挖掘應(yīng)用
(一)從首要原則模型到數(shù)據(jù)挖掘
首要原則模型是現(xiàn)代科學(xué)的重要研究方法,先建立基本的科學(xué)模型,如物理研究中牛頓運動定律、麥克斯韋電磁公式等,然后應(yīng)用模型求解相關(guān)領(lǐng)域問題[1]。許多領(lǐng)域基本的“首要原則模型”往往是隱形和未知的,或者所研究的系統(tǒng)太復(fù)雜難以通過實驗建立模型。
大數(shù)據(jù)時代,無“首要原則模型”可用時,通??梢岳脵C(jī)器學(xué)習(xí)、人工智能等算法處理、分析采集到的數(shù)據(jù),挖掘業(yè)務(wù)系統(tǒng)變量之間的有效關(guān)系[2]。于是,依賴“首要原則模型”的建模和數(shù)據(jù)分析方法就演變成運用算法直接從特定的數(shù)據(jù)集上開發(fā)出模型,并基于模型進(jìn)行相應(yīng)的數(shù)據(jù)分析和科學(xué)研究[3]。換言之,數(shù)據(jù)挖掘成為新的研究范式。
(二)CRISP-DM數(shù)據(jù)挖掘方法論
NCR、OHRA、SPSS、Daimler-Benz等全球組織聯(lián)合開發(fā)出CRISP-DM數(shù)據(jù)挖掘方法論,作為跨行業(yè)數(shù)據(jù)挖掘的標(biāo)準(zhǔn)流程,注重數(shù)據(jù)挖掘技術(shù)的應(yīng)用。目前,數(shù)據(jù)挖掘系統(tǒng)的研制和開發(fā)大都遵循CRISP-DM標(biāo)準(zhǔn),該模型將一個KDD工程分為6個不同的階段,各階段之間的順序依據(jù)業(yè)務(wù)需要靈活調(diào)整(如圖1所示)。
(三)數(shù)據(jù)挖掘應(yīng)用
數(shù)據(jù)挖掘是一門跨學(xué)科領(lǐng)域,融合了多個學(xué)科,包括數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)倉庫、統(tǒng)計學(xué)、機(jī)器學(xué)習(xí)、可視化、信息檢索和高性能計算等。其主要目標(biāo)是通過運用各種技術(shù)和方法,從數(shù)據(jù)中挖掘出有意義的信息和模式[4-5]。數(shù)據(jù)挖掘應(yīng)用則是將這些技術(shù)應(yīng)用于實際業(yè)務(wù)情境,開發(fā)數(shù)據(jù)應(yīng)用系統(tǒng)深入挖掘數(shù)據(jù)價值,為業(yè)務(wù)決策提供量化依據(jù)和支持證據(jù)。數(shù)據(jù)挖掘工具通常以算法為中心,提供各種數(shù)據(jù)挖掘算法,如分類、聚類和關(guān)聯(lián)規(guī)則挖掘,而數(shù)據(jù)挖掘應(yīng)用UI的設(shè)計更加側(cè)重于描述模型與業(yè)務(wù)的關(guān)聯(lián)[4-5]。綜合而言,數(shù)據(jù)挖掘應(yīng)用是數(shù)據(jù)挖掘技術(shù)在實際業(yè)務(wù)中的具體應(yīng)用,其UI設(shè)計著重于將技術(shù)與業(yè)務(wù)需求相結(jié)合,包括業(yè)務(wù)問題描述、數(shù)據(jù)預(yù)處理、模型描述和可視化,以及模型部署和監(jiān)控。
三、快速構(gòu)建數(shù)據(jù)挖掘應(yīng)用的關(guān)鍵技術(shù)
(一)關(guān)鍵技術(shù)概述
構(gòu)建數(shù)據(jù)挖掘應(yīng)用,關(guān)鍵在于:一是將數(shù)據(jù)挖掘算法與具體業(yè)務(wù)相結(jié)合(考慮業(yè)務(wù)特殊性,本文以構(gòu)建經(jīng)濟(jì)責(zé)任審計情報子系統(tǒng)為例);二是快速部署體驗、及時反饋調(diào)整,以滿足探索式數(shù)據(jù)分析需求。
針對第一個關(guān)鍵問題,將數(shù)據(jù)挖掘算法劃分成兩大類,即驗證驅(qū)動挖掘和發(fā)現(xiàn)驅(qū)動挖掘(如圖2所示)。
針對第二個關(guān)鍵問題,提出了使用Streamlit框架來實現(xiàn)數(shù)據(jù)挖掘應(yīng)用的開發(fā)。Streamlit的設(shè)計理念和特性使得開發(fā)人員能夠輕松地將數(shù)據(jù)挖掘模型與業(yè)務(wù)需求相結(jié)合,實現(xiàn)從編碼到部署運行的無縫銜接。
(二)重要設(shè)計理念
1.開發(fā)流
只需修改模型代碼并保存,Streamlit便會檢測到變化自動更新、部署應(yīng)用程序,將最終效果展示出來。開發(fā)過程中勾選Web界面右上方的“Always rerun”。
2.數(shù)據(jù)流
數(shù)據(jù)流會引發(fā)系統(tǒng)頻繁更新和部署,為此通過@ st.cache裝飾器允許應(yīng)用重新運行或處理大型數(shù)據(jù)集時,以緩存跳過需要大量計算的代碼段,快速無縫地進(jìn)行應(yīng)用程序更新。
3.繪制頁面內(nèi)容
Streamlit應(yīng)用由獨立腳本生成的頁面構(gòu)成,與傳統(tǒng)Web頁面不同的是,Streamlit頁面內(nèi)容都可以通過st.write(*args, **kwargs)語句生成,包括可視化圖表、數(shù)據(jù)結(jié)構(gòu)等。
4.組件和側(cè)邊欄
組件是應(yīng)用程序與用戶交互的部件。側(cè)邊欄是特殊的組件,常用于頁面跳轉(zhuǎn)。當(dāng)數(shù)據(jù)或模型因優(yōu)化等需要設(shè)置成可調(diào)狀態(tài)時,將組件視為變量,定義之后傳給st.write()即可。常用交互的組件有st.sidebar、 st.slider()、 或 s t.selectbox()。
5.App模型
一個Streamlit App是一個從頭到尾執(zhí)行的Python腳本,App模型定義了Streamlit應(yīng)用程序的執(zhí)行過程,是多個App的集合。當(dāng)用戶打開指向的瀏覽器標(biāo)簽,對應(yīng)腳本便重新執(zhí)行。腳本執(zhí)行時,Streamlit在瀏覽器中實時繪制動態(tài)頁面,用戶與組件交互時,重新執(zhí)行腳本并在運行期間更新組件狀態(tài)。
(三)構(gòu)建應(yīng)用的特點
基于Streamlit構(gòu)建的數(shù)據(jù)挖掘應(yīng)用程序,具有以下三個特點:
1.腳本式編程
通過編寫Python代碼,引用數(shù)據(jù)挖掘工具包,結(jié)合業(yè)務(wù)場景自定義API,即可構(gòu)建滿足特定需求的數(shù)據(jù)挖掘。
2.內(nèi)置交互組件豐富
通過添加小部件與聲明變量,無需單獨編寫后端、定義路由、處理HTTP請求、連接前端、編寫HTML及CSS、JavaScript(有特殊需求的情況下支持前端UI自定義),即可實現(xiàn)用戶交互功能。用戶通過組件即可調(diào)節(jié)模型參數(shù),Streamlit自動運行結(jié)果并展示。
3.運行式熱部署
通過命令Streamlit run運行main文件即可快速部署,迭代保存開發(fā)流時應(yīng)用系統(tǒng)自動更新實現(xiàn)熱部署的功能。
四、經(jīng)濟(jì)責(zé)任審計數(shù)據(jù)挖掘應(yīng)用構(gòu)建實例
(一)經(jīng)濟(jì)責(zé)任審計概述
經(jīng)濟(jì)責(zé)任審計的目的不同于常規(guī)審計,側(cè)重分清經(jīng)濟(jì)責(zé)任人任職期間所在部門、單位經(jīng)濟(jì)活動中應(yīng)當(dāng)負(fù)有的責(zé)任(如直接責(zé)任、領(lǐng)導(dǎo)責(zé)任等),為組織人事部門和紀(jì)檢監(jiān)察機(jī)關(guān)等有關(guān)部門考核聘用干部提供參考依據(jù)[6-7]。
(二)應(yīng)用系統(tǒng)的需求分析
通過對審計署及其地方審計機(jī)關(guān)的審計報告研究發(fā)現(xiàn),經(jīng)濟(jì)責(zé)任審計的工作重點集中在“三重一大”、預(yù)算執(zhí)行與專項資金三個方面。該領(lǐng)域數(shù)據(jù)特征在于:被審計單位以文件形式保存的非結(jié)構(gòu)化數(shù)據(jù)體量大、制式復(fù)雜,如經(jīng)濟(jì)方針政策、決策部署等主要是會議紀(jì)要和通知,圍繞預(yù)算及其執(zhí)行、專項資金的使用等產(chǎn)生的主要是各種合同、財務(wù)憑證和報批審核材料。被審計單位業(yè)務(wù)系統(tǒng)間沒有做到數(shù)據(jù)共享,特別是擁有海量數(shù)據(jù)的行政事業(yè)單位數(shù)據(jù)孤島現(xiàn)象較為嚴(yán)重,同一實體在不同業(yè)務(wù)系統(tǒng)中的元數(shù)據(jù)不一致。依據(jù)經(jīng)濟(jì)責(zé)任審計的工作重點,本實例將經(jīng)濟(jì)責(zé)任審計業(yè)務(wù)背景下的數(shù)據(jù)挖掘應(yīng)用定位為“情報分析”子系統(tǒng),應(yīng)用旨在通過探索式數(shù)據(jù)分析,挖掘?qū)徲嬕牲c為編寫審計取證單提供數(shù)據(jù)支撐[8]。
(三)應(yīng)用系統(tǒng)的功能模塊設(shè)計
經(jīng)濟(jì)責(zé)任審計情報子系統(tǒng)的功能包括五大模塊,分別是:
1.審計取證單模塊
打開該功能選擇空白取證單作為編寫的模板,是情報子系統(tǒng)最終成果。
2.訪談?wù)Z音識別分析模塊
實現(xiàn)兩款功能:提取訪談錄音文件中的制式問題及被訪談?wù)叩幕卮?,邊錄制談話?nèi)容邊轉(zhuǎn)成文本文件。
3.三重一大文本情報挖掘
模型一:比對《會議紀(jì)要》等電子文件修改日期與開會日期(首先查看會議紀(jì)要的“修改日期”用來判定是否為“會上未討論,但事后舞弊添加的情況”)。模型二:比對《會議紀(jì)要》等電子文件的內(nèi)容是否包含待審計事項(待審計的三重一大事項有無對應(yīng)的會議紀(jì)要記錄,標(biāo)記相關(guān)責(zé)任人會上發(fā)言情況)。
4.八項規(guī)定情報分析模塊
模型一:通過圖像識別,審查是否存在超規(guī)格的會議、出訪等(輸入會議、活動等圖片,發(fā)文和報道,通過圖像識別,查看有無違反規(guī)定)。模型二:通過審查報銷額度,看是否存在超規(guī)格的工作、生活待遇等(對領(lǐng)導(dǎo)干部在任報銷財務(wù)數(shù)據(jù)可視化成圖表,看同類數(shù)額的變化趨勢等)。
5.經(jīng)濟(jì)責(zé)任畫像綜合評價模塊
模型一:領(lǐng)導(dǎo)干部基本情況畫像(主要用于對領(lǐng)導(dǎo)干部基本情況的自動化和可視化描述)。模型二:領(lǐng)導(dǎo)干部內(nèi)部社會網(wǎng)絡(luò)畫像(主要用于對領(lǐng)導(dǎo)干部內(nèi)部履歷及職務(wù)關(guān)系網(wǎng)絡(luò)的描繪,以便掌握領(lǐng)導(dǎo)人的工作背景和特征)。模型三:領(lǐng)導(dǎo)干部審計問題及整改畫像[8](主要關(guān)注被審計單位或人員的問題整改情況,通過畫像判斷審計問題分布、整改完成率、是否存在審計問題反復(fù)出現(xiàn))。
(四)基于Streamlit構(gòu)建實例
以經(jīng)濟(jì)責(zé)任審計情報子系統(tǒng)為例,關(guān)鍵的構(gòu)建步驟如下:
1.編寫main.py腳本,作為整個Web應(yīng)用程序的側(cè)邊欄,關(guān)鍵代碼如下:
with st.sidebar:
choose = option_menu( "經(jīng)責(zé)審計情報子系統(tǒng)",
["審計取證單", "訪談?wù)Z音識別分析", "三重一大文本情報", "八項規(guī)定情報分析","經(jīng)責(zé)畫像綜合評價"],
icons = ['file-earmark-pdf','broadcast', 'translate', 'bar-chart-steps','boxes'],
menu_icon = "infinity",default_index = 0)
2.在與home.py同級的pages_ui目錄下編寫構(gòu)成應(yīng)用程序的子功能模塊腳本程序,需要擴(kuò)展系統(tǒng)功能、迭代現(xiàn)有功能時在該目錄下編寫(修改)對應(yīng)的腳本程序即可。注意腳本文件的命名與側(cè)邊欄“choose”調(diào)用的模塊名相同。
3.輸入命令streamlit run main.py,部署審計情報子系統(tǒng)到Web端,通過默認(rèn)的8501號端口訪問,主頁如圖3所示。如遇到端口沖突的情況,可通過streamlit run main.py --server.port 9080,自定義部署到9080。
4.輸入域名訪問該數(shù)據(jù)挖掘應(yīng)用,通過Docker將該應(yīng)用程序部署到私有云并將Streamlit的默認(rèn)端口映射到80,具體步驟是先編寫Dockerfile文件,其次創(chuàng)建Docker鏡像,最后運行Docker鏡像,生成容器命令為:sudo docker run -p 80:8501 -v /home/centos/st:/st 鏡像名稱。
五、結(jié)語
針對數(shù)據(jù)應(yīng)用開發(fā)效率低、技術(shù)難度大等問題,提出基于Sstreamlit框架構(gòu)建與設(shè)計B/S架構(gòu)的經(jīng)濟(jì)責(zé)任審計情報子系統(tǒng)。從代碼編制到部署運行的效果看,系統(tǒng)運行穩(wěn)定、滿足經(jīng)濟(jì)責(zé)任審計數(shù)據(jù)挖掘分析的需求。本文的技術(shù)方案為其他業(yè)務(wù)場景下快速開發(fā)大型、易擴(kuò)展且易于部署維護(hù)的數(shù)據(jù)應(yīng)用提供了重要經(jīng)驗。審計取證單包括兩個方面:一是對被審計單位發(fā)現(xiàn)問題的描述(已實現(xiàn)),二是明確指出違反的法律法規(guī)條款(未實現(xiàn))。下一步運用NLP技術(shù)挖掘法律法規(guī)、結(jié)合審計領(lǐng)域數(shù)據(jù)治理相關(guān)技術(shù)[9]構(gòu)建知識圖譜并集成到本系統(tǒng)中實現(xiàn)從數(shù)據(jù)審計到智能審計。
參考文獻(xiàn)
[1]DAN HEBERT. First-Principle Versus Data-Driven Models[J]. Control,2008,21(6):85.
[2]吳俊杰,劉冠男,王靜遠(yuǎn),等.數(shù)據(jù)智能:趨勢與挑戰(zhàn)[J].系統(tǒng)工程理論與實踐,2020,40(08):2116-2149.
[3]胡潛,李夢婷,黃家娥.基于大數(shù)據(jù)挖掘的行業(yè)知識服務(wù)研究[J].情報理論與實踐,2021,44(08):90-94.
[4]張碩,金鑫,李兆峰,等.基于網(wǎng)格LOF和自適應(yīng)K-means的離群點檢測算法[J].指揮信息系統(tǒng)與技術(shù),2019,10(01):90-94.
[5]金鑫,郭智明,丁冠東,等.面向智慧營區(qū)的物聯(lián)計算模式[J].指揮信息系統(tǒng)與技術(shù),2019,10(03):70-75.
[6]杜永紅,孫恩慧.黨政領(lǐng)導(dǎo)干部經(jīng)濟(jì)責(zé)任審計的問題與解決路徑[J].財會月刊,2020(15):88-94.
[7]李學(xué)偉.領(lǐng)導(dǎo)干部考評視角下強(qiáng)化經(jīng)濟(jì)責(zé)任審計及成果應(yīng)用的策略探析[J].領(lǐng)導(dǎo)科學(xué),2022(09):146-149.
[8]侯本忠,白雪嬌,劉甜甜,等.大數(shù)據(jù)視角下企業(yè)經(jīng)濟(jì)責(zé)任審計畫像指標(biāo)構(gòu)建研究[J].會計之友,2021(23):102-106.
[9]葉祥,錢鋼.審計領(lǐng)域大數(shù)據(jù)治理體系研究[J].網(wǎng)絡(luò)安全與數(shù)據(jù)治理,2023,42(04):27-32.
基金項目:國家自然科學(xué)基金資助(61902189)
責(zé)任編輯:王穎振、周航