劉強(qiáng),郭瑞,王勤,孫凱
北京醫(yī)院 a. 器材處;b. 呼吸與危重癥科;c. 醫(yī)務(wù)處,北京 100730
呼吸機(jī)是重要的危重急救和生命支持設(shè)備,國家衛(wèi)健委發(fā)布的《呼吸機(jī)安全管理》要求運(yùn)用管理和醫(yī)學(xué)工程技術(shù)手段,對影響治療使用安全的因素進(jìn)行系統(tǒng)化管理,提高臨床保障能力[1]。目前呼吸機(jī)設(shè)備廠商不斷改進(jìn)技術(shù),提供更加敏感的算法,使呼吸機(jī)不漏掉患者報(bào)警,因此有效報(bào)警會伴隨更多的無效報(bào)警出現(xiàn),而在急診或重癥監(jiān)護(hù)病房,無效的誤報(bào)警會使醫(yī)護(hù)人員產(chǎn)生報(bào)警疲勞,出現(xiàn)響應(yīng)遲緩現(xiàn)象,從而降低醫(yī)療質(zhì)量[2]。當(dāng)前呼吸機(jī)普遍使用單變量報(bào)警算法和數(shù)字閾值預(yù)警模式[3],不同廠商主要使用流量傳感器、壓力傳感器、氧傳感器(氧電池)、溫濕度傳感器等來監(jiān)測患者端的通氣情況。當(dāng)患者實(shí)際數(shù)值超過醫(yī)生預(yù)設(shè)閾值時(shí),即觸發(fā)報(bào)警,因而不能分辨這一報(bào)警產(chǎn)生的原因是生理狀態(tài)改變、閾值設(shè)置范圍較大,還是外界醫(yī)療干預(yù),且不同呼吸機(jī)品牌的報(bào)警項(xiàng)目可相差多項(xiàng)報(bào)警信息和視覺信息。本研究基于呼吸機(jī)環(huán)境和參數(shù)設(shè)置,便捷、高效地對單中心數(shù)據(jù)建立預(yù)測模型。由于患者病情變化從而導(dǎo)致呼吸機(jī)環(huán)境和參數(shù)設(shè)置變化較大,故無法用建立數(shù)學(xué)模型的方法建模。本研究應(yīng)用機(jī)器學(xué)習(xí)中主流的隨機(jī)森林算法對呼吸機(jī)報(bào)警進(jìn)行分析及對重要參數(shù)進(jìn)行排序,通過建模識別每次報(bào)警是否為誤報(bào)警,并將報(bào)警提示對應(yīng)發(fā)送給醫(yī)生、呼吸治療師和臨床工程師。利用臨床在用呼吸機(jī)的實(shí)時(shí)數(shù)據(jù)真實(shí)反饋呼吸機(jī)的臨床使用情況,基于臨床數(shù)據(jù)采用機(jī)器學(xué)習(xí)的方法分析判別主要因素,可提升呼吸機(jī)的有效報(bào)警能力,降低無效報(bào)警數(shù)量,在臨床上對呼吸機(jī)的使用方面具有重要意義[4]。
呼吸機(jī)數(shù)據(jù)平臺的建立[5-6]是整合呼吸機(jī)臨床數(shù)據(jù)并進(jìn)一步進(jìn)行統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)的基礎(chǔ)。平臺基于國際醫(yī)療信息系統(tǒng)集成(Integrating the Healthcare Enterprise,IHE)的規(guī)范流程和相關(guān)技術(shù)框架[7-8]實(shí)現(xiàn)數(shù)據(jù)整合。我院采用呼吸機(jī)中心集中管理的模式,對有創(chuàng)呼吸機(jī)建立了呼吸機(jī)數(shù)據(jù)監(jiān)測拓?fù)鋱D(圖1)。呼吸機(jī)通信協(xié)議是系統(tǒng)平臺建立的核心問題,本研究采用IHE規(guī)范中的患者護(hù)理設(shè)備(Patient Care Device,PDC)框架,明確各廠家的數(shù)據(jù)流標(biāo)準(zhǔn),確保各廠家設(shè)備與系統(tǒng)平臺聯(lián)通[9]。呼吸機(jī)硬件連接在RS232 口上[10],系統(tǒng)平臺為B/S 架構(gòu),醫(yī)護(hù)端以移動手機(jī)或平板App 的形式[11]實(shí)時(shí)監(jiān)測所關(guān)注的呼吸機(jī)報(bào)警數(shù)據(jù),服務(wù)器端支持對數(shù)據(jù)的統(tǒng)計(jì)分析。
圖1 呼吸機(jī)數(shù)據(jù)平臺建立拓?fù)鋱D
1.2.1 數(shù)據(jù)準(zhǔn)備
接入數(shù)據(jù)平臺的呼吸機(jī)全部符合國際電工委員(IECEE)醫(yī)用設(shè)備及系統(tǒng)中警報(bào)的通用標(biāo)準(zhǔn)[12]。我院呼吸機(jī)中心有30 臺有創(chuàng)呼吸機(jī)接入呼吸機(jī)數(shù)據(jù)平臺,均為臨床常用的品牌,呼吸機(jī)型號及呼吸機(jī)數(shù)據(jù)平臺所記錄的報(bào)警數(shù)據(jù)量如表1 所示。
表1 接入呼吸機(jī)數(shù)據(jù)平臺設(shè)備列表
對呼吸機(jī)數(shù)據(jù)平臺單日的報(bào)警次數(shù)進(jìn)行統(tǒng)計(jì)得出報(bào)警總量為3699 次,其中只有近2%的報(bào)警為設(shè)備報(bào)警,其余均為通氣類報(bào)警,見圖2。
圖2 呼吸機(jī)報(bào)警分類對比
基于呼吸機(jī)特點(diǎn)及報(bào)警定義級別,將呼吸機(jī)報(bào)警分為設(shè)備報(bào)警和通氣報(bào)警[13]。設(shè)備報(bào)警也稱故障報(bào)警,通常指呼吸機(jī)及配件發(fā)生問題。由于各呼吸機(jī)廠家設(shè)備的報(bào)警等級最高,且在臨床使用中,設(shè)備報(bào)警產(chǎn)生的次數(shù)極低,因而設(shè)備報(bào)警(故障報(bào)警)在本研究中全部默認(rèn)為真實(shí)報(bào)警。臨床實(shí)際數(shù)據(jù)表明,通氣類報(bào)警數(shù)量最多且頻繁[14],與臨床使用操作等關(guān)系緊密,不確定因素較多,報(bào)警真實(shí)性有待提高。本研究基于呼吸機(jī)數(shù)據(jù)管理平臺,針對表1 中的4 款型號共5 臺呼吸機(jī),選取呼吸科病房持續(xù)上機(jī)大于30 d、情況相對穩(wěn)定的5 例患者,調(diào)閱30 d 的報(bào)警數(shù)據(jù),報(bào)警數(shù)據(jù)按臨床通氣報(bào)警進(jìn)行數(shù)據(jù)統(tǒng)計(jì),見表2。
表2 呼吸機(jī)臨床常見報(bào)警真實(shí)率統(tǒng)計(jì)
1.2.2 數(shù)據(jù)標(biāo)注
訓(xùn)練數(shù)據(jù)集由呼吸科醫(yī)生、呼吸治療師對該科室的在用5 臺呼吸機(jī)、30 d 共計(jì)20327 次臨床通氣報(bào)警進(jìn)行標(biāo)注,每條報(bào)警需在獲得一致的判斷后才被標(biāo)注為真或假,常見報(bào)警真實(shí)率統(tǒng)計(jì)如表2 所示。
1.3.1 算法架構(gòu)分析
隨機(jī)森林算法目前已成為醫(yī)學(xué)數(shù)據(jù)分析中較常用的一種機(jī)器學(xué)習(xí)方法[15-16]。本研究使用隨機(jī)森林算法構(gòu)建模型進(jìn)行訓(xùn)練和測試。隨機(jī)森林算法的優(yōu)勢在于能夠處理數(shù)量龐大的高維度特征,且不需要進(jìn)行降維,能評估各個(gè)特征在分類問題上的重要性,臨床訓(xùn)練速度快,可平衡誤差、生成樹狀結(jié)構(gòu)、判斷各個(gè)特征的重要性;缺點(diǎn)是在噪聲較大時(shí)容易出現(xiàn)過擬合現(xiàn)象,對異常值、缺失值不敏感。本文對影響真假報(bào)警的相關(guān)參數(shù)采用隨機(jī)森林算法研究的變量進(jìn)行表征[17],變量名及賦值說明如表3 所示。
表3 變量參數(shù)表
由表2 可知,報(bào)警總量為20327 條,其中真報(bào)警2948 條。由于正負(fù)樣本嚴(yán)重不均衡,因此在無效報(bào)警中隨機(jī)抽取和真實(shí)報(bào)警數(shù)量相同的樣本數(shù)組成要研究的數(shù)據(jù)集。首先,將數(shù)據(jù)集按照分層抽樣法分成訓(xùn)練集(14391 條)和測試集(5936 條),因變量為Y,其余13 個(gè)變量X 為自變量。先對數(shù)據(jù)進(jìn)行訓(xùn)練,再對測試集進(jìn)行驗(yàn)證完成預(yù)測。
1.3.2 建模過程
(1)導(dǎo)入所有必需的Python 庫并設(shè)置環(huán)境配置。使用Python 的“read_excel”方法從保存呼吸機(jī)數(shù)據(jù)平臺中加載數(shù)據(jù)并對數(shù)據(jù)進(jìn)行預(yù)處理,具體包括檢查數(shù)據(jù)中是否有缺失值,并使用Python 函數(shù)“dropna”刪除包含任何空值的行,再將阻力、分鐘容量等列的值轉(zhuǎn)換為浮點(diǎn)數(shù)并用“NaN”替換空字符串。
(2)將數(shù)據(jù)集劃分訓(xùn)練集和測試集,并在訓(xùn)練集上進(jìn)行模型訓(xùn)練[18]。訓(xùn)練模型前,使用scikit-learn 的“train_test_split”方法劃分?jǐn)?shù)據(jù)集,確保模型不會過度擬合訓(xùn)練數(shù)據(jù),并在測試集上測試。模型的輸出為0 和1 之間的概率值,該值等同于無效報(bào)警或真實(shí)報(bào)警的估計(jì)值,可確定模型具有泛化能力。本研究定義了一個(gè)Pipeline來處理缺失值(使用SimpleImputer)和特征縮放(使用StandardScaler)以填充缺失數(shù)據(jù)和特征縮放,避免不同特征的規(guī)模相差過大。
(3)隨機(jī)森林模型的初始化和超參數(shù)調(diào)優(yōu)。本研究執(zhí)行網(wǎng)格搜索并根據(jù)最高精度找到模型的最佳超參數(shù)(“n_estimators”“max_depth”和“criterion”)。本文通過GridSearchCV 實(shí)現(xiàn)超參數(shù)調(diào)優(yōu),該方法執(zhí)行交叉驗(yàn)證,可有效避免過度擬合。隨機(jī)森林模型的最優(yōu)超參數(shù)組合如表4 所示。其中,“gini”作為標(biāo)準(zhǔn),意味著使用基尼系數(shù)來衡量模型的質(zhì)量,也就是組成森林的決策樹的分裂;Max_depth 為4,表示森林中每棵決策樹的最大深度,據(jù)此可避免因樹生長得太深而導(dǎo)致的過度擬合;N_estimators 為150,說明森林由150 棵樹組成。
表4 最優(yōu)參數(shù)模型
模型訓(xùn)練完成后,提取特征重要性并在條形圖中進(jìn)行可視化排序。特征重要性可清晰地顯示呼吸機(jī)的哪些特征對于判斷無效報(bào)警最為關(guān)鍵。特征重要性排序圖如圖3 所示。
圖3 特征重要性排序圖
根據(jù)此次單中心數(shù)據(jù)建模分析獲得的特征重要性結(jié)果為:分鐘漏氣量>吸氣峰壓>阻力>分鐘容量>PEEP(呼氣末正壓)>潮氣量>泄漏 %>呼吸頻率>平均氣道壓>氧濃度>吸氣流量。從結(jié)果來看,“分鐘漏氣量”和“吸氣峰壓”是最重要的特征,每個(gè)特征的重要性約為0.201?!白枇Α钡闹匾员惹皟蓚€(gè)稍低,為0.195。其他特征的重要性較低,“氧濃度”和“吸氣流量”的重要性為零,說明“氧濃度”和“吸氣流量”可能對模型預(yù)測無效報(bào)警用處極小。
在測試集評估模型性能方面,本研究通過計(jì)算得出的混淆矩陣如圖4 所示。在測試集的1484 個(gè)樣本中,模型正確識別了1204 個(gè)無效報(bào)警(True Negatives),正確識別了196 個(gè)真實(shí)警報(bào)(True Positives)。該模型錯(cuò)誤地將28 個(gè)無效警報(bào)分類為真實(shí)警報(bào)(假陽性),并將56 個(gè)真實(shí)報(bào)警錯(cuò)誤分類為無效報(bào)警(假陰性)。從不同方面評估本文模型指標(biāo)[19],可得模型準(zhǔn)確度為0.94,精準(zhǔn)度為0.78,召回率為0.88,F(xiàn)1 得分為0.82,受試者工作特征(Receiver Operating Characteristic,ROC)曲線下面積(Area Under Curve,AUC)為0.92(圖5),說明模型表現(xiàn)較好,正確區(qū)分真實(shí)或無效報(bào)警的能力較強(qiáng)。
圖4 混淆矩陣圖
圖5 ROC曲線圖
根據(jù)隨機(jī)森林模型得到的各因素重要性得分圖可知,分鐘通氣量、吸氣峰壓、阻力特征重要性值最高(>0.19);氧濃度和吸氣流量的重要性幾乎為零,說明這2 項(xiàng)報(bào)警均為設(shè)備報(bào)警而非通氣類報(bào)警,一旦報(bào)警即為真實(shí)報(bào)警,符合目前臨床操作。通過超參數(shù)調(diào)優(yōu)建模可預(yù)測報(bào)警的真假,評估指標(biāo)中召回率為0.88,即約88%的報(bào)警可提示臨床為無效報(bào)警。隨機(jī)森林建模不同于公式建模,本研究的呼吸機(jī)設(shè)備、參數(shù)發(fā)生變化,包括報(bào)警設(shè)置改變,均須重新建模再進(jìn)行分析。同比其他數(shù)學(xué)模型訓(xùn)練方法,本研究的建模方式更符合臨床科室的實(shí)際情況,對于醫(yī)院單中心的數(shù)據(jù)分析更加適用。呼吸機(jī)數(shù)據(jù)平臺的服務(wù)器在獲得分析報(bào)警的真假結(jié)果數(shù)據(jù)后[20],由呼吸機(jī)數(shù)據(jù)平臺將真實(shí)報(bào)警或可能為誤報(bào)警的信息分別發(fā)送給工程師[21]和臨床醫(yī)護(hù)App 端,其中共有5223 次通過App 對醫(yī)護(hù)端提示存在誤報(bào)警可能,包括16 次延遲。網(wǎng)絡(luò)延遲目前在院內(nèi)測試中雖有20~30 s的延遲,但不會漏掉任何報(bào)警信息,且符合美國醫(yī)療器械促進(jìn)協(xié)會(Association for the Advancement of Medical Instrumentation,AAMI)規(guī)定的報(bào)警響應(yīng)時(shí)間。本研究的不足之處在于建模訓(xùn)練前期的20327 次報(bào)警需由醫(yī)生標(biāo)注,不可避免地會由于主觀判斷造成誤差以及產(chǎn)生標(biāo)注疲勞。獲得大量的數(shù)據(jù)標(biāo)注雖可提升算法的精度,但需要不斷克服臨床數(shù)據(jù)標(biāo)注中的困難。后續(xù)機(jī)器學(xué)習(xí)數(shù)據(jù)的積累可為呼吸機(jī)設(shè)備保障的早期預(yù)警提供參考。
基于呼吸機(jī)數(shù)據(jù)平臺的真實(shí)臨床數(shù)據(jù),用Python 語言建立超參數(shù)調(diào)優(yōu)的隨機(jī)森林模型和重要參數(shù)排序,經(jīng)測試集數(shù)據(jù)驗(yàn)證可及時(shí)、高效地進(jìn)行呼吸機(jī)報(bào)警數(shù)據(jù)分析和預(yù)測。在降低無效報(bào)警方面,設(shè)備報(bào)警及通氣類報(bào)警中真實(shí)報(bào)警被降低得較少。在不降低真實(shí)報(bào)警率的情況下,氧濃度和吸氣流量等真實(shí)報(bào)警很難被抑制,也客觀驗(yàn)證了無效報(bào)警目前無法完全被抑制但可以被提示。下一步,隨著呼吸機(jī)平臺數(shù)據(jù)量的不斷積累,基于重要報(bào)警參數(shù)的軟件算法不斷更新,以及整合心電、血氧、心率等監(jiān)護(hù)信息的多模態(tài)數(shù)據(jù)的導(dǎo)入,未來有望實(shí)現(xiàn)精準(zhǔn)地評價(jià)呼吸機(jī)的每次報(bào)警,最終實(shí)現(xiàn)完全抑制呼吸機(jī)的無效報(bào)警。