SVM for signal classification

Forum for discussion on different signal processing algorithms
Locked
Bernie
Posts: 5
Joined: 01 Oct 2004, 16:35

SVM for signal classification

Post by Bernie » 22 Mar 2005, 15:23

Hi.

i am trying to use SVM on my eeg data for classification.
i have 9 distinct mental tasks and i am looking for the most promising
2, 3, 4, 5, etc... tasks to classify.

I find the classification is not that trivial, and in papers i usually only
find "we used SVM [sub with any other algorithm] on the data .. and got that result..."

does anybody has any experience with SVMs? i don;t really know if SVMs are the
way to go, because it seems unfeasible for me to re-write the huge datafiles into
SVM readable files
(in the form label: 1:datefromchan1 2:datafrom2 ... 30:datafrom30 )
especially since i want to use it online at some point of course.
there are many SVM libraries for matlab (which could be translated into c++ later
which is already pretty good) but they don't solve the recoding and fast-online computation problem i see.

Any comments to that? Can somebody give me a useful hint or tip or anything?
maybe even a working algorithm??

oh and my files are recorded with Synamps1, and the Neuroscansoftware.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

SVM classifiers ...

Post by gschalk » 23 Mar 2005, 10:47

Bernie,

You have identified a very interesting aspect of BCI development. The literature is full of reports how particular complex signal processing algorithms (i.e., ICA, SVMs, neural networks, etc.) are supposedly superior to simpler techniques. These reports essentially always analyze data in a very controlled fashion after the fact, i.e., in offline analyses.

The problem is that BCI communication is by definition an interactive process in a closed-loop feedback situation. This requires that one can identify, use, and adapt to the signals the subject is producing on an initial and continuing basis. Typically, the more complex a procedure to solve these tasks (e.g., lengthy calibration procedures, etc.), the less they are amenable to online BCI control. This, precisely, is the reason why essentially all current BCI systems that are in use today rely on simpler algorithms that are easy to implement, calibrate, and to adapt to the user.

Furthermore, I have to point out that appropriate signal processing is only a very small aspect of successful BCI operation. Many other factors, such as training procedures, appropriate management of artifacts, and motivational aspects are at least equally important. The chance that any BCI system that does not focus on all these areas succeeds is very small.

Finally, we have done some experiments with P300 data and SVMs. While it does look like they provide competitive performance, it doesn't seem that this difference is very large.

The Gerv 8)

Bernie
Posts: 5
Joined: 01 Oct 2004, 16:35

Post by Bernie » 23 Mar 2005, 10:58

hm. so SVMs and all this other algorithms are nice to see if my data is classifiable at best and how good it would be in an offline version, but its not really applicable in a real BCI in realtime... is that about right?

So for the online version I need more somehting like a simple neural network maybe?

oh, and i forgot another problem i face, that is connected to this online/offline discussion, is that i actually want to do an asynchronous approach, so i have to detect the signal itself as well. I think your p300 frequency approach on the other hand is cued, and so the simple learning algorithm has just to look at one time vector. Am i running into too big a problem anyway here and shoudl rather try to do a synchronous version only?

and, the problem i have with "adaptation of the algorithm and learning process of the user" is, that i don't really have an EEGmachine here at all times. I need to schedule a time with a lab, a little bit away, so I don't really have the luxury to test infinite hours with an online version.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

SVMs ...

Post by gschalk » 23 Mar 2005, 11:22

Bernie,
so SVMs and all this other algorithms are nice to see if my data is classifiable at best and how good it would be in an offline version, but its not really applicable in a real BCI in realtime... is that about right?
I think you could say that. Fact is that it is difficult enough to do all of the 150 things that need to be done correctly right. It is certainly possible that an SVM-based system could be slightly better than a conventional linear system, and that it can also be practical. However, I would try to make it work first, and then try to make it better rather than the other way around.


I think your p300 frequency approach on the other hand is cued, and so the simple learning algorithm has just to look at one time vector. Am i running into too big a problem anyway here and shoudl rather try to do a synchronous version only?
I highly suggest to work on the synchronous problem first. Asynchronous designs are a big problem and there are only a few efforts out there that study it in real-time (e.g., Birch and Mason).
and, the problem i have with "adaptation of the algorithm and learning process of the user" is, that i don't really have an EEGmachine here at all times. I need to schedule a time with a lab, a little bit away, so I don't really have the luxury to test infinite hours with an online version.
With ongoing chances I mean adaptations on short time scales. For example, the controller that adapts gain and offset values in BCI2000 updates these estimates after every trial based on the results of few of the most recent trials. Without these adaptations, system performance will be much worse. You might want to look at Ramoser H. et al 1997/8 or so.

Gerv

Bernie
Posts: 5
Joined: 01 Oct 2004, 16:35

SVM format

Post by Bernie » 10 Apr 2005, 18:51

thanks a lot for all the help and tips already.


ok. so I will have to do offline SVM now.
is there any tool already somewhere, that can convert the
synamps CNT file into a SVM readable file? Maybe somebody wrote an open licence version already?

Right now I was trying to do that with the help of the Matlab toolbox 'EEGlab'
but I have some difficulties. For one thing, I don't know exactly which time-vector of data is best. I know there is this supposedly most activity around 300ms after the cue (P300 if i understand that right). So a
composed vector of something like 280 to 320ms seems to be the best choice here if that is true. The problem with 'EEGlab' is, that my labels of events are lost in the process of epoching this timeframe since they are stored at 0ms.

I hope somebody can be of help here...

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

A little bit on SVM analysis ...

Post by gschalk » 11 Apr 2005, 08:40

Bernie,

I do not know about a tool to convert Neuroscan files into something else, but a good starting point is the biosig toolbox for EEGlab:

http://biosig.sourceforge.net/

Regarding your technical questions for EEGlab. In my opinion, it would be a good idea to start very simple and look at some P300 data first to understand what the signal looks like. The 'text-book' P300 response (which is supposed to be at 300ms) can actually look very different depending on subject and session. What I would do is to download a P300 data set from the BCI Data Competition web site:

http://ida.first.fhg.de/projects/bci/competition_iii/

(Our data set on this site comes with a simple demo program that does some analyses, and it has a good documentation.) Once you understand the data, you can go beyond this and investigate it further.


:arrow: The Gerv

Locked

Who is online

Users browsing this forum: No registered users and 2 guests