Delta Lake、Keras、MLflowを用いた機械学習による医療機器データのモニタリング

[Monitoring patient medical device data with ML \+ Delta Lake, Keras, and MLflow](https://databricks.com/blog/2019/09/12/monitor-medical-device-data-with-machine-learning-using-delta-lake-keras-and-mlflow-on-demand-webinar-and-faqs-now-available.html)の翻訳です。

2019/8/20に我々は、ヘルスケア、ライフサイエンスのテクニカルディレクターのFrank Austin Nothaft, PhDとシニアインダストリーソリューションマーケティングマネージャのMichael Ortegaによるウェビナー[Automated Monitoring of Medical Device Data with Data Science](https://pages.databricks.com/201908-WB-Automated-Monitoring-of-Medical-Device-Data_Reg.html)を開催しました。
![](https://databricks.com/wp-content/uploads/2019/08/Webinar-promo-Automated-Monitoring-of-Medical-Device-Data-with-Data-Science-social-rectangle.jpg)

医療機器データに機械学習を適用することで、医療機関は患者モニタリングを自動化し、予兆保全によって修理コストを削減し、医療機関外における患者の健康状態に対する新たな洞察を収集できるようになります。しかし、大規模データセットに対するMLパイプラインの構築を試みる医療機関の多くは、レガシーなインフラのスケール、信頼できるストリーミングパイプラインの構築、効率的モデル開発といった様々な課題に直面しています。このウェビナーでは、Databricksと人気のあるオープンソーステクノロジーを用いて、どのようにこれらの課題を解決すべきかを、医療機器のストリーミングデータに対するディープラーニングモデルのライブデモを含めてシェアしました。

以下のことを学ぶには[ウェビナーのリプレイ](https://pages.databricks.com/201908-WB-Automated-Monitoring-of-Medical-Device-Data_Reg.html)を参照ください：

- 構造化ストリーミングとDelta Lakeを用いたEKG(心電図)データに対するストリーミングパイプライン構築
- データエンジニアリングのボトルネックを解消し、データの一貫性を改善
- リアルタイムのEKGストリーミングデータに対するインタラクティブなクエリーの実行
- テラバイト規模の波形に対するディープラーニングモデルの迅速なトレーニング
- 分析のトレーサビリティのためのMLflowによるモデルライフサイクル全体のトラッキング、管理

これらのコンセプトを以下のノートブックとチュートリアルで説明しました：

- [データのダウンロード、前処理](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/1.%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0.ipynb)
- [ニューラルネットワークのトレーニング、チューニング](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/2.%20ECD%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0.ipynb)
- [ストリーミングデータセットの生成](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/3.%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0.ipynb)
- [到着データに対する継続的推論](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/4.%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF.ipynb)

ウェビナーの最後では、以下のQ&Aを行いました：

**質問：このユースケースでWFDBはどのように役立ったのですか？WFDBデータはDatabricks内、あるいは別のサーバーに格納されるのですか？**

[WFDB](https://wfdb.readthedocs.io/en/latest/)は生物医学波形データをやり取りする際の標準的なファイルフォーマットです。この例では、心電図データが到着する際の総合交換可能なファイルフォーマットとなっており、データは[Databricks File System \(DBFS\)](https://qiita.com/taka_yayoi/items/e16c7272a7feb5ec9a92)に格納されています。DBFSはお客様の[Azure DatabricksにおけるAzure Blob Storage](https://docs.microsoft.com/en-us/azure/databricks/data/databricks-file-system#databricks-file-system)あるいは[AWSのDatabricksにおけるS3](https://qiita.com/taka_yayoi/items/e16c7272a7feb5ec9a92)に格納されたデータに対するメタデータを管理するシンレイヤーです。ここでデモしたワークフローでは、WFDBからDeltaテーブルに変換するところからスタートしました。

**質問：どのようにウィンドウサイズを決めるのですか？サイズはパフォーマンスに影響しますか？**

データセットを分析した[最近のブログ](https://blog.orikami.nl/diagnosing-myocardial-infarction-using-long-short-term-memory-networks-lstms-cedf5770a257)を参考にして、ウィンドウサイズ2,048を選択しました。直感的に、このデータセットにおけるサンプリングレートでは2,048サンプルは概ね2つの鼓動となります。

**質問：データ投入の前に何かしらの信号処理は行われましたか？**

この例では、オープンアクセスの[PTB Diagnostic ECG database](https://physionet.org/content/ptbdb/1.0.0/)からデータを取得しました。データを取得する際に限定的な信行処理は行われました。データをダウンロードした後は追加の信号処理は行っていません。

**質問：Databricksではauto-kerasをサポートしていますか？**

[auto\-keras](https://autokeras.com/)は[Keras](https://keras.io/)ディープラーニングライブラリを用いて、ニューラルネットワークモデルアーキテクチャの最適化を自動化するためのpythonライブラリであり、Databricksの[MLランタイム](https://databricks.com/jp/product/machine-learning-runtime)([AWS](https://docs.databricks.com/applications/deep-learning/single-node-training/keras.html)|[Azure](https://docs.microsoft.com/en-us/azure/databricks/applications/machine-learning/train-model/tensorflow))にプレインストールされています。auto-kerasはDatabricksのライブラリ管理機能([AWS](https://qiita.com/taka_yayoi/items/d3a46efdc1ad01a581d0)|[Azure](https://docs.microsoft.com/en-us/azure/databricks/libraries/))を用いてもインストールでき、Databricksクラスターで利用できます。auto-keras以外にも幅広いAutoMLの機能をカバーしており、最近の[ブログ記事](https://databricks.com/blog/2019/08/20/automl-on-databricks-augmenting-data-science-from-data-prep-to-operationalization.html)でも触れられています。

**質問：どのようにクラスターをモニターするのですか？それぞれのジョブに関するメトリクスをどこで確認できますか？**

Sparkのジョブが実行されている際、ノートブックのインラインあるいは、DatabricksのクラスターUIにSpark UIが表示されます([AWS](https://docs.databricks.com/user-guide/clusters/sparkui.html)|[Azure](https://docs.microsoft.com/en-us/azure/databricks/clusters/clusters-manage#clusters-sparkui))。さらに、Ganglia([AWS](https://docs.databricks.com/user-guide/clusters/metrics.html)|[Azure](https://docs.microsoft.com/en-us/azure/databricks/clusters/configure#cluster-performance))に出力される様々なメトリクスをカバーしています。

**次のステップ**

- 詳細を理解するために[ウェビナーのリプレイ](https://pages.databricks.com/201908-WB-Automated-Monitoring-of-Medical-Device-Data_Reg.html)を見ます。
- ウェビナーで使用した以下のノートブックを用いて、医療機器に対するディープラーニングパイプラインの探索をスタートします。
    - [データのダウンロード、前処理](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/1.%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0.py)
    - [ニューラルネットワークのトレーニング、チューニング](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/2.%20ECD%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0.py)
    - [ストリーミングデータセットの生成](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/3.%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0.py)
    - [到着データに対する継続的推論](https://github.com/taka-yayoi/public_repo/blob/main/ecg_deeplearning/4.%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF.py)
- Databricksの[無料トライアル](https://databricks.com/jp/try-databricks)をスタートしてみます。


### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)