I am working on a project that takes signals from the brain, preprocesses them, and then makes the machine learn about what human is thinking about. I am struck on preprocessing the signal (incoming from the EEG). I am having a problem when I attempt to remove noise. I used SVM but to no avail. I need some other suggestions from experts who have worked on a project similar to this. What can I do to preprocess the signal?
This might be more of a signal-processing question, rather than a artificial intelligence question, but I will try my best to be of help.
Do you know what the noise you are trying to remove is? How it behaves/where it stems from? Or, do you know how your output signal should look, post processing?
If you know these things and you are familiar with MATLAB or any other matrix multiplication software, they come with great prebuilt toolboxes for traditional approaches to remove noise from signals.
If you are not exactly sure what patterns you are looking for, I suggest perhaps looking into Autoencoders to discover the hidden patterns. Though it is important to note that the origin of the noise may greatly effect its abilities. If you plan on using such a technique it is important that you have a sufficiently large dataset of the signals available.
Without the clarifications to these questions, along with @nbro's questions, it is hard to be more specific.
If the noise is confined to a particular spectral band, Fourier transform followed by filtering, followed by an inverse Fourier transform will work. If it is multiplicative noise, filtering the Fourier transform of the logarithm of the signal might work.
Really, the nature of the noise determines what's possible and the best way to remove it.
by svm do you possibly mean singular value decomposition (svd a known noise reduction technique) if this is true then i would say the next method i would try would be wavelet transform for noise reduction and if neither of these techniques are working on there own it is not uncommon to use them together as is done here.
There is a commonly used method, that is also used in machine learning: Independent Component Analysis. (ICA). This is commonly used to find specific noises in the data, however, you need to have some EEG knowledge to do this because automatic rejection is not completely solved at this time. Software like EEGLab is available (as a standalone and Matlab toolbox)
Now to do this in real-time it is also not impossible after you collect initial data for a while and don't have too many channels. You can isolate relatively constant noises with ICA, like heart-beating, other temporal noises can be rejected globally (on all channels) because EEG normally does not exceed certain levels.
Useful documentation is EEGLabs artifacts Wikipedia page: https://sccn.ucsd.edu/wiki/Chapter_01:_Rejecting_Artifacts