0
本文作者: AI研習(xí)社-譯站 | 2019-02-19 10:20 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
My Sweet Dreams about Automatic Sleep-Stage Classification
作者 | Dindin Meryll
翻譯 | RaydonLiu、永恒如新的日常、鈺鈺要做小太陽
校對 | 醬番梨 審核 | Pita 整理 | 立魚王
原文鏈接:
https://towardsdatascience.com/my-sweet-dreams-about-automatic-sleep-stage-classification-414128441728
致謝:有趣的海貍先生
最近的五個月,我花了一些時間來磨練自己的機(jī)器學(xué)習(xí)的技巧,完成的項目來自于一個以提高每個人夜間睡眠質(zhì)量的法國公司,他們的提出來的一個全新的挑戰(zhàn)。我們對睡眠不夠重視,現(xiàn)在在我們?nèi)丝谥幸呀?jīng)產(chǎn)生了量化的后果。直線下降的表現(xiàn),注意力缺乏,記憶力紊亂......都是缺乏睡眠時會產(chǎn)生的后果。醫(yī)學(xué)上的解決方案是頭上帶一個帶子,它能在夜晚很活躍地刺激你的腦部,監(jiān)控你的睡眠,并且提供不同的能讓人輕松入睡的項目。如果您非常好奇,想要更深入地研究睡眠在我們生活中真正的重要性,我推薦現(xiàn)在在伯克利加州大學(xué)的教授Matthew Walker的《為什么我們需要睡覺?》。這本書在很多方面都讓我很吃驚,給讀者提供了很多原則和建議,來理解和提高睡眠,因此也影響到了日常生活。
在我的Github上已經(jīng)提供了競賽中使用的所有的代碼,讀者可以隨意檢查并且給我反饋。我會詳細(xì)的解釋能夠在競賽中取得第二名的成績的方法,即使處理這個問題的概率是有限的。讀者也可以觀察到,這套代碼可以被應(yīng)用到更廣闊的與時間相關(guān)的問題中去,它主要以可解釋性為目標(biāo)的。最有好奇心的讀者,會發(fā)現(xiàn)的更多:深度學(xué)習(xí)框架,自編碼器,拓?fù)鋽?shù)據(jù)分析等“復(fù)活節(jié)彩蛋“,盡情享受吧!
在進(jìn)入整個機(jī)器學(xué)習(xí)的問題時,我們先花一些時間,來理解我們的背景,以及我們可以用來處理問題時的多模態(tài)醫(yī)學(xué)圖像資源?,F(xiàn)在在教育醫(yī)學(xué)環(huán)境測量工具的網(wǎng)站上,他們的頭帶儀器可以定量分析你的腦部活動(六個EEG電極,F(xiàn)7,F(xiàn)8,O1,O2,F(xiàn)pz,和一個參考電極),你的頭部活動,和呼吸(一個 3D 加速器)和一個你的心率(一個血氧計脈沖)。
Dreem網(wǎng)站
在睡眠過程中, 大腦會在不同的階段擺動,稱之為睡眠階段(下圖所示)。每個階段都有自己的獨有的電學(xué)圖像模式和特定的腦波。下圖涉及隨著時間變化的,睡眠階段變化,稱為睡眠時序列圖。
http://www.macmillanhighered.com/
在過去的十年中,人們一直想通過自動化來取代依靠??漆t(yī)生手動注釋的過程。當(dāng)我們查閱文獻(xiàn)的時候,會發(fā)現(xiàn)當(dāng)下人們正在大肆宣傳和這個話題相關(guān)的內(nèi)容,這也正是機(jī)器學(xué)習(xí)研究的內(nèi)容。
我不會深入的探討細(xì)節(jié),但是每一個階段都有和我們大腦健康相關(guān)的特定功能。精確地標(biāo)注這些階段,醫(yī)療領(lǐng)域可以更大范圍程度上研究病理性和睡眠障礙。更大的(并且是統(tǒng)計學(xué)上更加精確的)流行病學(xué)研究很有可能感謝魯棒性很好的數(shù)據(jù)為基礎(chǔ)的研究。最后,人們可能能夠提高他們的睡眠通過在日常基礎(chǔ)上的真實地度量和監(jiān)控。這就是DEEM真正想提供的東西。此外,既然公司建議大腦模擬在深度睡眠階段(3&4),他們必須盡可能精確地檢測到delta波,以此來正確地追蹤到它們。
從訓(xùn)練集中提取的真實的數(shù)據(jù)
Dreem提供了多傳感器集成頭帶中,收集地時間序列地數(shù)據(jù)。信號是不同頻率的,每30秒一段。監(jiān)督機(jī)器學(xué)習(xí)的問題在于,數(shù)據(jù)被分割成一個被標(biāo)注了睡眠階段的訓(xùn)練集(理論上是睡眠專家標(biāo)的)和一個測試集??焖俚貫g覽一下標(biāo)簽的比例,我們會發(fā)現(xiàn)這是一個比例失調(diào)多分類問題。信號分布的極值也突出了一個在數(shù)據(jù)集中體現(xiàn)的人工產(chǎn)品的問題(基于經(jīng)典的EEG信號波動是在-500到500微伏假設(shè))。
5個深思熟慮后標(biāo)注階段的注釋的比例
摸索數(shù)據(jù),之前意料之外的事情發(fā)生了,標(biāo)簽實際上是有序的!它意味著數(shù)據(jù)是來自于個人的連續(xù)數(shù)據(jù)的集合,這就有了時間性的優(yōu)勢。當(dāng)然,打開了新的模型構(gòu)建的領(lǐng)域(GRU,LSTM....)。根據(jù)我的理解,Dreem似乎是最近開始使用這些模型(典型的LSTM每30秒一次,30次一組)。但是,由于計算力的限制(深度學(xué)習(xí)模型在這個領(lǐng)域使用的一般都是“高射炮”)并且我也想模型有 更好的解釋性,所以我決定限制我自己使用舊的,魯棒性很好的方法去做特征工程。
將時序性放在一邊,之前觀察數(shù)據(jù)后,我提取了每個人的數(shù)據(jù),并且根據(jù)長時間的清醒期(標(biāo)簽0),把索引分開。下圖展示了提出睡眠時相序列圖的典型例子。一旦被提取,這些個體就會集合在一起成為子集,建立一個魯棒性很好的驗證集,能讓我的模型有泛化的能力。我最后用了不同長度的88 個子集,這應(yīng)該高估了實際上每個人的數(shù)據(jù)(相當(dāng)于平均睡眠階段是下面4.5個小時的分割階段)
提取出來的睡眠時相序列圖的一個例子
接下來是有趣的(也是最長的)部分!如何最好地描述用于睡眠階段分類的腦電圖信號?在瀏覽了這些文獻(xiàn)之后,我收集的多個描述性的見解正在醞釀中。結(jié)果,每30秒的間隔被轉(zhuǎn)換成1200個特征向量。我不會逐一介紹每個特性(僅僅因為大多數(shù)特性都是經(jīng)典的),而是將重點放在那些為睡眠階段分類提供最佳性能的特性上。
相關(guān)特征的重要性(XGBoost的最佳30個特性)
典型地,在上面的圖中,我估計了關(guān)于XGBoost模型的30個最重要特征的重要性,并將它們與使用LigthGBM、RandomForest和ExtraTrees獲得的相對重要性進(jìn)行了比較。在5倍交叉驗證中,XGB模型有最佳的表現(xiàn)。(這里的重要性是5個折疊結(jié)果模型的平均值。)
難怪混沌理論最終成為最重要的理論之一。為什么?因為我們試圖對波和正在發(fā)生的事件進(jìn)行分類:“低”混沌是針對周期性和可預(yù)測事件而言的;而“更高”的混沌對應(yīng)于通常不可預(yù)測的事件(如紡錘波,k -complex,這是特定于某些睡眠階段的模式)。到目前為止,這些特性在我的許多項目中都非常有用,所以我將保留一些行來介紹這些特性。
李雅普諾夫指數(shù)是指無窮小閉合軌跡之間的分離速率(一般距離)。它們量化了動態(tài)系統(tǒng)(此處為非平穩(wěn)EEGs)的可預(yù)測性,必須將其視為一個頻譜。
赫斯特指數(shù)是一種長期依賴的指標(biāo),它通過與自相關(guān)來量化一個特定時間序列的長期記憶。
分形維數(shù)對應(yīng)于復(fù)雜程度的統(tǒng)計指標(biāo),該指標(biāo)描述了模式中的細(xì)節(jié)如何隨測量尺度的變化而變化。
來源:PyEEG
這些都是奇怪的特征。我還使用了擬合的自回歸模型的系數(shù)、EEGs之間的距離、分解為Debauchies小波、趨勢殘差分解和光譜圖來發(fā)現(xiàn)頻率相關(guān)性(因為每個波模式[alpha、delta、theta波]都有特定的和顯著的頻率)。這為我進(jìn)入模型構(gòu)建的過程提供了基礎(chǔ)。
現(xiàn)在特征工程和數(shù)據(jù)預(yù)處理已經(jīng)完成了。我能夠區(qū)分一些個體的子集來構(gòu)建我的訓(xùn)練集和驗證集。為了構(gòu)建每一個模型,我用了5折交叉驗證法(也就是說,我將特定個體子集進(jìn)行更進(jìn)一步的泛化)。
最后,為了得到最終的預(yù)測結(jié)果,我考慮了以下兩點:基于噪聲水平的差異化以及通過堆疊進(jìn)行的聚合。
前一百個樣例的覆蓋率示例
一般來講,統(tǒng)計模型存在噪聲。我提出的方法是根據(jù)特定的指標(biāo)來構(gòu)建的訓(xùn)練集的子集和測試集。 通常為了對“噪聲水平”做一個定義,我們對每一個EEG信號設(shè)計了三個特征:最大值、最小值和曲線下面積。通過居中相關(guān)的三個分布(通過中間值),我可以我們樸素的定義了一個噪聲水平作為對應(yīng)的衡量實際標(biāo)準(zhǔn)差的一個距離比例。這個方法使我能夠定義5級噪聲水平,如上圖中所示表示覆蓋級別。如果一個信號沒有出現(xiàn)多個噪聲水平上,則其很可能包含偽影。這些限制表示的是5個不同的訓(xùn)練階段,分別代表每一個子集。然而,由于考慮到多樣的輸出這些就給我很大的自信。最后,通過迭代用更加精準(zhǔn)的預(yù)測值來覆蓋自己原來的預(yù)測。
一旦這5個水平被分離,我訓(xùn)練了四個不同的模型(在前面特征工程步驟的時候提到過):XGBoost, LightGBM, RandomForest,和ExtraTrees.這些模型的超參都是用我自己的設(shè)計的超高頻帶來調(diào)整。優(yōu)化的指標(biāo)是kappa得分(可以理解為協(xié)議間指標(biāo)),來作為這一領(lǐng)域的基準(zhǔn)測試。
Kappa得分的定義
5級噪聲的交叉驗證分?jǐn)?shù)(驗證集的Kappa分?jǐn)?shù))
在每個交叉驗證集上,這四個模型都給出了訓(xùn)練集、驗證集、測試集樣本的概率。此外,還重視數(shù)據(jù)不均衡的數(shù)據(jù)并且在訓(xùn)練和評分階段通過權(quán)值來加以限制。
來源: No Free Hunch
結(jié)果是,我得出這四個模型的概率這導(dǎo)致了我用了疊加的設(shè)計。這個方法是受到在結(jié)果中多樣性驅(qū)動的而提出的,如下面模型之間的預(yù)測相關(guān)性所示。上圖所示的基本方法主要包括將概率作為特征并且將其作為訓(xùn)練集、驗證集、測試集。在這個例子中,我使用一個線性模型(隨機(jī)梯度下降),并通過基于個體交叉驗證優(yōu)化了Kappa 度量。
模型概率與實際睡眠階段之間的相關(guān)性
四個模型的混淆矩陣(5級噪聲)
我們來看一下關(guān)系矩陣:因為(XGBoost,LightGBM)和(RandomForest, ExtraTrees)都為相似的結(jié)構(gòu),從直覺上來看他們的預(yù)測是高度相關(guān)的。然而,有兩點值得我們注意的:
類別1(第一階段作為少數(shù)類)是最難預(yù)測的,同時他在boost trees之間幾乎沒有顯示相關(guān)性;
類別3(第3、4階段)是最容易預(yù)測的(那個對于δ波的刺激來說是個好事)。進(jìn)一步的分析顯示類別1通常會和類別4(REM睡眠)相混淆,因為考慮到腦電信號的范圍和形狀的相似性所以這是可以預(yù)料到的。
最后,我改善了睡眠階段的連續(xù)性,保留了微喚醒事件,強(qiáng)調(diào)了過渡階段1的重要性。
這就是我在比賽中所做的部分工作。很多東西都可以改進(jìn),而且可能性是無限的。最終我取得了第二名的成績,在private test set上最終的kappa得分為70.7。正如預(yù)期的那樣,使用的策略并沒有完全避免過度擬合,在我的internal score和leaderboard score之間發(fā)現(xiàn)了明顯的差距。在這樣的醫(yī)療背景下,涉及到個人不可挽回地引發(fā)了協(xié)變量轉(zhuǎn)移的問題。這個問題一直存在,但我的研究結(jié)果顯示出了很大的泛化潛力。
我感謝我的愛人對馬修·沃克的書提出的建議!類似的項目還有很多!請繼續(xù)關(guān)注即將到來的文章,如果您想要更多,請給我點贊?。?/span>
資源
Github庫
網(wǎng)站的競爭
Dreem網(wǎng)站
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
長按鏈接點擊打開或點擊【你睡著了嗎?不如起來給你的睡眠分個類吧!】:
https://ai.yanxishe.com/page/TextTranslation/1444
AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
等你來譯:
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。