Category Archives: Machine Learning

My Quantified Self 2014 in Review

I had a good Quantified Self year this year. As a long time logger and casual athlete I have always logged my personal data in some form. This year with the support of the Quantified Self community I was able to explore two specific areas. First, I moved stress tracking from self reporting to the use of wearable devices. Though I bought a few more devices than I would have liked I found that heart rate variability measurements using $65 worth of equipment was sufficient to track stress. Second, I was able to pull out insights about consciousness and heart rate variability that set the stage for future studies.

I explored 20 ideas this year that I organized into five umbrella studies. I started looking at the data I had collected through self reporting of “Upset Events.” I followed that up with a look at Upset intensity given different situations. After seeing the limits of self reporting I started using different devices to measure stress, settling on Heartmath used during working session. Using the device I discovered Freakback can have an effect on results. After learning how to work through that I completed a first study on how I recovered from Upsets.

As I was conducting these studies I had an emerging idea that emotion is navigation. The regularity of emotional shifts seemed like “sighting” as I worked through different ideas. As I worked on this idea I found that Heartmath was too limited in what it measures. Heart Rate Variability has a more direct measurement in rMSSD. I dropped Heartmath and started using Sweetwater HRV’s SweetbeatLife to monitor rMSSD. Using this tool I started measuring stressful events like getting a tooth drilled and firing a shotgun. I played with machine learning and straight statistical regression and determined my “stress point” when read by rMSSD. This provides me a tool to study a variety of situations going forward.

Along the way I gave five Quantied Self meetup talks, 2 in London, 1 in Amsterdam and 2 in the Bay Area. In London and Amsterdam I did my talk We Never Fight on Wednesdays, and in London my followup Don’t Just Stand There. In the Bay Area I presented my talk Every Other Minute where I talked about the navigation impulse. And finally my Bay Area presentation on heart rate variability and Flow. These talks went well and I am set up to give a presentation at the QS Global conference (QS15) in June.

Some of the 20 ideas did not pan out. My work on 800 numbers went nowhere. Ideas about reading my heart rate while doing The Work by Byron Katie did not have sufficient detail to be interesting. Several other ideas blew up on the launchpad. However, I’m pleased with the progress this year. In my next post I will talk about the lessons I have learned during this work.

Sign up for the QuantXLaFont Newsletter
Get our lifestyle tips and studies delivered to your inbox.
Thank you! We don't spam :)

Machine Learning, Heart Rate Variability & Highway Congestion

Using a machine learning algorithm I had determined my baseline for relaxation and stress. When I began I had used 11 features to train the algorithm which means I used 11 sources of data that the algorithm used to try and predict a relaxed or stress sate. The WEKA software has the ability to show which of the data sources is the most useful in determining the outcome and as it did so it allowed me to narrow the features to three. All three are heart rate variability measurements in the time domain, rMSSD, pNN50 and Heart Rate Variability Triangularity Index (HRVI).

Now that I have a trained Artifical Neural Network algorithm on WEKA I can use it to look at large sets of historical data. The more immediate problem I am trying to solve is how to get an indication in real time regarding my physiological state. I want to be in a meeting and be able to see on a screen that I my system has shifted to fight/flight mode.

When I looked at the stress and relaxed data into a spreadsheet these time domain features were markedly lower when stressed, and higher when relaxed. I could use them as a real time proxy for stress if I could find the vehicle to deliver those numbers in real time. I found an iPhone app called Heart Rate Variability Logger. To use it you need a bluetooth heart rate belt and I have the Polar H7. So I was set to start testing.

As I was playing with the app last night I had to call down to the front desk of my hotel to make arrangements to catch and early flight the following morning. I was pretty relaxed prior to the call. On contacting the front desk they told me “all roads were closed” and that my journey of 20 minutes was going to take an hour. That meant a 4am wakeup. You can see when I got this news at about 40% of the way into the session (where it says 16.2):


In the baseline data that I used for the machine learning algorithm, my average pNN50 while relaxed was 32.6 and while stressed, 4.5. Here my pNN50 went from around 30 to 16. That is a pretty good indicator that news of my early wakeup stressed me out. I did some paced breathing to come out of it.

The good news is my hour long journey actually took 30 minutes so my pNN50 was in fine shape as I made my flight with plenty of time. I was also pleased that I now have a practical way to monitor my stress in real time that is backed by insights gleaned from a machine learning algorithm.