心電図データ×機械学習まとめ

Kentaro Hanaki
MICIN Developers
Published in
13 min readFeb 16, 2021

--

2021年1月27日、watchOSのアップデートに伴い、日本でもApple Watchの心電図(Electrocardiogram、ECG)機能が利用できるようになりました。

https://www.apple.com/jp/newsroom/2021/01/ecg-app-and-irregular-rhythm-notification-coming-to-apple-watch/

日本ではスマートウォッチで心電図機能が使えるようになったのはこれが初めてだと思うのですが、海外ではApple Watch以外にもFitbitなども心電図機能に対応しています。

心電図が身近なものになることによって、こちらを利用して病気の検知であったり介入であったりといった研究が更に進むのではないかと予想されるので、今回は機械学習の心電図データへの応用についてまとめてみたいと思います。

心臓の拍動と心電図の基本について

機械学習を何かに応用する際には、まずはその応用先のドメイン知識をある程度身につけることが定石だと思うので、まずは心臓の拍動と心電図の基本について書いていきたいと思います。

こちらの章を書くにあたっては以下のサイトなどを参考にしました。

心臓が拍動するメカニズム

心臓は収縮と弛緩を繰り返すことで血液を送り出しているのですが、この収縮は電気信号によって行われています。心臓の収縮は右心房にある洞結節から刺激伝導系を通じて伝わる電気的興奮によって起こり、心房→心室の順に収縮が起こります。この電気的興奮が通り過ぎると今度は心筋が弛緩し、元の状態に戻ります。

心電図の基本波形

一回の拍動における正常な心電図は以下の図のような形をしています。

Wikipediaより引用

これは主に3つの波形から成り、

  • P波:心房の収縮(脱分極)に伴う電気信号を検知したもの
  • QRS波:心室の収縮(脱分極)に伴う電気信号を検知したもの
  • T波:心室の弛緩(再分極)に伴う電気信号を検知したもの

この拍動が繰り返されることによって心電図が形成されるわけです。

医師が心電図を見る時、大きくは二つのポイントに着目します。

  1. 各心拍が正常に見えているか。P波、QRS波、T波は正常な形をしているか。それらの間隔は正常か
  2. 心拍の間隔は正常であるか。不規則になっていたりしないか

なので、機械学習において特徴量を作っていく場合もこれらの特徴を捉えられるようなものを使います。論文によっては1を拍動レベルの特徴量、2をリズムレベルの特徴量と呼んだりもします。

標準12誘導心電図

一般に医療現場で心電図をとる際は、心臓の動きを様々な角度から見るために体に10の電極をつけて12の心電図を取得します。これを標準12誘導心電図と言います。標準12誘導心電図では胸に6つの電極をつけて6種の心電図(胸部誘導、V1〜V6)を、両手両足に電極をつけて6種の心電図(肢誘導、I、II、III、aVR、aVL、aVF)をとります。

Ske at French Wikipedia, ECG 12derivations, CC BY-SA 3.0

それぞれに波形は異なるので、例えばこの病気ならV4のT波の波形を見る、などというような見方をします。

ちなみにですが、Apple WatchやFitbitなどのウェアラブルで取得できる心電図は1誘導になるので、12誘導と比べると得られる情報量は少なくなります。 あとはアメリカでは肢誘導の6種の心電図を簡単に取得できるこのようなデバイスなども出ているようです。

機械学習の心電図データへの応用

心臓や心電図の基本が分かったところで、ここからは機械学習の話になります。こちらの記事を書くにあたって、Hong et al. (2020)Mincholé et al. (2019)などのサーベイ論文などを参考にしました。

Hong et al. (2020)は心電図データ×深層学習のサーベイ論文で、2010年〜2020年までに医療系または人工知能系の論文誌または国際会議に投稿された全ての心電図データ×深層学習の論文を分類しています。機械学習の心電図データへの応用についてより深く知りたい人はまずこちらの論文を読むことをオススメします。

Mincholé et al. (2019)はより一般的に心電図データ×機械学習についてレビューした論文です。

心電図データ×機械学習タスクの分類

機械学習の心電図データへの応用は大きく5つの分野に分けられます。

  • 病気の診断

王道中の王道だと思うのですが、不整脈の検知を行ったり、病気のサブタイピングを行ったり、また他の生体データと組み合わせて幅広い病気の検知を行ったりといった研究が行われています。

  • データのアノテーション

こちらは与えられた心電図のデータに対して、P波、QRS波、T波などの間隔を自動的にアノテーションするタスクです。

  • 睡眠の評価

OSA(閉塞性睡眠時無呼吸)など睡眠に伴う一部の疾患は、心臓に悪影響を与えることが知られており、これらを心電図データから検知しようという研究が盛んに行われています。

  • 個人認証

心電図は個人差があるので、それを生体認証に使おうというタスクです。

  • ノイズの除去

心電図は動きに敏感なので、計測中に動いてしまうとノイズが入ってしまったりします。これを自動的に除去するモデルについても研究されています。

またこれ以外にも心理的ストレスの検知であったり、変わったものだと人間の心電図から馬の心電図への転移学習などもあったりします。

ここからはいくつかの有名な論文/個人的に面白いと思った論文について見ていきます。

不整脈の分類

心臓の脈が乱れることをまとめて不整脈と言います。不整脈の代表的なものとしては心房細動(Atrial Fibrillation)などがあり、こちらはApple Watchにも検知機能が備わっていたりします(Apple Watchが心房細動を検知する際の精度を検証した論文はPerez et al. (2019)などを参照)

機械学習を用いて不整脈を検知する論文はたくさんあると思うのですが、こちらではその中でも実際に専門医に匹敵するかそれを上回る精度を出したことで有名になったStanfordとiRhythm Technologiesの共同研究について紹介します。

こちらは不整脈を1誘導心電図から分類する論文です。心電図はiRhythm Technologiesが開発したZio patchと呼ばれるウェアラブルデバイスを用いて取得されています。データの統計としては、

  • 学習データとして29,163人から64,121の心電図を収集&ラベル付け
  • データのサンプルレートは200Hz、1.28秒ごとの間隔に区切ってそれぞれにラベルを付ける。正常な人の心拍数は60〜100RPM程度なので、この間隔の中に大体1〜2心拍程度入っている想定
  • ラベルは10種類の主要な不整脈、正常脈、及びノイズ
  • テストデータは328人分336の心電図データで、複数の専門医が議論した合意の元ラベル付けされている

となっています。

既存研究では、データの前処理としてRR間隔の統計量をとったり、振動数成分を抽出したりなど行っているのですが、こちらの研究では前処理ほぼ無しにそのまま34層の1D-CNNにデータを入れて学習を行っています。結果は以下の通りで、多くの不整脈についてモデルが専門医よりも高い精度を出していることが分かります。

Rajpurkar et al. (2017)より引用

HCM(肥大型心筋症)の表現型の同定

同じように見える疾患でも実は起こっている原因は違う、というのはよくあることだと思うのですが、これらの疾患のサブタイプを自動的に切り分けようと思うと機械学習的にはクラスタリングを使います。それをHCMに適用したのがこちらの研究です。

HCM(肥大型心筋症)は左室心筋の肥大によって生じる左室の拡張機能の障害を主とする遺伝性の疾患で、失神、胸痛、動悸、息切れなどの症状を引き起こし、時には突然死を引き起こすことでも知られています。それのサブタイプをクラスタリングを用いて同定したのが以下の論文です。

やっていることとしては、

  • 85人のHCM患者の心電図データを取得
  • QRS波の形(Hermite多項式での展開係数を特徴量として使用)とT波が反転しているか否かを特徴量として、DBSCANを用いてクラスタリング
  • 同定したクラスタについて、各種バイオマーカーなどの情報を見て各クラスタの特徴を調べる

で、クラスタリングにより4つのサブタイプを同定(1A、1B、2、3)、1Aについては突然死のリスクが他のサブタイプよりも有意に高いこと、1Aは心尖部肥大と中隔肥大が共存している場合が多く、2と3はほぼ中隔肥大のみであることが分かりました。

Lyon et al. (2018), CC BY 4.0より引用

OSA(閉塞性睡眠時無呼吸)の検知

一般に、人はストレスがかかると心拍数が上がったり交感神経と副交感神経のバランスが崩れ、それが心電図にも影響を与えることが知られています。これは上でも触れた心電図データからストレスを検出する論文などにも使われているのですが、この性質などを利用して呼吸器系の疾患などを心電図から検知する(脳に酸素が行かなくなるとストレスが生じる)論文もいくつか存在します。

こちらの論文

は心電図データに1D-CNNをかけてOSA(閉塞性睡眠時無呼吸)を検知しようという論文です(多分、深層学習を使ってECGからOSAを抽出した最初の論文はこちらだと思いますが、手法が無駄にややこしいので、上記の論文を紹介します)。睡眠時は普通は副交感神経が働いていて、交感神経はあまり活動しない状態になっていますが、OSAが起こるとストレスにより交感神経の活動が促進されます。それを心電図データから検知しようというわけです。

特徴量としては、交感神経と副交感神経のバランスに関連すると言われているRR間隔(QRS波のピークと次のピークとの間の間隔)の低振動数(0.04〜0.15Hz)成分と高振動数(0.15〜0.4Hz)成分の比だったり、心拍数の変化=RR間隔の統計量の変化などが効くことが知られており、このようなドメイン知識を用いて特徴量を設計しても良いのですが、上記の論文では手で特徴量を作るかわりに1D-CNNで自動的に特徴量を抽出することで既存手法と並ぶかそれを上回る精度(sensitivity 83.1%、specificity 90.3%)を実現しています。

ちなみに、OSA検知のために使われているデータとしてはPhysioNet Apnea-ECG datasetUCD datasetなどがあり、こちらの論文でもそれらのデータを使用しています。

まとめ

ウェアラブルで心電図データが取得できるようになったので、これから心電図データ×機械学習の研究&社会実装が更に進むような気がしています。皆さんも心電図データ、手を出してみませんか?

弊社では、共にAIやテクノロジーを駆使して日本の医療を良くしていく仲間たちを募集しています。フルタイム、インターンの募集要項はこちら。

フルタイム https://www.wantedly.com/projects/406812

インターン https://www.wantedly.com/projects/406820

参考文献

  • みんなの心電図, https://informa.medilink-study.com/web-informa/post18947.html/
  • Hong, S., Zhou, Y., Shang, J., Xiao, C., and Sun, J. (2020). Opportunities and Challenges of Deep Learning Methods for Electrocardiogram Data: A Systematic Review. https://arxiv.org/abs/2001.01550
  • Mincholé, A., Camps, J., Lyon, A., and Rodríguez, B. (2019). Machine learning in the electrocardiogram. Journal of Electrocardiology 57, 61–64.
  • Rajpurkar, P., Hannun, A. Y., Haghpanahi, M., Bourn, C., and Ng, A. Y. (2017) Cardiologist-Level Arrhythmia Detection with Convolutional Neural Networks. https://arxiv.org/abs/1707.01836
  • Lyon, A., Ariga, A., Mincholé, A., Mahmod, M., Ormondroyd, E., Laguna, P., de Freitas, N., Neubauer, S., Watkins, H., Rodriguez, B. (2018). Distinct ECG Phenotypes Identified in Hypertrophic Cardiomyopathy Using Machine Learning Associate With Arrhythmic Risk Markers. Front. Physiol., 13.
  • Wang, T., Lu, C., Shen, G., and Hong, F. (2019). Sleep apnea detection from a single-lead ECG signal with automatic feature-extraction through a modified LeNet-5 convolutional neural network. PeerJ. 2019; 7: e7731.

--

--