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