Hi, I mentioned briefly some things on Numenta Gitter chat [1], and will elaborate further here.
You are now at a crucial stage of analyzing continuous time varying signals. Our brains, and neo-cortex, can make us jump too far ahead when seeing these graphs of the time-domain signal plotted in the frequency domain. As babies we work out Newton's laws of motion using complex evolving parts of our old and new (neo) brain (e.g. Force = mass x acceleration, F=ma [2]). Starting to crawl, walk, and catch objects. For example, multiple sensory input (visual, somatosensory, etc) using and adapting Purkinje cells in the cerebellum, and the constant looping and evolving of sensorimotor information to affect our muscle movements. This knowledge from childhood has to an extent hampered progress when machines are programmed to look into the time and frequency domain, using techniques such as Fourier Transforms. We look at the FFT (DFT) data and can see how the graphs change over time, almost automatically seeing the velocity and acceleration as the data changes (motion derivatives). With ECG data the heart makes a lower and upper limit on how the time domain signal changes. As mentioned in the other email thread [3] we can use that to limit the sliding sampling window over the signal (1000 samples a second as possible upper limit?). The repetitive nature of the signal is great for Fourier based spectral analysis. The heart beats also limits upper frequency to go to, with 8000 Hz being ok. One factor that you are aware of is noise. That can leak into the FFT plots and make lower frequencies get messy. Power line noise at 50/60 Hz, for example, can fluctuate and confuse things. And with the low rate of heart beating can interfere with the signal and get messy in the FFT [4]. BUT as you can now see in the FFT, the harmonics can now be 'seen' and add to features that can be tracked over time with Temporal Memories (SP +TM). Along with possible feature tracking of the original ECG signal in the time domain (no one has Max Heart Rate, 220-age beats per minute, unless stressed on a treadmill running very fast). Where those harmonics are is related to how fast the heart is beating. With greater harmonics for the QRS parts of the signal. The use of window and filter function on the ECG signal before Fourier Transform can be used to limit and decrease noise. But care must be taken with the size of windows, how many samples of the signal to consider in the window, and low/high pass and other filter functions (Hamming, Blackman, etc.). All help reduce noise, but never get rid of it. Here again, there is less noise in the higher frequency harmonics. And have helped Apple's Siri out a lot in analyzing speech, for example. Finding features will need information from the signal, e.g. how often the QRS part occurs, and then looking in the FFT data at roughly where the harmonics are (no need to go to too high number of them, up to 5 at max.). Which can tie in with the presentation by Chetan on Coordinate Encoder, but could be done with other encoders. First is finding all the features to track. My knowledge of using NuPIC to do that is limited, so hopefully others like Pascal can help here. The features can include beats per minute from the signal, and then limited information from the FFT (Pascals idea of a TM for a group of frequencies around the harmonics). Enough for now? Best regards, Richard. 1 https://gitter.im/numenta/htm-challenge and https://gitter.im/numenta/public 2 https://en.wikipedia.org/wiki/Newton%27s_laws_of_motion 3 http://lists.numenta.org/pipermail/nupic_lists.numenta.org/2015-October/012047.html 4 http://www.ijarcce.com/upload/2013/march/8-bhumika%20Chandrakar%20-%20a%20survey%20of%20noise-c.pdf On Tue, Nov 3, 2015 at 5:49 AM, Pascal Weinberger <[email protected] > wrote: > Hey :) > > Currently there is the coordinate Encoder, which encodes for an > n-dimensional Vektor in n-Dimensional space. > Here is Chandan explaining it or better a slightly modified version > http://youtu.be/KxxHo-FtKRo > > The code: > > https://github.com/numenta/nupic/blob/master/src/nupic/encoders/coordinate.py > > You can Try that as a start, and what I'd also do is maybe have a model > for each frequency band, which you can probably the easiest get with the > htmengine :) the second method will also help you interpret the results as > you'll know what frequency was unexpected at a given time. > > Hope that helps :) > > > > Best, > > Pascal Weinberger > > ____________________________ > > BE THE CHANGE YOU WANT TO SEE IN THE WORLD ... > > > PLEASE NOTE: This email and any file transmitted are strictly > confidential and/or legally privileged and intended only for the person(s) > directly addressed. If you are not the intended recipient, any use, > copying, transmission, distribution, or other forms of dissemination is > strictly prohibited. If you have received this email in error, please > notify the sender immediately and permanently delete the email and files, > if any. > > Please consider the environment before printing this message. > > > > > On 03 Nov 2015, at 04:12, Kentaro Iizuka <[email protected]> wrote: > > Hello, NuPIC, > > I'm currently working for ECG anomaly detection with NuPIC as HTM > Challenge project. > > Here is two graph. > > [first] > > https://cloud.githubusercontent.com/assets/478824/10900146/9b3a85a8-821f-11e5-83d4-4970e77bb623.png > > [second] > > https://cloud.githubusercontent.com/assets/478824/10900145/9b17a376-821f-11e5-9987-45c2634aa77c.png > > This is visualization of FFT converted ECG data. > First is the normal ECG data, second contain anomalous part. > Vertical axis is time step and horizontal axis is frequency, > color shows value of each frequency. > > You can see mottled part in second graph. > Actually, mottled part show anomalous in ECG data. > > FFT Converted data is times series of VECTOR(about 120 dimension) > I want to input time series of vector data into the NuPIC! > Is there any example or document for deal with time series of vector with > NuPIC? > > I want to know > * How to input vector data into the NuPIC > * What kind of Encoder I should use > * How to write swarming setting file > > Here are sample converted data. > > https://github.com/iizukak/ecg-htm/blob/master/data/healthy_person1_fft_converted.csv > > https://github.com/iizukak/ecg-htm/blob/master/data/disease_person1_fft_converted.csv > > Data form. > TIME1: [11.13, 10.36,..., 1.92] > TIME2: [11.22, 10.35,..., 2.65] > ... > TIME_END: [1.11, 10.20,..., 1.84] > > > In previous thread,very thank you for your helpful replies. > I’m an amateur of signal processing but I read all of your replies > carefully. > "Please help Ken with his HTM Challenge project" > > http://lists.numenta.org/pipermail/nupic_lists.numenta.org/2015-October/012047.html > > Thanks. > > -- > Kentaro Iizuka<[email protected]> > > Github > https://github.com/iizukak/ > > Facebook > https://www.facebook.com/kentaroiizuka > >
