朝ダラダラ型?朝・夜元気型?データから見る心拍の5タイプ

こんにちは、データサイエンス部の深見です。
日々ウェアラブルデータ(※)と向き合う仕事をしていると、データに対する勘のようなものがついてきて、ふと「この値にはこんな傾向があるのでは?」とひらめいたりします。

今日はそんなひらめきの中から、心拍のタイプ分けに関するお話です。

また、後半ではタイプ分けに使用したDTW(Dynamic Time Warping:動的時間伸縮法)と呼ばれる手法についても解説します。

ウェアラブルデータ……スマートウォッチを代表とするウェアラブル端末で測定された生体情報等のデータ


イメージ画像

心拍データに見る5つのタイプ

心拍のデータをじっくりと眺めていると、就寝や運動、または食事など、様々な動作・環境に影響を受けている様子を垣間見ることができます。また、ただじっとしている時でも、その日の体調や天候などによって挙動が変わって興味深いものです。

私はテックドクターに入社して以来、数年に渡って自分の心拍データを見てきました。すると、「もしかしたら、人によって心拍の挙動にある程度のパターンがあるのでは?」と思い至るようになったのです。

そこでテックドクター社員の心拍データをクラスタリングしてみたところ、以下の5つのタイプに分類できることがわかりました。(※クラスタ名は私の感性によるものです。他意は全くございません。)

1.就寝時高め型

就寝中の心拍数が日中と同程度に高く、睡眠の質が心配になる。

2.低心拍型

日中・睡眠中を問わず1日を通して心拍の低い状態が続いている。

3.朝ダラダラ型

起床時の心拍上昇が見られず昼頃にかけてのんびり心拍が上がっていく。

4.朝・夜元気型

起床直後と就寝直前に心拍数のピークが見られる元気型。

5.朝活発型

起床時に心拍数のピークがあるものの、その後はずっと波がなく穏やか。

グラフ
図1.各クラスタの代表的な心拍推移

さらに、各クラスタウェアラブルバイスから取得できる心拍以外の情報(活動・睡眠)と照合してみたところ、こんな特徴があることがわかりました。

一覧表
表1.各クラスタの心拍以外の特徴一覧

全体的な傾向として、(因果関係は不明ですが)心拍のタイプと普段の運動・睡眠習慣が関連しているように見受けられます。

個別に見ていくと、「2.低心拍型」は運動・睡眠のバランスが良いことがわかります。おそらく日々きちんと運動していることから、心拍数が全体的に低くなり、身体の調子が整えられていると思われます。

反対に「1.就寝時高め型」の人たちは運動・睡眠両面で改善が必要な方々であることがわかりました。私の推測にはなりますが、睡眠中に心拍が高くなる典型例はお酒ですので、生活習慣を改善する必要があると思われます。睡眠時間や質もイマイチなようです。

起床時に心拍が上がらない「3.朝ダラダラ型」の人たちはあまり運動ができていない傾向がありました。逆に「4.朝・夜元気型」「5.朝活発型」の朝からちゃんと心拍が上がる人たちは、睡眠リズムが整っているようです。

こうして睡眠中の心拍のさまざまなタイプと日常生活の関連が見えてくると、いまいちど自分の生活習慣を見直してみようかなという気持ちになります。ウェアラブルデータを見ていると行動変容を促されるのが面白いところだと思います。

続いて、データサイエンスの知識のある方向けに、この結果に至るまでの分析方法についてもご説明したいと思います。今回はDTW(Dynamic Time Warping:動的時間伸縮法)と呼ばれる手法を使ったところがポイントです。

DTWを使った心拍クラスタリング

調査方法概要

  • 対象とするデータ
    • ウェアラブル端末から取得できる24時間の分単位心拍データ
    • 10名、合計151日分
  • 前処理
    • 秒単位の心拍数を15分ごとの平均値に集約
  • クラスタリング
    • Dynamic Time Warping(動的時間伸縮法:DTW) + k-means法

DTWとは、動的時間伸縮法DTWは時系列データを分析する際に用いられる手法の一つで、ユークリッド距離やマンハッタン距離のようにデータ間の距離を求めることができます。

通常、2つの時系列データが異なる長さや異なる速度で進む場合、それらの類似度(距離)を直接比較することは困難であったり、時に実際よりも過小・過大に評価してしまうことがあります。

DTWではこのような問題を解決するため、データの時間軸を動的に伸縮させて最適な整合性を見つけて類似度を算出します(下図)。例えば、速いペースで歩いている人とゆっくり歩いている人の歩行中の心拍数を比較するとき、心拍の増減のタイミング・長さが両者で変わってきますが、DTWを使うとタイミングのズレが吸収され類似した増減パターンとして認識できます。

増減パターンの例
*出典:「Pattern Matching Trading System Based on the Dynamic Time Warping Algorithm」

心拍数は1日の活動(起床・活動・就寝など)に大きな影響を受けますが、それらのイベントが起こる時刻は人によってもバラバラですし、同じ人でも平日や休日で必ずしも一致するものではありません。DTWを使えばこういったイベントが起きた時刻に影響を受けることなく、イベントが起きた際の心拍の挙動の類似性に基づいた分析が可能となります。

クラスタリングの流れ

  • 一人の1日(00:00~23:59)のデータを1レコードとして計151日分の心拍データをクラスタリング対象とする。
  • 心拍のデータは15分単位で平均化し、1日のレコードを下記のように整形。([時刻, 心拍])
[00:00,  73],
[00:15,  70],
[00:30,  69],
…
[23:30,  58],
[23:45,  56]
  • 15分単位の151日分のデータに対してDTWを適用し、レコードごとの距離を算出。
  • 距離行列に対してk-meansを適用して5クラスタに分類。

クラスタ数の決定

クラスタ数を自動決定するアルゴリズムは、古くはエルボー法など様々なものが提案されています。今回はデータ数もさほど多くなく、かつ全体傾向を把握することが目的であるため、クラスタ数を増やしていってクラスタの代表によく似た傾向のグループが出てきた段階で止めました。

図2はクラスタ数を7とした場合の例です。下から2つ目のcluster_5については一般的な心拍の挙動とはかけ離れたノイズ、cluster_6についてはcluster_2と類似したクラスタでした。こういった結果から今回はクラスタ数を5としています。

グラフ
図2.クラスタ数7の場合のクラスタリング結果

クラスタの構成数

やや「2.低心拍型」が少ないものの、ほぼ均等に分かれました(データ欠損などがみられた7レコードは除外しています)。今回対象としたデータにおいては、各タイプが拮抗して出現している様子がわかります。

クラスタ 構成数 比率
1.就寝時高め型 25 22%
2.低心拍型 20 18%
3.朝ダラダラ型 30 26%
4.朝・夜元気型 34 30%
5.朝活発型 35 31%

表2.クラスタ構成数

個人のデータ分類

できあがったクラスタにおいて、私個人の27日分のデータを確認してみました。以下が分類結果の円グラフです。私の場合は血圧がやや高めなことと、数年前から朝方にシフトして5時起床を心がけていることも相まってか、朝から元気な日や夜に心拍の高い日が多いようでした。逆に朝ダラダラとしている日は少なく、それなりに生活リズムは整っていると感じました。

円グラフ
図3.個人データのクラスタ所属比率

いかがでしたでしょうか。実生活のイベントタイミングを配慮して時系列データ解析をすることで、24時間の心拍の推移にも様々なタイプがあることがわかりました。今回は特別な考慮はせずざっくりと心拍数の推移をクラスタリングしましたが、平日・休日の違いや男女、年代、職業などを考慮することでまだまだ興味深いクラスタが見つかりそうです。

似顔絵
書いた人:深見