?

基于Streamlit的數據挖掘應用構建與設計

2024-04-09 08:05金鑫葉祥盧明許王潤林
信息系統工程 2024年3期
關鍵詞:S架構經濟責任審計數據挖掘

金鑫?葉祥?盧明許?王潤林

摘要:為縮短數據挖掘算法到實際應用的距離,通過設計、研發提出基于Streamlit框架,結合經濟責任審計業務需求,構建的情報子系統具有秒級響應,將通過Python實現的數據挖掘算法模塊轉換為B/S架構的Web應用,項目私有化部署通過Docker技術予以實現。該技術方案使得數據工程師專注于業務、算法與模型的優化,為開發大型數據挖掘應用提供了完整可靠的解決方案。

關鍵詞:數據挖掘;經濟責任審計;Streamlit ;B/S架構;Docker

一、前言

數據應用的構建與設計,無論采用C/S架構還是B/S架構,都涉及諸多技術方面,包括UI界面、數據采集、數據存儲、數據預處理、算法設計、模型調參以及對數據挖掘結果的展示與解釋?;诖?,數據工程師難以集中精力依據特定業務的數據特征開發數據模型,且由于模型調參一般是在代碼層面進行(即不能通過用戶交互的方式調參),造成數據應用的開發效率較低、技術難度較大。針對以上問題,遵循CRISP-DM數據挖掘方法論,基于Streamlit 框架,研究構建B/S架構的數據挖掘應用關鍵技術,并給出經濟責任審計領域情報子系統的應用開發實例。

二、數據挖掘與數據挖掘應用

(一)從首要原則模型到數據挖掘

首要原則模型是現代科學的重要研究方法,先建立基本的科學模型,如物理研究中牛頓運動定律、麥克斯韋電磁公式等,然后應用模型求解相關領域問題[1]。許多領域基本的“首要原則模型”往往是隱形和未知的,或者所研究的系統太復雜難以通過實驗建立模型。

大數據時代,無“首要原則模型”可用時,通??梢岳脵C器學習、人工智能等算法處理、分析采集到的數據,挖掘業務系統變量之間的有效關系[2]。于是,依賴“首要原則模型”的建模和數據分析方法就演變成運用算法直接從特定的數據集上開發出模型,并基于模型進行相應的數據分析和科學研究[3]。換言之,數據挖掘成為新的研究范式。

(二)CRISP-DM數據挖掘方法論

NCR、OHRA、SPSS、Daimler-Benz等全球組織聯合開發出CRISP-DM數據挖掘方法論,作為跨行業數據挖掘的標準流程,注重數據挖掘技術的應用。目前,數據挖掘系統的研制和開發大都遵循CRISP-DM標準,該模型將一個KDD工程分為6個不同的階段,各階段之間的順序依據業務需要靈活調整(如圖1所示)。

(三)數據挖掘應用

數據挖掘是一門跨學科領域,融合了多個學科,包括數據庫系統、數據倉庫、統計學、機器學習、可視化、信息檢索和高性能計算等。其主要目標是通過運用各種技術和方法,從數據中挖掘出有意義的信息和模式[4-5]。數據挖掘應用則是將這些技術應用于實際業務情境,開發數據應用系統深入挖掘數據價值,為業務決策提供量化依據和支持證據。數據挖掘工具通常以算法為中心,提供各種數據挖掘算法,如分類、聚類和關聯規則挖掘,而數據挖掘應用UI的設計更加側重于描述模型與業務的關聯[4-5]。綜合而言,數據挖掘應用是數據挖掘技術在實際業務中的具體應用,其UI設計著重于將技術與業務需求相結合,包括業務問題描述、數據預處理、模型描述和可視化,以及模型部署和監控。

三、快速構建數據挖掘應用的關鍵技術

(一)關鍵技術概述

構建數據挖掘應用,關鍵在于:一是將數據挖掘算法與具體業務相結合(考慮業務特殊性,本文以構建經濟責任審計情報子系統為例);二是快速部署體驗、及時反饋調整,以滿足探索式數據分析需求。

針對第一個關鍵問題,將數據挖掘算法劃分成兩大類,即驗證驅動挖掘和發現驅動挖掘(如圖2所示)。

針對第二個關鍵問題,提出了使用Streamlit框架來實現數據挖掘應用的開發。Streamlit的設計理念和特性使得開發人員能夠輕松地將數據挖掘模型與業務需求相結合,實現從編碼到部署運行的無縫銜接。

(二)重要設計理念

1.開發流

只需修改模型代碼并保存,Streamlit便會檢測到變化自動更新、部署應用程序,將最終效果展示出來。開發過程中勾選Web界面右上方的“Always rerun”。

2.數據流

數據流會引發系統頻繁更新和部署,為此通過@ st.cache裝飾器允許應用重新運行或處理大型數據集時,以緩存跳過需要大量計算的代碼段,快速無縫地進行應用程序更新。

3.繪制頁面內容

Streamlit應用由獨立腳本生成的頁面構成,與傳統Web頁面不同的是,Streamlit頁面內容都可以通過st.write(*args, **kwargs)語句生成,包括可視化圖表、數據結構等。

4.組件和側邊欄

組件是應用程序與用戶交互的部件。側邊欄是特殊的組件,常用于頁面跳轉。當數據或模型因優化等需要設置成可調狀態時,將組件視為變量,定義之后傳給st.write()即可。常用交互的組件有st.sidebar、 st.slider()、 或 s t.selectbox()。

5.App模型

一個Streamlit App是一個從頭到尾執行的Python腳本,App模型定義了Streamlit應用程序的執行過程,是多個App的集合。當用戶打開指向的瀏覽器標簽,對應腳本便重新執行。腳本執行時,Streamlit在瀏覽器中實時繪制動態頁面,用戶與組件交互時,重新執行腳本并在運行期間更新組件狀態。

(三)構建應用的特點

基于Streamlit構建的數據挖掘應用程序,具有以下三個特點:

1.腳本式編程

通過編寫Python代碼,引用數據挖掘工具包,結合業務場景自定義API,即可構建滿足特定需求的數據挖掘。

2.內置交互組件豐富

通過添加小部件與聲明變量,無需單獨編寫后端、定義路由、處理HTTP請求、連接前端、編寫HTML及CSS、JavaScript(有特殊需求的情況下支持前端UI自定義),即可實現用戶交互功能。用戶通過組件即可調節模型參數,Streamlit自動運行結果并展示。

3.運行式熱部署

通過命令Streamlit run運行main文件即可快速部署,迭代保存開發流時應用系統自動更新實現熱部署的功能。

四、經濟責任審計數據挖掘應用構建實例

(一)經濟責任審計概述

經濟責任審計的目的不同于常規審計,側重分清經濟責任人任職期間所在部門、單位經濟活動中應當負有的責任(如直接責任、領導責任等),為組織人事部門和紀檢監察機關等有關部門考核聘用干部提供參考依據[6-7]。

(二)應用系統的需求分析

通過對審計署及其地方審計機關的審計報告研究發現,經濟責任審計的工作重點集中在“三重一大”、預算執行與專項資金三個方面。該領域數據特征在于:被審計單位以文件形式保存的非結構化數據體量大、制式復雜,如經濟方針政策、決策部署等主要是會議紀要和通知,圍繞預算及其執行、專項資金的使用等產生的主要是各種合同、財務憑證和報批審核材料。被審計單位業務系統間沒有做到數據共享,特別是擁有海量數據的行政事業單位數據孤島現象較為嚴重,同一實體在不同業務系統中的元數據不一致。依據經濟責任審計的工作重點,本實例將經濟責任審計業務背景下的數據挖掘應用定位為“情報分析”子系統,應用旨在通過探索式數據分析,挖掘審計疑點為編寫審計取證單提供數據支撐[8]。

(三)應用系統的功能模塊設計

經濟責任審計情報子系統的功能包括五大模塊,分別是:

1.審計取證單模塊

打開該功能選擇空白取證單作為編寫的模板,是情報子系統最終成果。

2.訪談語音識別分析模塊

實現兩款功能:提取訪談錄音文件中的制式問題及被訪談者的回答,邊錄制談話內容邊轉成文本文件。

3.三重一大文本情報挖掘

模型一:比對《會議紀要》等電子文件修改日期與開會日期(首先查看會議紀要的“修改日期”用來判定是否為“會上未討論,但事后舞弊添加的情況”)。模型二:比對《會議紀要》等電子文件的內容是否包含待審計事項(待審計的三重一大事項有無對應的會議紀要記錄,標記相關責任人會上發言情況)。

4.八項規定情報分析模塊

模型一:通過圖像識別,審查是否存在超規格的會議、出訪等(輸入會議、活動等圖片,發文和報道,通過圖像識別,查看有無違反規定)。模型二:通過審查報銷額度,看是否存在超規格的工作、生活待遇等(對領導干部在任報銷財務數據可視化成圖表,看同類數額的變化趨勢等)。

5.經濟責任畫像綜合評價模塊

模型一:領導干部基本情況畫像(主要用于對領導干部基本情況的自動化和可視化描述)。模型二:領導干部內部社會網絡畫像(主要用于對領導干部內部履歷及職務關系網絡的描繪,以便掌握領導人的工作背景和特征)。模型三:領導干部審計問題及整改畫像[8](主要關注被審計單位或人員的問題整改情況,通過畫像判斷審計問題分布、整改完成率、是否存在審計問題反復出現)。

(四)基于Streamlit構建實例

以經濟責任審計情報子系統為例,關鍵的構建步驟如下:

1.編寫main.py腳本,作為整個Web應用程序的側邊欄,關鍵代碼如下:

with st.sidebar:

choose = option_menu( "經責審計情報子系統",

["審計取證單", "訪談語音識別分析", "三重一大文本情報", "八項規定情報分析","經責畫像綜合評價"],

icons = ['file-earmark-pdf','broadcast', 'translate', 'bar-chart-steps','boxes'],

menu_icon = "infinity",default_index = 0)

2.在與home.py同級的pages_ui目錄下編寫構成應用程序的子功能模塊腳本程序,需要擴展系統功能、迭代現有功能時在該目錄下編寫(修改)對應的腳本程序即可。注意腳本文件的命名與側邊欄“choose”調用的模塊名相同。

3.輸入命令streamlit run main.py,部署審計情報子系統到Web端,通過默認的8501號端口訪問,主頁如圖3所示。如遇到端口沖突的情況,可通過streamlit run main.py --server.port 9080,自定義部署到9080。

4.輸入域名訪問該數據挖掘應用,通過Docker將該應用程序部署到私有云并將Streamlit的默認端口映射到80,具體步驟是先編寫Dockerfile文件,其次創建Docker鏡像,最后運行Docker鏡像,生成容器命令為:sudo docker run -p 80:8501 -v /home/centos/st:/st 鏡像名稱。

五、結語

針對數據應用開發效率低、技術難度大等問題,提出基于Sstreamlit框架構建與設計B/S架構的經濟責任審計情報子系統。從代碼編制到部署運行的效果看,系統運行穩定、滿足經濟責任審計數據挖掘分析的需求。本文的技術方案為其他業務場景下快速開發大型、易擴展且易于部署維護的數據應用提供了重要經驗。審計取證單包括兩個方面:一是對被審計單位發現問題的描述(已實現),二是明確指出違反的法律法規條款(未實現)。下一步運用NLP技術挖掘法律法規、結合審計領域數據治理相關技術[9]構建知識圖譜并集成到本系統中實現從數據審計到智能審計。

參考文獻

[1]DAN HEBERT. First-Principle Versus Data-Driven Models[J]. Control,2008,21(6):85.

[2]吳俊杰,劉冠男,王靜遠,等.數據智能:趨勢與挑戰[J].系統工程理論與實踐,2020,40(08):2116-2149.

[3]胡潛,李夢婷,黃家娥.基于大數據挖掘的行業知識服務研究[J].情報理論與實踐,2021,44(08):90-94.

[4]張碩,金鑫,李兆峰,等.基于網格LOF和自適應K-means的離群點檢測算法[J].指揮信息系統與技術,2019,10(01):90-94.

[5]金鑫,郭智明,丁冠東,等.面向智慧營區的物聯計算模式[J].指揮信息系統與技術,2019,10(03):70-75.

[6]杜永紅,孫恩慧.黨政領導干部經濟責任審計的問題與解決路徑[J].財會月刊,2020(15):88-94.

[7]李學偉.領導干部考評視角下強化經濟責任審計及成果應用的策略探析[J].領導科學,2022(09):146-149.

[8]侯本忠,白雪嬌,劉甜甜,等.大數據視角下企業經濟責任審計畫像指標構建研究[J].會計之友,2021(23):102-106.

[9]葉祥,錢鋼.審計領域大數據治理體系研究[J].網絡安全與數據治理,2023,42(04):27-32.

基金項目:國家自然科學基金資助(61902189)

責任編輯:王穎振、周航

猜你喜歡
S架構經濟責任審計數據挖掘
探討人工智能與數據挖掘發展趨勢
基于并行計算的大數據挖掘在電網中的應用
B/S架構下的學生信息管理系統的設計
論事業單位經濟責任審計及風險控制
基于ASP技術下的大學生跳蚤書街平臺的設計與實施
基于B/S架構的高校實驗管理平臺的設計與實現
C/S架構下的中職教學輔助系統的新探索
新形勢下任期經濟責任審計的審計方法思考
經濟責任審計評價指標體系存在的問題分析
一種基于Hadoop的大數據挖掘云服務及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合