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
>
>

Reply via email to