支建勛
(河北北方學院附屬第一醫(yī)院,河北 張家口 075000)
隨著我國社會經(jīng)濟的發(fā)展,醫(yī)療保險制度建設不斷完善,社會矛盾得到了有效緩解。但在現(xiàn)階段,醫(yī)保的報銷流程中眾多不規(guī)范的問題時有發(fā)生,醫(yī)療保險監(jiān)管體系亟待完善[1-4]。因此,需要推動信息技術的應用,為智能化的規(guī)范管控提供有力的技術保障[5-12]。
文中對醫(yī)療行業(yè)的區(qū)域化群體數(shù)據(jù)挖掘方法進行了研究,采用模糊K-means 算法對醫(yī)療數(shù)據(jù)進行處理,然后篩選出異常數(shù)據(jù)。另一方面,針對醫(yī)保數(shù)據(jù)量級的不斷增長,造成算法運行效率低下的問題,引入Hadoop 平臺和MapReduce 編程模型,對算法進行并行化處理,從而提升數(shù)據(jù)分析的效率[13-14]。
K-means 是機器學習領域常見的一種無監(jiān)督學習模型,其將距離作為相似性評價指標。在K-means算法中,將距離較近的同類數(shù)據(jù)點放入一個簇內(nèi),且它們之間的距離應盡可能地接近;而不同簇中心的距離則應盡可能地遠,圖1 所示為K-means 算法的原理示意圖[15-16]。
圖1 K-means算法原理示意圖
在K-means 算法中,定義輸入數(shù)據(jù){x1,x2,…,xn}的最終聚類數(shù)目為k,最終的簇中心為{c1,c2,…,ck},采用歐式距離計算每個數(shù)據(jù)點與簇中心cj的距離為:
當D(xi,cj)滿足式(2)時,則數(shù)據(jù)xi的分類標記為cj。當所有數(shù)據(jù)的分類完畢后,計算新的聚類中心為:
接著在新聚類中心下計算誤差平方和準則函數(shù):
當|J*-J|<ξ時,表示當前的準則函數(shù)收斂,當前聚類中心即為各個數(shù)據(jù)的最終類別;否則,算法將重新搜索新的聚類中心,直至J收斂。
圖2 給出了K-means 算法的流程圖。相較于其他的聚類算法,K-means 在計算時是相對可伸縮和高效的,所以在計算大型數(shù)據(jù)集時具有更優(yōu)的適應性。但由于算法在聚類時需要先進行聚類中心的初始化,所以會導致聚類的不穩(wěn)定;又因為每次迭代前都需要重新計算聚類中心,因此增加了算法的時間復雜度。針對以上問題,文中引入了模糊聚類的概念對算法進行改進。
圖2 K-means算法流程
在K-means算法下,每一個數(shù)據(jù)點x在分類時,均會被嚴格地放入某一個類別中。但在實際的分類過程中,這一個數(shù)據(jù)點x卻難以嚴格地被劃分到同一個類別中,其可能是以不同的隸屬度劃分到某一類。此時,對每一個分類結果均可用一個模糊分類矩陣表示:
其中,uij∈[0,1]表示某個數(shù)據(jù)點對于該類別的隸屬度。定義模糊分類下的誤差平方準則函數(shù)為:
在計算聚類中心時,也需要進行模糊化處理:
在迭代過程中,也需要對模糊矩陣進行修正:
通過對模糊K-means 算法運行的流程分析可以看出,算法的運行時間大多消耗在迭代計算上。而每次迭代需要完成兩步計算:1)對每個數(shù)據(jù)樣本計算距離;2)確認新的計算中心。這意味著K-means 算法的運行耗時與數(shù)據(jù)規(guī)模的大小呈正相關。對于醫(yī)保數(shù)據(jù),由于涉及人數(shù)眾多且數(shù)據(jù)量極大,需要采用并行化的手段提升數(shù)據(jù)挖掘的效率。
文中通過MapReduce 對模糊K-means 算法進行并行化處理,具體流程如圖3 所示。
圖3 模糊K-means的并行化流程
并行化K-means 算法的核心在于對群體醫(yī)療數(shù)據(jù)的切分,首先將數(shù)據(jù)劃分為不同的數(shù)據(jù)切片;然后將每個切片發(fā)送至不同的運算節(jié)點,在不同的計算節(jié)點進行聚類。根據(jù)MapReduce 的編程模型可知,整個算法包含Map、Combine 和Reduce 3 個過程。
1)Map:在該過程中,將數(shù)據(jù)劃分為若干個數(shù)據(jù)塊,計算數(shù)據(jù)對象到所有聚類中心的距離,并選擇距離最小的聚類中心點,最終形成<數(shù)據(jù)對象,聚類中心>的key/value 鍵值對形式。
2)Combine:其是對Map 過程的中間結果進行本地化Reduce 的過程,將屬于同一聚類中心的數(shù)據(jù)對歸類到一起。然后計算屬于同一聚類中心的數(shù)據(jù)對象之和,從而得到同一簇的聚類結果,最終的輸出結果為<聚類ID,各維坐標的累加和>。
3)Reduce:其是將Combine 得到的結果進行局部聚類,進而得到全局的聚類結果。在Reduce 的過程中,對所有簇的局部結果進行匯總,計算所有簇的新聚類中心。當結果收斂時,算法將該聚類中心作為最終的分類結果。
為了實現(xiàn)模糊K-means 算法的并行化處理,首先需要搭建Hadoop 計算集群。在Hadoop 平臺下,MapReduce 是分布式編程模型,該模型需要分布式文件系統(tǒng)HDFS 的支撐。在HDFS 文件系統(tǒng)下,需要搭建一個NameNode 和若干個DataNode 計算節(jié)點。文中的計算節(jié)點統(tǒng)一配置為如表1 所示的虛擬機。
表1 計算節(jié)點配置
每個節(jié)點的機器名、IP 地址和用途如表2 所示。
表2 Hadoop環(huán)境配置
在每臺虛擬機安裝Hadoop 并進行格式化后,啟動守護進程。將每臺虛擬機的Localhost 修改為表2所示的IP 地址,并在conf/.目錄下將Hadoop 的參數(shù)按照表3 進行設置。
表3 Hadoop參數(shù)配置
文中設計的并行化模糊K-means 算法的應用場景是醫(yī)療群體數(shù)據(jù)的挖掘與分析,以河北省某地區(qū)2020 年的醫(yī)保數(shù)據(jù)集作為樣本。該數(shù)據(jù)共包含藥品費、檢查費、手術費、掛號費、床位費等73 個維度的就診數(shù)據(jù),就診人數(shù)共323 213 人。其中,標記的醫(yī)保失信行為數(shù)據(jù)約占4.36%,醫(yī)保失信數(shù)據(jù)被標記為過度醫(yī)療、用藥不符、虛假支付、偽造票據(jù)、掛名診療、虛假套現(xiàn)等6 類。
在進行數(shù)據(jù)分析仿真時,首先對文中設計的模糊K-means 算法的性能進行分析,算法的相關參數(shù)設置如表4 所示。
表4 相關參數(shù)設置
由于原始的數(shù)據(jù)集較大,在使用K-means 算法時計算耗時較長,文中在評估算法性能時采用隨機抽樣的方式,選取了1 000 人的醫(yī)保數(shù)據(jù)進行演算。將串行化的模糊K-means 算法和傳統(tǒng)K-means 算法的結果進行了對比,串行化算法的性能指標如表5所示。
表5 串行化算法的性能指標
文中對并行化的模糊K-means 算法進行分析。表6 給出了隨著DataNode 的增加,算法相關指標的變化情況。
表6 并行化算法的性能指標
表6 中,算法的運行時間隨著節(jié)點數(shù)量s的變大而不斷減小,這說明對模糊K-means 的并行化切實提升了算法的運行速度,算法具有較好的擴展性。Speedup 是算法的加速比,該指標為算法在一臺計算機上的運行時間與在s臺計算機上運行時間的比值,這意味著多計算節(jié)點的引入可以縮短算法的運行時間;Scaleup 是算法在計算節(jié)點上執(zhí)行效率的評價指標。從表中可以看出,隨著計算節(jié)點數(shù)量的增長,Scaleup不斷降低,說明每個新增的節(jié)點計算資源均未浪費,并行后的算法對于數(shù)據(jù)集具有較強的適應性。
文中對當前醫(yī)療環(huán)境下,提升醫(yī)保流程智能度、規(guī)范度的相關數(shù)據(jù)算法進行了研究。通過引入模糊K-means 算法,提升數(shù)據(jù)挖掘算法的數(shù)據(jù)處理精度;通過借助分布式文件存儲和MapReduce 編程模型,實現(xiàn)模糊K-means 算法的并行化,提升了數(shù)據(jù)挖掘算法的處理速度。經(jīng)過在實際醫(yī)療數(shù)據(jù)上的仿真驗證可知,文中的研究內(nèi)容對于醫(yī)療群體數(shù)據(jù)的處理精度和處理效率均有明顯的提高,為醫(yī)療大數(shù)據(jù)分析方法提供了參考。