趙志建
(江蘇聯合職業技術學院南京工程分院,南京 211135)
近年來,人們由于工作壓力激增、生活作息紊亂、飲食不規律、環境污染以及人口老齡化嚴重等因素導致健康水平急劇下降,進而導致醫院門診量不斷飆升、住院量增長、復診率激增等現象。這些現象后續引發的門診掛號難、床位數緊張、專家資源稀缺、醫護人員超負荷工作等問題必然會增加醫院信息管理的難度,降低醫院的服務質量以及醫護人員的決策水平。因此,亟待引進新的理論、新的方法以及新的技術,助力縣、區、市級醫院以及各級分院的整體行業規劃、管理建設及智能化服務,為實現醫院現代化建設、高效化管理、智能化決策添磚加瓦。
隨著大數據時代的來臨,人工智能(Artificial Intelligence,AI)技術[1],包含數據挖掘、語音識別、圖像識別、自然語言處理等,正快速地席卷全球,并被廣泛應用于智能基因疾病預測[2]、智能醫學影像識別[3]、智能醫院管理及服務[4]、智能健康管理服務[5]、智能診療[6]、智能醫藥開發[7]等醫療領域,帶來了巨大的經濟效益和社會效益。
人工智能時代的到來預示著醫院信息化即將進入高速發展期。將人工智能技術應用于醫院信息管理體系,通過數字化和可視化實現模式,率先成型為AI醫療產品或服務,不僅能夠合理推薦各科室床位數、專家號比例等有限醫院資源,使其發揮最大效用,從而提高醫院資源的有效利用率,還能夠精準預測門診掛號窗口或收費窗口的高峰期并做好導醫或導診工作,從而提高醫院或醫護人員的智能化服務質量。
在此背景下,本文設計并實現了基于Spark平臺的智慧醫院決策系統,完成對海量數據信息的分布式存儲、智能化處理、合理性分析,從而挖掘出有價值的信息推薦給醫院或醫護人員,來提高醫院的整體管理水平,醫護人員的決策質量,床位、專家等醫療資源的合理化分配。
智慧醫院決策系統是運用云計算平臺、數據挖掘、人工智能等相關新一代信息技術來促進醫院行業的建設、管理和智能化服務的新發展模式,是傳統醫院在實施決策過程中和信息技術相結合的轉型升級[8]。
目前,國外在智慧醫院管理及服務方面遙遙領先,一直處于主導地位。全球50%的智能化醫院服務均分布在美國,20%分布于歐洲,而亞洲僅占5%。早在十年前,美國IBM公司就已經提出了智慧醫院的概念,如今已經取得巨大成功,完全實現了對醫院海量數據的共享以及對醫療服務的互通,通過對業務語言組件的標準化,實現了對所有患者病例的共享。這樣不僅使得醫生可以隨時檢查患者的健康狀況,也可以為用戶提供其他健康服務[9]。隨后,許多歐洲國家也相繼投入巨資打造健康檔案管理服務等,智慧醫院項目也得到了廣泛應用。近年來,IEEE召開的許多大數據相關的國際會議,都安排了專題來深入探討大數據挖掘技術在醫療健康等方面的應用與發展[10]。
盡管國內在該領域涉足較晚,但近幾年在政府政策極力推動下,發展也極為迅速。《新一代人工智能發展規劃》[11]和《關于促進“互聯網+醫療健康”發展的意見》[12]中明確指出,我國將大力推廣人工智能治療新模式,加強智慧醫院建設,早日建成快速精準的智能醫療體系。在國家的號召下,智慧醫療信息化應用層出不窮。例如:清華大學推出“家庭小護士”系統、百度健康云、阿里健康等。然而這些應用大多數功能過于單一,缺少大數據分析引擎,還遠不能滿足用戶的需求。目前,盡管人工智能技術在醫療健康行業得到了廣泛的應用,但是基于數據挖掘的智慧醫院服務管理系統還處于初級階段,成功落地的具體實踐案例少之又少,有待于進一步研究。
數據挖掘(data mining)又稱知識發現(knowledge discovery),泛指從大量數據中挖掘出隱含的、先前未知但潛在的有用的信息和模式的一個系統化和工程化的過程。在大數據時代里,數據的產生和收集是基礎,以數據為導向的數據挖掘工作是核心。數據挖掘是大數據中最關鍵也是最基本的工作,蘊含了應用性、工程性、集合性及交叉性四大特性。
數據挖掘涉及學科領域之多、學術領域之深、應用領域之廣,是集關聯規則挖掘、分類、回歸、聚類及異常檢測等多種任務于一身的強大知識發現引擎。在不同任務中,挖掘的目標和內容迥乎不同,挖掘算法也大相徑庭。
1.2.1 簡單線性回歸算法
線性回歸是利用數理統計中的回歸分析,來確定兩種或兩種以上變量間相互依賴的定量關系的一種統計分析方法。回歸分析中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析,即簡單線性回歸。
簡單線性回歸形式簡單、易于建模,卻蘊含著機器學習中重要的基本思想。假設給定連續型數據集其中xi∈R,簡單線性回歸可表示為
其中,回歸參數ω和b用于衡量f(x和y)之間的差別。
基于均方誤差(mean squared error,MSE)最小化(亦稱最小二乘法)試圖尋找一條直線使所有樣本到該直線的歐氏距離之和最小的方式來確定ω和b的值是回歸任務中最為常用的求解方法。因此,可試圖定義f(xi與yi)間的均方誤差并求其最小化,即:
求解ω和b使最小化的過程稱為線性回歸模型的最小二乘“參數估計”(parameter estimation),然后將E(ω,b)分別對ω和b求導,得到:
然后令公式(3)和(4)為零,可得到ω和b最優解:
1.2.2 CART回歸樹算法
分類與回歸樹(classification and regression trees,CART)最早是由Breiman提出的既可以用于分類,又可以用于回歸問題的經典二叉決策樹算法。相比于簡單線性回歸算法,CART回歸樹能夠很好地實現對非線性數據的擬合。
CART回歸樹算法處理回歸問題主要由回歸樹的生成與剪枝兩步組成:
(1)CART回歸樹的生成:遞歸地構建最小二乘回歸樹的過程,主要實現對輸入空間(即特征空間)的一個劃分,以及在劃分單元上的最優輸出值。假設給定連續型數據集其中xi∈R,回歸樹模型試圖學得,
其中Rm表示從輸入空間中劃分出的M個單元R1,R2,…,RM,cm表示每個單元Rm對應的輸出值,I(·)表示指示函數。
在回歸樹中,輸入空間的劃分常用啟發式方法,選擇第j個特征x(j)和它的取值s,作為劃分變量和劃分點,并定義兩個區域,
然后通過最小化均方誤差來尋找最優劃分變量j和最優劃分點s,求解如下,
通過固定輸入特征j可以找到最優切分點s,然后遍歷所有輸入特征,找到最優的切分特征j構成一個最優切分對(j,s)。依此將輸入空間劃分為兩個區域,接著對每個區域重復上述操作,直到滿足條件為止。
(2)CART回歸樹的剪枝:用驗證數據集對已生成的樹采用代價復雜度(cost-complexity pruning,CCP)[13]進行剪枝并選擇最優子樹,從而保證對未知數據有更準確的預測。
Spark是由UC Berkeley AMPLab實驗室研發并開源的基于內存計算的高效分布式計算框架[14]。相比于傳統的Hadoop,Spark引進了彈性分布式數據塊(resilient distributed dataset,RDD),高效的有向無環圖(directed acyclic graph,DAG)執行引擎,提高了在大數據環境下流數據處理的實時性,同時保證了高容錯性和高可伸縮性。除此之外,Spark還兼容分布式文件系統(hadoop distributed file system,HDFS)分布式存儲、多語言編程接口以及實時數據流處理(spark streaming)、交互式查詢(spark SQL)、機器學習(spark MLlib)和圖計算(spark GraphX)通用組件庫來解決實時計算、機器學習和圖計算等應用場景。整個Spark生態系統如圖1所示。

圖1 Spark生態系統
如圖2所示,智慧醫院決策系統主要由系統分析模塊、系統管理模塊、數據存儲模塊以及數據挖掘模塊組成。系統分析模塊又包括全院分析、門診分析、住院分析以及患者分析子功能模塊。系統管理模塊由機構管理、部門管理、系統功能管理、崗位管理、系統日志管理、移動管理、用戶管理等子功能管理模塊組成。數據存儲模塊包括分布式數據庫存儲及關系型數據庫存儲。數據挖掘模塊包括數據預處理、線性回歸預測及CART回歸預測。

圖2 系統總體結構
數據存儲模塊和數據挖掘模塊作為該系統的重要組成部分,本文將只針對這兩個模塊進行詳細闡述。
數據存儲模塊主要實現對醫院相關統計數據的存儲和管理,主要由兩部分組成:一是采用Hive數據倉庫工具實現對存儲在HDFS分布式文件系統上的醫院統計數據的解析查詢;二是利用Sqoop ETL工具完成Hive與關系型數據庫MySQL之間的數據傳遞,供Web端獲取并以圖表的形式可視化展示。
2.2.1 Hive解析查詢實現
本文采用的Spark框架作為如今最為流行的分布式平臺,不僅提供了向HDFS分布式文件系統讀取數據的應用接口,也提供了Hive數據倉庫工具的應用接口。
Hive是基于HDFS分布式文件系統之上的數據倉庫,所以底層數據均存儲在HDFS文件系統或HBase中。當用戶在Hive中創建完一張表時,會自動在HDFS中創建一個文件夾,表中數據對應著該文件夾下的文件。Hive也可以將結構化的數據文件映射為一張數據庫表,從而能夠從HDFS文件系統中直接讀取表數據,并為用戶提供一套完整的SQL查詢功能,實現對表數據的簡單查詢功能。
2.2.2 Hive與MySQL交互實現
由于Web端一般從關系型數據庫中讀取數據并可視化執行結果,為了完成分布式數據倉庫Hive與關系型數據庫(例如MySQL)之間的數據傳輸,Apache提供了Sqoop工具并實現了兩者之間的數據交互。Sqoop工具主要提供了兩個核心功能:導入和導出,其本質就是一個命令行工具,將導入和導出命令轉換成MapReduce程序來實現數據遷移,其工作機制如圖3所示。

圖3 Sqoop ETL工具工作機制
Sqoop安裝配置可參考[snail_bing,2018b],當用戶安裝完畢后,可以直接執行以下命令完成從Hive數據倉庫導出數據到MySQL。
Hive數據導出到MySQL命令實現
sqoop-export--connect jdbc:mysql://localhost:3306
--username xxx
--password***
--table tableName
--export_dir/hive/skybase.db
--columns“id,Month,Outpatient Volume”
數據挖掘模塊作為智慧醫院決策系統最為核心的部分,需要依賴Spark大數據平臺完成兩大目標,首要目標是能夠對醫院相關統計數據有個清晰的認知,然后對原始數據進行針對性的數據清洗、特征選擇、歸一化等預處理操作;其次就是要借助Spark通用組件庫MLlib機器學習庫為預處理完的數據合理選擇機器學習模型進行有效建模,并能夠保證對未知數據具有良好的預測性能。醫院統計數據大多是一維的,所以本文采用了簡單線性回歸和CART樹回歸這兩類回歸預測算法來進行對比實現。
2.3.1 數據預處理
智慧醫院決策系統的數據主要來源于醫院收集的統計數據,包括門診量、營收入、藥占比、床位占比、專家比、診療人數、醫生平均處方金額等。而這些數據在獲取過程中可能出現缺失等現象,所以需要對其進行缺失值檢查并處理,同時還需要去除唯一屬性。由于大部分統計數據特征維度都是一維且差值較小,所以一般不需要進行特征編碼,特征選擇及數據歸一化操作。
2.3.2 簡單線性回歸預測算法
為了更好地理解并實現線性回歸樹預測算法,仍以醫院門診量月度統計量為訓練數據去構建最小二乘回歸樹模型。假設已經從Hive數據倉庫中讀取到2018年前九個月的門診量數據,如表1所示,其中x表示月份,y表示每月對應的門診量,單位為千。目標就是要采用公式(1)中的權重ω和偏置量b來預測第十個月的門診量。

表1 2018年月度門診量
緊接著借助MLlib提供的線性回歸算法對前九個月數據進行訓練,然后根據訓練得到的模型對第十個月的門診量進行預測。預測結果為9.38,非常接近第十個月的門診量真實值9.1。圖4進一步展示了線性回歸模型在門診量月度統計數據上的擬合效果,從中可以看出線性回歸模型預測性能相對較好,但是并不能很好地刻畫門診量數據的分布,從第七個月的門診量數據即可看出線性模型的不足之處。

圖4 線性回歸模型擬合效果圖
2.3.3 CART回歸預測算法
實際應用場景中,往往原始數據并不都服從線性分布,此時再使用線性回歸模型去擬合該類數據必將大大降低模型的泛化能力,即對未來未知數據的不精確預測。針對該問題,本文進一步嘗試了另外一種經典的二叉決策樹回歸模型CART。決策樹模型不僅可以很好地擬合服從非線性分布的數據,還擁有一套成熟的理論體系,保障了樹模型的可解釋性。
為了更好地理解并實現CART回歸樹預測算法,還以醫院門診量月度統計量為訓練數據去構建最小二乘回歸樹模型。CART回歸樹算法擬合效果如圖5所示。

圖5 CART回歸模型擬合效果圖
決策樹回歸模型與簡單線性回歸模型在訓練數據上的擬合能力對比結果如圖6所示。從圖中可以明顯看出決策樹模型的決策邊界可以更好地描述原始訓練數據的特征空間分布,這也是決策樹模型及其集成模型(例如RandomForest,AdaBoost,XGBoost,GBDT等)被廣泛應用的重要。

圖6 回歸模型決策邊界對比圖
本文所研究的基于Spark平臺的智慧醫院決策系統,是一個適用于各縣、區、市級醫院、各級分院的智能化信息管理、分析與決策系統;是覆蓋門診量分析、住院量分析、全院收入分析、各科室床位占用比分析、各科室醫生藥占比分析、住院科室醫患比分析等各類數據分析引擎的智能分析系統;是能夠實現專家占比預測、門診掛號或收費窗口高峰期預測、各科室床位數推薦、門診量月度預測、門診收入年度預測、初診復診趨勢預測等預測功能,進而輔助醫院或醫護人員做出高效決策并合理分配醫療資源的智慧醫院決策系統。
為了從海量數據中提煉出有價值的信息輔助醫院或醫護人員做出合理決策,智慧醫院決策系統基于大數據分布式框架Spark提供的HDFS分布式存儲、MLlib機器學習庫的數據預處理及回歸預測,實現了對醫院信息數據的管理、分析、挖掘、推薦預測功能。從而提高了醫院的整體管理水平,醫生或醫護人員的智能化服務與決策質量,掛號與收費窗口高峰期的精準化預測,床位數、專家號比例等有限醫療資源的合理化分配。