睡眠腦電是研究睡眠障礙及相關疾病的重要客觀指標。人工解析腦電方法耗時且易受主觀因素影響, 而已有的自動睡眠分期算法則較為復雜且正確率較低。本文提出基于支持向量機(SVM)及特征選擇的單通道腦電睡眠分期方法。從單通道腦電波信號中提取了38個特征值。在此基礎上, 通過將特征選擇方法F-Score拓展到多分類, 增加淘汰因子, 為SVM分類器選擇合適的輸入特征向量組。文章采用標準的開源數據, 對比實驗了無特征選擇、標準的F-Score特征選擇以及帶有淘汰制的F-Score特征選擇三種方法。實驗結果表明, 本文提出的方法能夠有效提高分期正確率, 減少計算時間。
引用本文: 林秀晶, 夏勇明, 錢松榮. 基于支持向量機及特征選擇的單通道腦電波睡眠分期研究. 生物醫學工程學雜志, 2015, 32(3): 503-507, 513. doi: 10.7507/1001-5515.20150092 復制
引言
良好的睡眠是人類健康的重要基礎。長期低質量睡眠會導致記憶障礙、機體免疫力低下、抑郁,同時還容易誘發高血壓、心腦血管意外等,由此引發的意外事故層出不窮,造成的社會經濟損失和家庭負擔難以估量。睡眠腦電是研究睡眠障礙及相關疾病,如帕金森病、癲癇等的重要客觀指標,對于睡眠質量的分析有著重要的意義[1-2]。
醫學專家根據腦電圖的特征,將睡眠分成不同時相,進而分析睡眠質量。美國睡眠醫學學會的最新的標準將睡眠分為兩個時相,即非快動眼睡眠(non-rapid eye movement,NREM)和快動眼睡眠(rapid eye movement,REM)。NREM又可以進一步分成階段一(stageⅠ,N1),階段二(stageⅡ,N2),階段三(stageⅢ,N3)[3]。
目前最常用的睡眠分期方法是人工分析。醫生根據多導睡眠監測所得的腦電圖(electroencephalogram,EEG)、心電圖(electrocardiogram,ECG)、肌電圖(electromyogram,EMG)、呼吸情況等一系列生理信號的數據,結合日常經驗進行睡眠分期。該方法耗費了大量的人力,并易受個人經驗影響,其可靠性較難衡量。
許多自動睡眠分期的方法應運而生。這些方法的基本思路是通過從EEG、ECG、EMG等信號中提取特征值輸入,作為輸入訓練分類器,利用訓練好的分類器進行睡眠分析。EEG信號相對于其他信號,提供了更多的睡眠信息。僅使用EEG信號,有利于降低研究成本,減小設備體積,加快自動睡眠分期從研究到商用的進程。Flexer等[4]提出基于隱形馬爾科夫鏈(hidden Markov model,HMM)的單通道睡眠分期,可達到61.2%的正確率。文獻[1]指出較低的正確率原因在于睡眠各個階段之間的隨機性超出了HMM能夠處理的范圍。Güne?等[5]用簇類(clustering)中的最近鄰居法(k-nearest neighbor,k-NN)進行睡眠分期,單純的k-NN方法達到55.88%的正確率,同時也會耗費大量的時間在訓練計算上。人工神經網絡(artificial neural network, ANN)在睡眠分期中也有著重要的應用,Tagluk等[6]證明了ANN法解析腦電的正確率為74.7%±1.63%,然而網絡的高度復雜性也限制了該算法的擴展性。
支持向量機(support vector machines, SVM)相對于前述的分期算法,具有理論基礎完備、魯棒性良好、算法簡單等優點。早在2002年,Gorur將SVM應用于睡眠紡錘波(N2階段的特征波形)的提取中,其正確率比ANN方法高7%,充分證明了SVM應用于睡眠分期有著良好的效果[7]。SVM訓練識別的研究重點在于核函數的選擇、最佳訓練參數的確定與最優輸入向量的選取[8]。由于傳統SVM算法缺少對特征參數的選擇,以致低相關性的特征影響了分類的正確性,使得特征選擇更為重要。
本文提出基于SVM及特征選擇的單通道EEG睡眠分期的方法。在對單通道EEG信號提取特征的基礎上,研究如何為SVM選擇合適的輸入特征向量組以提高分類正確率和減少計算時間,并給出實驗及相關的分析。
方法
1.1 數據來源
本文實驗中的數據來源于http://www.physionet.org/physiobank/database/sleep-edfx/。數據采樣頻率為100 Hz,每幀30 s。將選取的15個實驗者的Fpz-Cz區域EEG數據,按幀截取,隨機打亂,分為訓練組和預測組。訓練組的數據組成:Wake 18%,N1 11%,N2 35%,N3 15%,REM 21%。預測組的數據組成:Wake 28%,N1 6%,N2 44%,N3 11%,REM 11%。
1.2 特征提取
特征是用來表示EEG所包含的信息。本文提取了38個特征,可以分為頻域特征、時域特征和其它特征。用1到38對所有的特征值進行標號,并總結如表 1。

表 1中,α、β、θ及δ為EEG頻段通常劃分的4個頻帶,頻帶頻率范圍為δ(0.5~4 Hz),θ(4~8 Hz),α(8~13 Hz),β(13~30 Hz)。獲取頻域信息為快速傅里葉變換。在其他特征中,定義頻帶時長為在一定的頻率范圍內,信號幅度超過閾值的時間長度公式。其定義式如式(1)所示。
$ \text{fre }\!\!\_\!\!\text{ time}\left(\boldsymbol{x}, \text{thld} \right)=\sum\limits_{t}{\sum\limits_{f=\text{L}}^{f=\text{H}}{\left(\left| \text{STFT}\left(t, f \right)>\text{thld} \right| \right)}}, $ |
其中STFT為短時傅里葉變換(the short-time Fourier transform,STFT)結果,L為頻率下限,H為頻率上限,為閾值。在本研究中,δ段thldδ=50μV,θ段thldθ=25μV,α段thldα=25μV,β段thldβ=25μV。
1.3 特征選擇
特征選擇的重要性在于減少輸入向量的數量,提高訓練和預測的準確性和效率。F-Score[11]是一種基于線性距離分析的特征選擇方法,它表示了兩組數據之間的距離。設訓練序列為x k, k=1, 2, …, m,正極性的點的個數是n+,負極性的點的個數是n-,則第i個特征的F-Score的定義如式(2)所示。
$ F\left(i \right)\equiv \frac{{{\left(\bar{\boldsymbol{x}}_{i}^{\left(+\right)}-{{{\bar{\boldsymbol{x}}}}_{i}} \right)}^{2}}+{{\left(\bar{\boldsymbol{x}}_{i}^{\left(-\right)}-{{{\bar{\boldsymbol{x}}}}_{i}} \right)}^{2}}}{\frac{1}{{{n}_{+}}-1}\sum\limits_{k=1}^{{{n}_{+}}}{{{\left(\boldsymbol{x}_{k, i}^{\left(+\right)}-\bar{\boldsymbol{x}}_{i}^{\left(+\right)} \right)}^{2}}+\frac{1}{{{n}_{-}}-1}\sum\limits_{k=1}^{{{n}_{-}}}{{{\left(\boldsymbol{x}_{k, i}^{\left(-\right)}-\bar{\boldsymbol{x}}_{i}^{\left(-\right)} \right)}^{2}}}}}, $ |
其中
文獻[11]也從式子含義上指出分子通過正負極性類的均值與整體的均值之間的距離之和表示類別的差距,記為SB,分母通過每一個類的特征值到該分類的均值點的距離之和表示類內聚合度,記為SW。則在多分類情況下,可以根據相同的SB與SW的定義分別求得分子與分母,得到多分類的F-Score。設訓練序列為x k,k=1, 2…, m,共有t類,第p類的實例個數為np, p=1, …, t,則F-Score的定義如式(3)所示。
$ F\left(i \right)\equiv \frac{\sum\limits_{p=1}^{t}{{{\left({{{\bar{\boldsymbol{x}}}}_{p, i}}-{{{\bar{\boldsymbol{x}}}}_{i}} \right)}^{2}}}}{\sum\limits_{p=1}^{t}{\frac{1}{{{n}_{p-1}}}\sum\limits_{k=1}^{{{n}_{p}}}{{{\left({{\boldsymbol{x}}_{p, k, i}}-{{{\bar{\boldsymbol{x}}}}_{p, i}} \right)}^{2}}}}}, $ |
其中
基于上述得到的F-Score,將之用于SVM的特征值選取。首先從大到小選取一系列的閾值threshold_list。根據閾值從大到小,選擇符合條件的特征值,將訓練數據分成訓練數據x train和測試數據x test,以x train訓練一個SVM模型,用這個模型來預測測試數據x test,重復這個過程10次,得到平均正確率。若平均正確率高于當前最高正確率,更新最高正確率,記錄下特征值數組。選出正確率最高的閾值。
需要注意的是F-Score是線性的,應用在非線性的數據中,會降低其適應性;F-Score在考慮特征選擇值時,僅考慮單一特征的作用,并未考慮特征之間的相互作用。鑒于此,我們在每組的閾值計算最后添加淘汰機制。若平均正確率低于當前最高正確率(best_acc)*淘汰因子范圍(eliminate_factor),剔除相對前一組新添加的特征向量,以降低特征值之間的相互作用對于最后結果的影響。
流程如下:
①初始化best_acc,threshold_list(按降序排列),eliminate_factor;
②對于步驟①中的threshold_list中的每一個閾值處理如下:
A.添加符合條件的特征值;
B.隨機將訓練數據分成訓練數據x train和測試數據x test;
C.以B中的訓練數據x train訓練一個SVM模型,用這個模型來預測測試數據x test;
D.重復A-C的步驟10次,得到平均正確概率;
E.若平均正確率低于當前best_acc*eliminate_factor,剔除相對前一組新添加的特征向量;
F.若平均正確率高于當前best_acc,更新best_acc,記錄下特征值數組;
③得到best_acc的特征值組。
1.4 SVM分類器
SVM[12]的基本原理是統計學習理論,通過尋求結構化風險最小,實現在最小化經驗風險和置信范圍的基礎上,使分類具備最強的泛化能力。它將數據映射到高維度的空間,尋找一個分隔平面使其有最大間隔。設有m個訓練樣本的樣本集{ x i, yi}, i=1, 2, …m, yi∈{-1, 1}, x i∈Rd。SVM的損失函數及約束條件如式(4)所示:
$ \ \begin{matrix} \underset{w, b, \xi }{\mathop{min}}\, \frac{1}{2}{{\boldsymbol{w}}^{\text{T}}}\boldsymbol{w}+C\sum\limits_{k=1}^{m}{{{\xi }_{k}}, } \ \text{s}\text{.t}\text{.}{{\text{y}}_{k}}\left({{\boldsymbol{w}}^{\text{T}}}\boldsymbol{\Phi} \left({{\boldsymbol{x}}_{k}} \right)+b \right)\ge 1-{{\xi }_{k}}, \ {{\xi }_{k}}\ge 0, k=1, 2, \cdots, m \ \end{matrix}, $ |
其中,w為超平面的法向量;ξk為松弛變量;C為懲罰因數。Φ(x k)為一個映射函數。映射取決于所選擇的核函數,兩者關系如式(5)所示:
$ k\left(\boldsymbol{x}, {{\boldsymbol{x}}^{'}} \right)=\boldsymbol{\Phi} {{\left(\boldsymbol{x} \right)}^{T}}\boldsymbol{\Phi} \left({{\boldsymbol{x}}^{'}} \right), $ |
其中,k(x, x′)為核函數,Φ(x)為映射函數。
常見的核函數有線性核函數、多項式核函數、高斯核函數、sigmoid核函數等。本文實驗將選擇高斯核RBF核函數。
SVM算法通常適用于二分類問題。對于多分類問題,需要以二分類為基礎構造多分類器。本文實驗將采用有向無環圖SVM(directed acyclic graph SVM,DAG-SVM)[13]方法。對于N分類問題,DAG_SVM包括N(N-1)/2個節點,每個節點是一個一對一的二分類器。這些分類器按層排列為N-1層有向無環圖。
1.5 系統框架
在本研究中,采用SVM作為自動睡眠分期系統的分類器模型,整體框架如圖 1所示。訓練階段的流程由虛線表示。從30 s/幀的信號中提取出所有特征,輸入到帶有淘汰制的F-Score的特征選擇器中,選擇步驟如1.3節所示。將特征選擇器選中的n個特征作為DAG_SVM的分類器的輸入,訓練得到所需要的DAG_SVM分類器。預測階段由實線表示:從30 s/幀的信號中提取出選中的n個特征,輸入已訓練好的分類器,得到睡眠分期結果。DAG_SVM的架構如圖 2所示。作為一個5分類的架構,共有4層10個二分類器。每層之間通過淘汰機制連接,如第一層,根據SVM(1-5)分類結果得到不是第5類的數據,輸入到第二層的SVM(1-4)中。每一個分類器均采用RBF核函數。


1代表Wake,2代表N1,3代表N2,4代表N3,5代表REM
Figure2. DAG_SVM framework1 for Wake, 2 for N1, 3 for N2, 4 for N3, 5 for REM
2 結果及分析
2.1 評價機制
下面列出常用的睡眠分期評價機制。
正確率(accuracy rate, AR)。AR為正確判斷的數目與總數之商,如式(6)所示:
$ AR=\frac{1}{n}\sum\limits_{i=1}^{n}{\frac{\text{Num }\!\!\_\!\!\text{ true}}{\text{total }\!\!\_\!\!\text{ num}}}\text{ }\!\!\times\!\!\text{ }100\text{ }\!\!%\!\!\text{ } $ |
平均訓練時間(mean time for training, MTT)與平均預測時間(mean time for predicting, MPT)是算法性能的重要指標,為每次訓練時間(time for training, TT)和每次預測時間(time for predicting, TP)的平均值,如式(7)(8)所示,其中n為訓練及預測次數。
$ \text{MTT=}\frac{1}{n}\sum\limits_{i=1}^{n}{\text{TT}} $ |
$ \text{MTT=}\frac{1}{n}\sum\limits_{i=1}^{n}{\text{TP}} $ |
2.2 實驗結果與分析
為了驗證算法的有效性,我們基于2.1中的數據進行實驗。特征值組F-Score排序結果為: F23, F18, F19, F9, F1, F29, F24, F38, F22, F8, F30, F25, F37, F6, F7, F35, F28, F27, F3, F21, F12, F5, F15, F4, F10, F16, F31, F36, F26, F2, F11, F17, F32, F14, F20, F34, F13及F33。實驗模型的具體描述如表 2所示。

實驗中,表 2中的所有實驗模型均采用圖 1所示的系統框架。#1模型、#2模型與#3模型除了特征選擇方法不同外,分類器均采用相同的如1.5節所述的DAG-SVM結構,每一次比較輸入相同的EEG數據,評價標準保持一致,在相同的電腦硬件、軟件以及時間下實驗。#2模型與#3模型在F-Score選擇特征值過程中的輸入數據保持一致。#2模型采用標準F-Score為分類器,選擇的17個特征值為F-Score排名前17位者;#3模型采用帶有淘汰制的F-Score為分類器,選擇了16個特征值,并非F-Score排名前16位。
在1 000次實驗后,表 2中每一個模型的評價結果如表 3所示。

在表 3中,沒有特征選擇方法、標準F-Score特征選擇算法以及帶有淘汰制的F-Score特征選擇方法分別與DAG-SVM相結合,得到睡眠分期的正確率分別為79.8%、81.0%和83.5%。因此,可以得出,標準的F-Score特征選擇對于提高分期正確率有著良好的效果,而F-Score增加淘汰制能夠在一定程度上克服標準F-Score沒有考慮特征值之間相互關系的缺陷,有效地提高了分類正確率。
在計算時間方面,相比#1模型的MTT,#2模型節約了53%,#3模型節約了71%;相比#1模型的MPT,#2模型節約了52%,#3模型節約了61%。可以得出,采用F-Score能夠很好地減少計算復雜度,節約計算訓練與預測時間,而增加淘汰機制后的F-Score僅選擇了16個特征值,所以計算時間又有所下降。
需要注意的是,上述實驗結果僅限于1.1節中所述的數據源,對于其它數據源的實驗結果在數值上可能有所偏差。另外,針對計算時間的實驗與電腦配置、系統負荷等相關,在其它電腦上實驗時,數值也會有所偏差。
本文算法與其它算法的正確率對比:#3模型的正確率為83.5%,相對于Flexer等[4]HMM模型的61.2%,Güne?等[5]基本k-NN模型的55.88%,Tagluk等[6]ANN模型的74.7%±1.63%,以及Gudmundsson等[14]帶有后驗概率估計的SVM模型的81%均有不同程度的提高。從中可以看出,#3模型采用帶有淘汰制的F-Score的SVM方法,相對于其它方法有著一定的優勢。需要注意的是上述對比并沒有確保實驗條件和數據來源的一致性,引用僅作為參照。
3 結論
睡眠腦電是研究睡眠障礙及相關疾病的重要客觀指標。已有的多種自動睡眠分期算法或因無法適應腦電的高度復雜性而使得正確率較低,或因算法過于復雜而使得效率低下。本文在SVM算法簡單、穩定性好、分期效果好的基礎上,提出基于SVM及特征選擇的自動睡眠分期算法。實驗表明,該方法相對于沒有特征值選擇的SVM算法和帶標準F-Score特征選擇的方法,在睡眠分期正確率和計算效率上均占有明顯的優勢,相對于其它自動睡眠分期算法,正確率均有不同程度的提高。該方法通過將F-Score由二分類拓展到多分類,增加淘汰因子,剔除低相關度的特征值,為DAG_SVM選擇了合適的輸入向量組,從而提高預測的正確率,減少計算時間,是一種有效的睡眠分期的解決方案。
引言
良好的睡眠是人類健康的重要基礎。長期低質量睡眠會導致記憶障礙、機體免疫力低下、抑郁,同時還容易誘發高血壓、心腦血管意外等,由此引發的意外事故層出不窮,造成的社會經濟損失和家庭負擔難以估量。睡眠腦電是研究睡眠障礙及相關疾病,如帕金森病、癲癇等的重要客觀指標,對于睡眠質量的分析有著重要的意義[1-2]。
醫學專家根據腦電圖的特征,將睡眠分成不同時相,進而分析睡眠質量。美國睡眠醫學學會的最新的標準將睡眠分為兩個時相,即非快動眼睡眠(non-rapid eye movement,NREM)和快動眼睡眠(rapid eye movement,REM)。NREM又可以進一步分成階段一(stageⅠ,N1),階段二(stageⅡ,N2),階段三(stageⅢ,N3)[3]。
目前最常用的睡眠分期方法是人工分析。醫生根據多導睡眠監測所得的腦電圖(electroencephalogram,EEG)、心電圖(electrocardiogram,ECG)、肌電圖(electromyogram,EMG)、呼吸情況等一系列生理信號的數據,結合日常經驗進行睡眠分期。該方法耗費了大量的人力,并易受個人經驗影響,其可靠性較難衡量。
許多自動睡眠分期的方法應運而生。這些方法的基本思路是通過從EEG、ECG、EMG等信號中提取特征值輸入,作為輸入訓練分類器,利用訓練好的分類器進行睡眠分析。EEG信號相對于其他信號,提供了更多的睡眠信息。僅使用EEG信號,有利于降低研究成本,減小設備體積,加快自動睡眠分期從研究到商用的進程。Flexer等[4]提出基于隱形馬爾科夫鏈(hidden Markov model,HMM)的單通道睡眠分期,可達到61.2%的正確率。文獻[1]指出較低的正確率原因在于睡眠各個階段之間的隨機性超出了HMM能夠處理的范圍。Güne?等[5]用簇類(clustering)中的最近鄰居法(k-nearest neighbor,k-NN)進行睡眠分期,單純的k-NN方法達到55.88%的正確率,同時也會耗費大量的時間在訓練計算上。人工神經網絡(artificial neural network, ANN)在睡眠分期中也有著重要的應用,Tagluk等[6]證明了ANN法解析腦電的正確率為74.7%±1.63%,然而網絡的高度復雜性也限制了該算法的擴展性。
支持向量機(support vector machines, SVM)相對于前述的分期算法,具有理論基礎完備、魯棒性良好、算法簡單等優點。早在2002年,Gorur將SVM應用于睡眠紡錘波(N2階段的特征波形)的提取中,其正確率比ANN方法高7%,充分證明了SVM應用于睡眠分期有著良好的效果[7]。SVM訓練識別的研究重點在于核函數的選擇、最佳訓練參數的確定與最優輸入向量的選取[8]。由于傳統SVM算法缺少對特征參數的選擇,以致低相關性的特征影響了分類的正確性,使得特征選擇更為重要。
本文提出基于SVM及特征選擇的單通道EEG睡眠分期的方法。在對單通道EEG信號提取特征的基礎上,研究如何為SVM選擇合適的輸入特征向量組以提高分類正確率和減少計算時間,并給出實驗及相關的分析。
方法
1.1 數據來源
本文實驗中的數據來源于http://www.physionet.org/physiobank/database/sleep-edfx/。數據采樣頻率為100 Hz,每幀30 s。將選取的15個實驗者的Fpz-Cz區域EEG數據,按幀截取,隨機打亂,分為訓練組和預測組。訓練組的數據組成:Wake 18%,N1 11%,N2 35%,N3 15%,REM 21%。預測組的數據組成:Wake 28%,N1 6%,N2 44%,N3 11%,REM 11%。
1.2 特征提取
特征是用來表示EEG所包含的信息。本文提取了38個特征,可以分為頻域特征、時域特征和其它特征。用1到38對所有的特征值進行標號,并總結如表 1。

表 1中,α、β、θ及δ為EEG頻段通常劃分的4個頻帶,頻帶頻率范圍為δ(0.5~4 Hz),θ(4~8 Hz),α(8~13 Hz),β(13~30 Hz)。獲取頻域信息為快速傅里葉變換。在其他特征中,定義頻帶時長為在一定的頻率范圍內,信號幅度超過閾值的時間長度公式。其定義式如式(1)所示。
$ \text{fre }\!\!\_\!\!\text{ time}\left(\boldsymbol{x}, \text{thld} \right)=\sum\limits_{t}{\sum\limits_{f=\text{L}}^{f=\text{H}}{\left(\left| \text{STFT}\left(t, f \right)>\text{thld} \right| \right)}}, $ |
其中STFT為短時傅里葉變換(the short-time Fourier transform,STFT)結果,L為頻率下限,H為頻率上限,為閾值。在本研究中,δ段thldδ=50μV,θ段thldθ=25μV,α段thldα=25μV,β段thldβ=25μV。
1.3 特征選擇
特征選擇的重要性在于減少輸入向量的數量,提高訓練和預測的準確性和效率。F-Score[11]是一種基于線性距離分析的特征選擇方法,它表示了兩組數據之間的距離。設訓練序列為x k, k=1, 2, …, m,正極性的點的個數是n+,負極性的點的個數是n-,則第i個特征的F-Score的定義如式(2)所示。
$ F\left(i \right)\equiv \frac{{{\left(\bar{\boldsymbol{x}}_{i}^{\left(+\right)}-{{{\bar{\boldsymbol{x}}}}_{i}} \right)}^{2}}+{{\left(\bar{\boldsymbol{x}}_{i}^{\left(-\right)}-{{{\bar{\boldsymbol{x}}}}_{i}} \right)}^{2}}}{\frac{1}{{{n}_{+}}-1}\sum\limits_{k=1}^{{{n}_{+}}}{{{\left(\boldsymbol{x}_{k, i}^{\left(+\right)}-\bar{\boldsymbol{x}}_{i}^{\left(+\right)} \right)}^{2}}+\frac{1}{{{n}_{-}}-1}\sum\limits_{k=1}^{{{n}_{-}}}{{{\left(\boldsymbol{x}_{k, i}^{\left(-\right)}-\bar{\boldsymbol{x}}_{i}^{\left(-\right)} \right)}^{2}}}}}, $ |
其中
文獻[11]也從式子含義上指出分子通過正負極性類的均值與整體的均值之間的距離之和表示類別的差距,記為SB,分母通過每一個類的特征值到該分類的均值點的距離之和表示類內聚合度,記為SW。則在多分類情況下,可以根據相同的SB與SW的定義分別求得分子與分母,得到多分類的F-Score。設訓練序列為x k,k=1, 2…, m,共有t類,第p類的實例個數為np, p=1, …, t,則F-Score的定義如式(3)所示。
$ F\left(i \right)\equiv \frac{\sum\limits_{p=1}^{t}{{{\left({{{\bar{\boldsymbol{x}}}}_{p, i}}-{{{\bar{\boldsymbol{x}}}}_{i}} \right)}^{2}}}}{\sum\limits_{p=1}^{t}{\frac{1}{{{n}_{p-1}}}\sum\limits_{k=1}^{{{n}_{p}}}{{{\left({{\boldsymbol{x}}_{p, k, i}}-{{{\bar{\boldsymbol{x}}}}_{p, i}} \right)}^{2}}}}}, $ |
其中
基于上述得到的F-Score,將之用于SVM的特征值選取。首先從大到小選取一系列的閾值threshold_list。根據閾值從大到小,選擇符合條件的特征值,將訓練數據分成訓練數據x train和測試數據x test,以x train訓練一個SVM模型,用這個模型來預測測試數據x test,重復這個過程10次,得到平均正確率。若平均正確率高于當前最高正確率,更新最高正確率,記錄下特征值數組。選出正確率最高的閾值。
需要注意的是F-Score是線性的,應用在非線性的數據中,會降低其適應性;F-Score在考慮特征選擇值時,僅考慮單一特征的作用,并未考慮特征之間的相互作用。鑒于此,我們在每組的閾值計算最后添加淘汰機制。若平均正確率低于當前最高正確率(best_acc)*淘汰因子范圍(eliminate_factor),剔除相對前一組新添加的特征向量,以降低特征值之間的相互作用對于最后結果的影響。
流程如下:
①初始化best_acc,threshold_list(按降序排列),eliminate_factor;
②對于步驟①中的threshold_list中的每一個閾值處理如下:
A.添加符合條件的特征值;
B.隨機將訓練數據分成訓練數據x train和測試數據x test;
C.以B中的訓練數據x train訓練一個SVM模型,用這個模型來預測測試數據x test;
D.重復A-C的步驟10次,得到平均正確概率;
E.若平均正確率低于當前best_acc*eliminate_factor,剔除相對前一組新添加的特征向量;
F.若平均正確率高于當前best_acc,更新best_acc,記錄下特征值數組;
③得到best_acc的特征值組。
1.4 SVM分類器
SVM[12]的基本原理是統計學習理論,通過尋求結構化風險最小,實現在最小化經驗風險和置信范圍的基礎上,使分類具備最強的泛化能力。它將數據映射到高維度的空間,尋找一個分隔平面使其有最大間隔。設有m個訓練樣本的樣本集{ x i, yi}, i=1, 2, …m, yi∈{-1, 1}, x i∈Rd。SVM的損失函數及約束條件如式(4)所示:
$ \ \begin{matrix} \underset{w, b, \xi }{\mathop{min}}\, \frac{1}{2}{{\boldsymbol{w}}^{\text{T}}}\boldsymbol{w}+C\sum\limits_{k=1}^{m}{{{\xi }_{k}}, } \ \text{s}\text{.t}\text{.}{{\text{y}}_{k}}\left({{\boldsymbol{w}}^{\text{T}}}\boldsymbol{\Phi} \left({{\boldsymbol{x}}_{k}} \right)+b \right)\ge 1-{{\xi }_{k}}, \ {{\xi }_{k}}\ge 0, k=1, 2, \cdots, m \ \end{matrix}, $ |
其中,w為超平面的法向量;ξk為松弛變量;C為懲罰因數。Φ(x k)為一個映射函數。映射取決于所選擇的核函數,兩者關系如式(5)所示:
$ k\left(\boldsymbol{x}, {{\boldsymbol{x}}^{'}} \right)=\boldsymbol{\Phi} {{\left(\boldsymbol{x} \right)}^{T}}\boldsymbol{\Phi} \left({{\boldsymbol{x}}^{'}} \right), $ |
其中,k(x, x′)為核函數,Φ(x)為映射函數。
常見的核函數有線性核函數、多項式核函數、高斯核函數、sigmoid核函數等。本文實驗將選擇高斯核RBF核函數。
SVM算法通常適用于二分類問題。對于多分類問題,需要以二分類為基礎構造多分類器。本文實驗將采用有向無環圖SVM(directed acyclic graph SVM,DAG-SVM)[13]方法。對于N分類問題,DAG_SVM包括N(N-1)/2個節點,每個節點是一個一對一的二分類器。這些分類器按層排列為N-1層有向無環圖。
1.5 系統框架
在本研究中,采用SVM作為自動睡眠分期系統的分類器模型,整體框架如圖 1所示。訓練階段的流程由虛線表示。從30 s/幀的信號中提取出所有特征,輸入到帶有淘汰制的F-Score的特征選擇器中,選擇步驟如1.3節所示。將特征選擇器選中的n個特征作為DAG_SVM的分類器的輸入,訓練得到所需要的DAG_SVM分類器。預測階段由實線表示:從30 s/幀的信號中提取出選中的n個特征,輸入已訓練好的分類器,得到睡眠分期結果。DAG_SVM的架構如圖 2所示。作為一個5分類的架構,共有4層10個二分類器。每層之間通過淘汰機制連接,如第一層,根據SVM(1-5)分類結果得到不是第5類的數據,輸入到第二層的SVM(1-4)中。每一個分類器均采用RBF核函數。


1代表Wake,2代表N1,3代表N2,4代表N3,5代表REM
Figure2. DAG_SVM framework1 for Wake, 2 for N1, 3 for N2, 4 for N3, 5 for REM
2 結果及分析
2.1 評價機制
下面列出常用的睡眠分期評價機制。
正確率(accuracy rate, AR)。AR為正確判斷的數目與總數之商,如式(6)所示:
$ AR=\frac{1}{n}\sum\limits_{i=1}^{n}{\frac{\text{Num }\!\!\_\!\!\text{ true}}{\text{total }\!\!\_\!\!\text{ num}}}\text{ }\!\!\times\!\!\text{ }100\text{ }\!\!%\!\!\text{ } $ |
平均訓練時間(mean time for training, MTT)與平均預測時間(mean time for predicting, MPT)是算法性能的重要指標,為每次訓練時間(time for training, TT)和每次預測時間(time for predicting, TP)的平均值,如式(7)(8)所示,其中n為訓練及預測次數。
$ \text{MTT=}\frac{1}{n}\sum\limits_{i=1}^{n}{\text{TT}} $ |
$ \text{MTT=}\frac{1}{n}\sum\limits_{i=1}^{n}{\text{TP}} $ |
2.2 實驗結果與分析
為了驗證算法的有效性,我們基于2.1中的數據進行實驗。特征值組F-Score排序結果為: F23, F18, F19, F9, F1, F29, F24, F38, F22, F8, F30, F25, F37, F6, F7, F35, F28, F27, F3, F21, F12, F5, F15, F4, F10, F16, F31, F36, F26, F2, F11, F17, F32, F14, F20, F34, F13及F33。實驗模型的具體描述如表 2所示。

實驗中,表 2中的所有實驗模型均采用圖 1所示的系統框架。#1模型、#2模型與#3模型除了特征選擇方法不同外,分類器均采用相同的如1.5節所述的DAG-SVM結構,每一次比較輸入相同的EEG數據,評價標準保持一致,在相同的電腦硬件、軟件以及時間下實驗。#2模型與#3模型在F-Score選擇特征值過程中的輸入數據保持一致。#2模型采用標準F-Score為分類器,選擇的17個特征值為F-Score排名前17位者;#3模型采用帶有淘汰制的F-Score為分類器,選擇了16個特征值,并非F-Score排名前16位。
在1 000次實驗后,表 2中每一個模型的評價結果如表 3所示。

在表 3中,沒有特征選擇方法、標準F-Score特征選擇算法以及帶有淘汰制的F-Score特征選擇方法分別與DAG-SVM相結合,得到睡眠分期的正確率分別為79.8%、81.0%和83.5%。因此,可以得出,標準的F-Score特征選擇對于提高分期正確率有著良好的效果,而F-Score增加淘汰制能夠在一定程度上克服標準F-Score沒有考慮特征值之間相互關系的缺陷,有效地提高了分類正確率。
在計算時間方面,相比#1模型的MTT,#2模型節約了53%,#3模型節約了71%;相比#1模型的MPT,#2模型節約了52%,#3模型節約了61%。可以得出,采用F-Score能夠很好地減少計算復雜度,節約計算訓練與預測時間,而增加淘汰機制后的F-Score僅選擇了16個特征值,所以計算時間又有所下降。
需要注意的是,上述實驗結果僅限于1.1節中所述的數據源,對于其它數據源的實驗結果在數值上可能有所偏差。另外,針對計算時間的實驗與電腦配置、系統負荷等相關,在其它電腦上實驗時,數值也會有所偏差。
本文算法與其它算法的正確率對比:#3模型的正確率為83.5%,相對于Flexer等[4]HMM模型的61.2%,Güne?等[5]基本k-NN模型的55.88%,Tagluk等[6]ANN模型的74.7%±1.63%,以及Gudmundsson等[14]帶有后驗概率估計的SVM模型的81%均有不同程度的提高。從中可以看出,#3模型采用帶有淘汰制的F-Score的SVM方法,相對于其它方法有著一定的優勢。需要注意的是上述對比并沒有確保實驗條件和數據來源的一致性,引用僅作為參照。
3 結論
睡眠腦電是研究睡眠障礙及相關疾病的重要客觀指標。已有的多種自動睡眠分期算法或因無法適應腦電的高度復雜性而使得正確率較低,或因算法過于復雜而使得效率低下。本文在SVM算法簡單、穩定性好、分期效果好的基礎上,提出基于SVM及特征選擇的自動睡眠分期算法。實驗表明,該方法相對于沒有特征值選擇的SVM算法和帶標準F-Score特征選擇的方法,在睡眠分期正確率和計算效率上均占有明顯的優勢,相對于其它自動睡眠分期算法,正確率均有不同程度的提高。該方法通過將F-Score由二分類拓展到多分類,增加淘汰因子,剔除低相關度的特征值,為DAG_SVM選擇了合適的輸入向量組,從而提高預測的正確率,減少計算時間,是一種有效的睡眠分期的解決方案。