基于SVM的腦電信號(hào)識(shí)別

時(shí)常我們能看到科幻中讀取他人意念的場(chǎng)景,讓人感覺(jué)很玄幻。那么現(xiàn)代科技真的可以做到這一點(diǎn)么舞萄?答案是在特定情況下可以以一個(gè)比較高的準(zhǔn)確率識(shí)別人的想法。別擔(dān)心管削,不是大街上隨隨便便注視著你就可以識(shí)別出來(lái)的倒脓,是通過(guò)對(duì)腦電信號(hào)的分析,使用小波變換和支持向量機(jī)的現(xiàn)代科學(xué)方法含思,在指定的幾種類別中識(shí)別出你想的具體是哪一例崎弃。
首先選定十二個(gè)類別的圖片,包括動(dòng)物含潘、花饲做、交通工具等,然后讓十名受試者觀測(cè)這些圖片遏弱,每張圖片觀測(cè)0.9秒盆均,休息0.7秒再觀測(cè)下一張,并在這一過(guò)程中采集受試者的19通道腦電漱逸。

12種物體.png

特征提取

將采集到的腦電信號(hào)經(jīng)過(guò)1-30HZ帶通濾波泪姨、獨(dú)立成分分析去除眨眼等肌肉運(yùn)動(dòng)的信號(hào),進(jìn)行高低頻濾波饰抒,然后在進(jìn)行降采樣肮砾,就可以得到近似系數(shù)(approximation coefficient)和細(xì)節(jié)系數(shù)(detail coefficient)。在特提取中循集,使用了五級(jí)小波變換唇敞,在Daubechies4蔗草,Haar咒彤,和Symlet2三種小波變換方法在下獲得了受試者在觀測(cè)一幅圖的過(guò)程中6000~7000個(gè)特征疆柔。隨后使用T test, Entropy,和 Bhattacharyya distance三種方式進(jìn)行特征提取,獲得最重要的1000個(gè)特征镶柱。

小波分解.png

在Matlab中可以進(jìn)行這種小波分解的計(jì)算旷档,以獲得近似系數(shù)和細(xì)節(jié)系數(shù),這里使用Matlab自帶的3天的電功耗信號(hào)進(jìn)行了DB4小波五層分解歇拆,可以直觀的看到近似系數(shù)和五層細(xì)節(jié)信息鞋屈。具體代碼和結(jié)果如下:

clear;
load leleccum
s = leleccum(1:3920);
l_s = length(s);
[C,L] = wavedec(s,5,'db4');
cA5 = appcoef(C,L,'db4',5);
cD5 = detcoef(C,L,5);
cD4 = detcoef(C,L,4);
cD3 = detcoef(C,L,3);
cD2 = detcoef(C,L,2);
cD1 = detcoef(C,L,1);
A5 = wrcoef('a',C,L,'db4',3);
D1 = wrcoef('d',C,L,'db4',1);
D2 = wrcoef('d',C,L,'db4',2);
D3 = wrcoef('d',C,L,'db4',3);
D4 = wrcoef('d',C,L,'db4',4);
D5 = wrcoef('d',C,L,'db4',5);
A0 = waverec(C,L,'db4');
subplot(2,3,1); plot(A5);
title('Approximation A5')
subplot(2,3,2); plot(D1);
title('Detail D1')
subplot(2,3,3); plot(D2);
title('Detail D2')
subplot(2,3,4); plot(D3);
title('Detail D3')
subplot(2,3,5); plot(D4);
title('Detail D4')
subplot(2,3,6); plot(D5);
title('Detail D5')
figure;
subplot(3,1,1);plot(s);title('Original'); axis off
subplot(3,1,2);plot(A5);title('Level 5 Approximation');axis off
subplot(3,1,3);plot(A0);title('Revivification'); axis off
近似系數(shù)和細(xì)節(jié)系數(shù).png

支持向量機(jī)分類

支持向量機(jī)(Support Vector Machine)是在分類與回歸分析中分析數(shù)據(jù)的監(jiān)督式學(xué)習(xí)模型與相關(guān)的學(xué)習(xí)算法。給定一組訓(xùn)練實(shí)例故觅,每個(gè)訓(xùn)練實(shí)例被標(biāo)記為屬于兩個(gè)類別中的一個(gè)或另一個(gè)厂庇,SVM訓(xùn)練算法創(chuàng)建一個(gè)將新的實(shí)例分配給兩個(gè)類別之一的模型,使其成為非概率二元線性分類器输吏。SVM模型是將實(shí)例表示為空間中的點(diǎn)权旷,這樣映射就使得單獨(dú)類別的實(shí)例被盡可能寬的明顯的間隔分開(kāi)。然后贯溅,將新的實(shí)例映射到同一空間拄氯,并基于它們落在間隔的哪一側(cè)來(lái)預(yù)測(cè)所屬類別。
SVM需要進(jìn)行參數(shù)選取它浅,該實(shí)驗(yàn)中使用了遍歷的方法進(jìn)行兩個(gè)參數(shù)的選取译柏,而在論文中使用的是C和σ,而Python中使用的是C和Gamma姐霍,σ和Gamma有如下對(duì)應(yīng)關(guān)系鄙麦。

其中C是懲罰系數(shù),即對(duì)誤差的寬容度镊折。C越高黔衡,說(shuō)明越不能容忍出現(xiàn)誤差,容易過(guò)擬合腌乡。C越小盟劫,容易欠擬合。Gamma為單個(gè)樣本對(duì)整個(gè)分類超平面的影響与纽,當(dāng)Gamma比較小時(shí)侣签,單個(gè)樣本對(duì)整個(gè)分類超平面的影響比較大,更容易被選擇為支持向量急迂,反之影所,當(dāng)Gamma比較大時(shí),單個(gè)樣本對(duì)整個(gè)分類超平面的影響比較小僚碎,不容易被選擇為支持向量猴娩。
不同受試者存在差異性,每個(gè)人的最佳參數(shù)不同,下圖展現(xiàn)的是受試者一的grid-search結(jié)果卷中,C的最佳取值為1000矛双,σ的最佳取值為1。

grid-search兩個(gè)參數(shù)c和σ.png

SVM本身是一個(gè)二值分類器蟆豫,但該實(shí)驗(yàn)需要對(duì)受試者十二種腦電信號(hào)進(jìn)行分析议忽,進(jìn)而識(shí)別十二種類別的圖片。目前常用的方法有兩種:一對(duì)多法(one-versus-rest,簡(jiǎn)稱OVR SVMs)和一對(duì)一法(one-versus-one,簡(jiǎn)稱OVO SVMs或者pairwise)十减。一對(duì)多法是將一個(gè)作為正例栈幸,其他作為反例,如此構(gòu)建十二個(gè)分類器帮辟,最終的結(jié)果便是這十二個(gè)值中最大的一個(gè)作為分類結(jié)果速址。一對(duì)一法是將每?jī)蓚€(gè)種類構(gòu)建一個(gè)分類器,這樣十二分類便有六十六個(gè)分類器由驹,然后采取投票的形式壳繁,選取最大值。
文章中提到在三分類任務(wù)中荔棉,原始數(shù)據(jù)闹炉,未經(jīng)過(guò)小波變換的數(shù)據(jù)經(jīng)過(guò)SVM訓(xùn)練后只有32%準(zhǔn)確率,經(jīng)過(guò)sym2小波變換后的數(shù)據(jù)輸入到SVM準(zhǔn)確率提升為59%润樱,再經(jīng)過(guò)T test特征特征選取準(zhǔn)確率進(jìn)一步提升到87.3%渣触。而在十二分類任務(wù)中,三種小波變換和三種特征提取方式獲得識(shí)別準(zhǔn)確率大概在60%~70%壹若。
我們可以在Python中很方便的使用sklearn和內(nèi)置的安德森鳶尾花卉數(shù)據(jù)集來(lái)試驗(yàn)下SVM的分類效果嗅钻。該數(shù)據(jù)集是70多年前,加拿大加斯帕半島上店展,于同一天的同一個(gè)時(shí)間段养篓,使用相同的測(cè)量?jī)x器,在相同的牧場(chǎng)上由同一個(gè)人測(cè)量出來(lái)的三種花的四種特征赂蕴。

安德森鳶尾花卉數(shù)據(jù)集.png

使用SVM對(duì)三種花進(jìn)行分類的代碼如下柳弄,運(yùn)行后在留一驗(yàn)證法的情況下獲得了98%準(zhǔn)確率「潘担可見(jiàn)SVM在小數(shù)據(jù)集上的分類效果確實(shí)還是很好的碧注。

from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.svm import SVC
from numpy import *

def data_svc_test(data, target, index):
    x_train = vstack((data[0: index], data[index + 1: -1]))
    x_test = data[index]
    y_train = hstack((target[0: index], target[index + 1: -1]))
    y_test = target[index]
    print(x_train)
    print(y_train)
    SVC_0 = SVC(kernel = 'rbf', gamma=0.25)
    SVC_0.fit(x_train, y_train)
    predict = SVC_0.predict(x_test)
    return predict == y_test

# download the dataset
iris_dataset = datasets.load_iris()
iris_data = iris_dataset.data
iris_target = iris_dataset.target
length = iris_target.shape[0]
right = 0
for i in range(0, length):
    right += data_svc_test(iris_data, iris_target, i)

# accuracy rate
print("%f%%" % (right * 100.0 / length))

總的來(lái)說(shuō),通過(guò)對(duì)腦電數(shù)據(jù)的采集糖赔,小波變換和SVM分類的方法萍丐,我們可以在不知道受試者觀測(cè)的是十二種圖片中的哪一類的同時(shí)猜測(cè)到受試者所觀測(cè)的是哪一類圖片,準(zhǔn)確率大概可以達(dá)到60%~70%放典。沒(méi)有科幻片中那么神奇逝变,但這一技術(shù)的研究可能能幫助諸如漸凍癥患者等病人基茵,讓計(jì)算機(jī)理解他們的意圖,改善他們的生活質(zhì)量壳影。

參考文獻(xiàn)

Taghizadehsarabi M, Daliri M R, Niksirat K S. Decoding objects of basic categories from electroencephalographic signals using wavelet transform and support vector machines.[J]. Brain Topography, 2015, 28(1):33-46.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拱层,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子态贤,更是在濱河造成了極大的恐慌舱呻,老刑警劉巖醋火,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悠汽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡芥驳,警方通過(guò)查閱死者的電腦和手機(jī)柿冲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)兆旬,“玉大人假抄,你說(shuō)我怎么就攤上這事±鲡” “怎么了宿饱?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)脚祟。 經(jīng)常有香客問(wèn)我谬以,道長(zhǎng),這世上最難降的妖魔是什么由桌? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任为黎,我火速辦了婚禮,結(jié)果婚禮上行您,老公的妹妹穿的比我還像新娘铭乾。我一直安慰自己,他們只是感情好娃循,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布炕檩。 她就那樣靜靜地躺著,像睡著了一般捌斧。 火紅的嫁衣襯著肌膚如雪捧书。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天骤星,我揣著相機(jī)與錄音经瓷,去河邊找鬼。 笑死洞难,一個(gè)胖子當(dāng)著我的面吹牛舆吮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼色冀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潭袱!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锋恬,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屯换,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后与学,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體彤悔,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年索守,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晕窑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卵佛,死狀恐怖杨赤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情截汪,我是刑警寧澤疾牲,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站衙解,受9級(jí)特大地震影響阳柔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丢郊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一盔沫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枫匾,春花似錦架诞、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至角虫,卻和暖如春沾谓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戳鹅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工均驶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枫虏。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓妇穴,卻偏偏與公主長(zhǎng)得像爬虱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子腾它,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容