歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~web
讓咱們來看一下機器學習是如何應用於醫護行業以及如何藉助Apache Spark對患者的監控數據進行處理算法
現現在,IoT數據,實時流式數據分析(streaming analytics),機器學習以及分佈式計算的組合相比以前有了長足的進步,同時成本也比之前要低,這使得咱們能夠更快地完成更多數據的存儲及分析。瀏覽器
這裏列舉一些IoT,大數據以及機器學習協同完成任務的例子:數據結構
要理解IoT,流式數據和機器學習結合爲何能夠提高醫療保健的效果,首先應當瞭解慢性疾病——如心臟病等是人類的主要疾病,人們的大部分醫療費用都是用在其上,而其中的關鍵是如何作好慢性疾病的護理以免慢性病人沒必要要的住院。利用機器學習可使用更便宜的傳感器監控重要的生命體徵,讓醫生更快地根據患者的病情開出更智能的藥方,這一模式在低成本實現可擴展的慢性疾病管理上也具備着必定潛力。機器學習
斯坦福大學的一個研究小組的結果代表機器學習模型能夠比專家更好地從心電圖(EKG)中識別出心率失常。分佈式
正如麥肯錫全球研究所的Michael Chui所說:「放置在患者身上的傳感器能夠實現遠程實時監控以提供早期預警,從而避免慢性疾病的突發和昂貴的護理費用。而單單對充血性心力衰竭更好的護理就可能爲美國減小每一年10億美圓的費用開銷。」函數
監控數據能夠進行實時分析並在必要時向護理人員發送警報以便他們能夠即時瞭解病人狀況的變化。低的誤報率以及對真正的突發狀況發出異常警報都是必不可少的;在UCSF的一名病人就是由於服用了超出常規劑量39倍的抗生素而死去。超量39倍的警告和超量1%的警告看起來是徹底同樣的,以致於看到了太屢次警告的醫生和藥劑師經常不會看警告內容。微服務
本文中咱們將討論流式機器學習在心臟監控數據異常檢測上的應用,經過這個例子來展現數字醫療技術究竟是怎樣應用的。咱們將細緻討論如何經過技術來控制觸發警報的準確率從而下降誤報率。關於這個應用的細節,能夠從這裏下載pdf文檔查看,這項應用是基於 Ted Dunning 和 Ellen Friedman 編寫的Practical Machine Learning: A New Look At Anomaly Detection。工具
機器學習經過算法在數據中發現相應的模式(find patterns)並建模來識別這些模式(recognize patterns),從而在新的數據上進行預測(predict)。學習
異常檢測是無監督學習方法的一個實例。
無監督學習算法並不須要預先得到樣本的類別或者目標值。它一般用於在輸入數據中尋找到其中的規律以及數據之間的類似之處——比方說能夠經過用戶的消費數據對類似的顧客進行分組。
異常檢測首先會創建起正常體徵的模式/羣組,而後將觀測到的體徵與之進行對比,若是肯定二者之間存在明顯的誤差,就能夠發出警報。在這個方法之下,咱們最初並無咱們想要分類的異常情況下心臟情況的數據集。因此咱們首先查閱文獻尋找誤差值並對它進行近乎實時的評估。
心臟病專家已經定義了正常心電圖的波形模式;咱們利用這些模式來訓練模型根據以前觀測到的心跳活動來預測後續時刻的觀測值並與實際值進行比較來評估異常行爲。
爲了對正常的心跳行爲進行建模,咱們處理提取了一份心電圖並將它拆分爲大約1/3秒的片斷(數據是從某一特定的病人或者許多患者中的一組提取獲得的,片斷與片斷之間存在重疊),隨後經過聚類算法來對類似的波形進行分組。
聚類算法能夠對數據集中出現的數據進行分組。聚類算法訓練完成後能夠經過分析輸入樣本之間的類似度從而將樣本歸類到相應的類別下。K-means聚類算法會將觀測值分爲K組,每一個觀測值屬於哪個組取決於樣本距離哪個聚類中心的距離最短。
在下面的Apache Spark代碼中,咱們完成了一下工做:
經過以上步驟,咱們獲得了一系列聚類中心圖像構成的目錄(catalog),咱們能夠用它來重建(reconstruct)一個心電圖的數據,判斷它與咱們目錄中的哪個心電圖波形最爲類似。
爲了將得到的真實心電圖數據與上一步建模獲得的正常心跳行爲進行比較,小心跳波形到達左圖中的綠色波形中的重疊區域時,咱們能夠得到與之匹配的正常波形,如中間的紅色波形所示,將兩段紅色波形進行疊加就能夠獲得與左側綠色波形類似的正常心電圖波形。(爲了從重疊的波形片當中重建波形,咱們乘了一個基於正弦的窗函數)
在下面的Apache Spark代碼當中,咱們完成了如下步驟:
咱們使用了用於構建交互式時間驅動的微服務工具包Vert.x來構建實時的web應用展現觀測到的心電圖波形和重建的正常心電圖數據。在這個web應用當中:
觀測的心電圖波形和預期的心電圖波形之間的差值(綠色波形減去紅色波形)即重建偏差,也叫殘差(對應下方的黃色波形),若是殘差很大,那麼可能出現了異常。
異常檢測的目標是在保證低的誤報率的同時發現真正的問題;這裏的挑戰是如何肯定觸發警報的殘差閾值。
T-digest算法能夠基於數據集的分佈來評估重建偏差的大小。將這個算法加入到異常檢測的工做流以後你能夠將警報的數目設定爲全體觀測值的必定百分比。T-digist算法能夠用適量的樣本很是精準地估計出它的分佈(尤爲是長尾分佈,這也是咱們一般關注的異常值的分佈)。在獲得分佈的估計以後,就能夠設定產生警報的閾值了。比方說,設定閾值爲99%時每100次重建大約就有一次警報,這會產生相對多的警報(根據異常的定義,它應當是少見的)。而設置爲99.9%時,基本1000次重建纔會出現一次警報。
這篇文章介紹了流式系統如何利用輸入的心臟監控數據進行異常檢測,展現了數據如何經過一個自編碼器模型與後續的上下文數據進行比對從而檢測出異常的心跳數據。本文也是IoT,實時流式數據,機器學習和數據可視化以及警報場景相結合提高醫護人員工做效率並下降維護成本的一個實例。
在IoT的不一樣場景下,要求企業對數據進行收集、彙總,瞭解整個設備羣從而理解其中會發生的事件和狀況。除此以外,根據MapR的 Jack Norris所說,企業也應當對邊界事件注入智能以便他們能夠更快地對這些事件做出反應。擁有一個通用的數據結構能夠幫助你以相同的方式處理全部的數據,控制數據的訪問以及以更快、更高效的方式應用智能算法。
問答
相關閱讀
此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/developer/article/1106060?fromSource=waitui