メインコンテンツへジャンプ
Engineering blog

2020年4月14日初稿、2020年4月21日更新

新型コロナウイルス感染症(COVID-19)の感染拡大による混乱の中、データエンジニアやデータサイエンティストの多くが「データコミュニティとして何ができるだろうか」と自問し続けています。データコミュニティは、この短期間で実際に大きな貢献をしており、その代表例として、米国ジョンズ・ホプキンス大学のシステム科学工学センター(CSSE)が提供するデータリポジトリが挙げられます。このデータセットは、COVID-19(2019-nCoV)について最も広く利用されているものの1つです。次のGIF動画は、3月22日から4月14日にかけての検査確定症例(郡地域)と死亡者(円で表現)の比例数を視覚的に示しています。

他にも、病原体の進化をリアルタイムで追跡できる新型コロナウイルスのゲノム情報などの例があります(マウスのクリックで感染と系統が再生を再生します)。

新型コロナウイルスのゲノム情報(2020年4月8日)
図2 - 出典:新型コロナウイルスのゲノム情報(2020年4月8日以降)

病院からのリソース使用率のモデリングの有力な例には、ワシントン大学保健指標評価研究所(IHME)によるCOVID-19に関する予測があります。次のスクリーンショットは、病院リソースの予測使用率のメトリックを示しており、2020年3月28日がリソース使用量のピークであったことがわかります。

IHMEによるイタリア国内におけるCOVID-19の予測(2020年4月8日以降)
図3 - IHMEによるイタリア国内におけるCOVID-19の予測(2020年4月8日以降)

いかに貢献できるか

データブリックスでは、COVID-19の克服は現時点で世界で最も困難な問題であり、重要な意思決定を支援するには、基礎となるデータを理解することが大切だと考えています。そこで私たちは、データ探索の初心者からデータ専門家までの誰もがこの取り組みに参加できるよう、対策を講じました。

対策の一環として、COVID-19データセットの分析の入門編として「COVID-19の分析:データコミュニティはいかに貢献できるか」をテーマとした技術トークのセッションを3月の下旬に開催しました。本セッションでは、Apache Spark™PythonpandasBERTなどのさまざまなオープンソースプロジェクトを用いて、探索的データ分析と自然言語処理(NLP)を行いました。また、これらのNotebookをダウンロードできるようにして、ローカルのPython仮想環境、クラウドコンピューティング、Databricks Community Editionなど、ユーザーが好む環境を選択して使用できるようにしました。

このセッションでは、新型コロナウイルスに関する研究データセットのCORD-19(COVID-19 Open Research Dataset Challenge)を分析し、次の点を確認しました。

  • 数千のJSONファイルが存在し、各ファイルに参照文献など研究論文のテキストの詳細が含まれているが、JSONスキーマは複雑で、データ処理の作業は難しくなる場合がある。これに対して、Apache SparkはこれらのJSONファイルのスキーマを迅速かつ自動的に推論できるため、このNotebookを使用して、数千ものJSONファイルをわずか数個のParquetファイルに保存し、探索的データ分析を容易に実行できる。
  • 大半のテキストは構造化されておらず、筆頭著者の国名の特定ができないなど、データ品質の問題がある。このNotebookでは、このデータをクリーンアップし、ISO Alpha 3の国名コードを特定する手順を提供している。これにより、筆頭著者の国別の論文数をマッピングできる。
 「COVID-19の分析:データコミュニティはいかに貢献できるか」より、COVID-19関連論文の筆頭著者の国別の論文数
図4 - COVID-19関連論文の筆頭著者の国別の論文数
(出典:「COVID-19の分析:データコミュニティはいかに貢献できるか」)
  • データをクリーンアップすることで、各種NLPアルゴリズムの適用が可能になり、データから新たな気づきを得ることができる。このNotebookは、論文の抄録(論文あたり7,800から1,100文字)の一般化や、研究論文タイトルをもとにしたワードクラウドの作成など(下図)、さまざまなタスクに利用できる。
OVID-19関連の研究論文タイトルに基づくワードクラウド(出典:「COVID-19の分析:データコミュニティはいかに貢献できるか」)
図5 - OVID-19関連の研究論文タイトルに基づくワードクラウド
(出典:「COVID-19の分析:データコミュニティはいかに貢献できるか」)

データの重要性

データアナリスト、データエンジニア、データサイエンティストの多くが認めるように、データの品質は探索的データ分析に大きな影響を及ぼします。ブログ、A Few Useful Things to Know about Machine Learning(2012年10月)(機械学習について知っておくべきこと)に、次のような記述があります。

「ダメなアルゴリズムと膨大なデータの組み合わせは、賢いアルゴリズムと少なめの量のデータの組み合わせに勝つ(アルゴリズムの善し悪しより、データ量が重要)」 

 

ここで重要なのは、高品質データを大量に持つことの重要性を強調していることです。ただし、特徴量エンジニアリングの大切さや、データだけでは不十分であるといった、機械学習における他の側面を矮小化する意図はありません。

データコミュニティの多くは、さまざまなSARS-CoV-2(原因)とCOVID-19(疾患)のデータセットをKaggleやGitHubで利用できるように、適宜取り組んでいます。

私たちは、データブリックスまたは Databricks Community Editionを使用しているユーザーが分析をより簡単に実行できるように、研究用のさまざまな COVID-19 データセットを定期的に更新、提供しています(非営利目的)。現在、更新しているのは下記のデータセットです。今後さらに追加される予定です。

探索的データ分析のワークショップ

先般の技術トークが高評価をいただけたおかげで、COVID-19データセットを使用したPythonでの探索的データ分析のワークショップシリーズの開催が決まりました。ワークショップの様子はYouTubeで視聴できます。また、Notebookはhttps://github.com/databricks/tech-talksから利用可能になる予定ですので、お好みの環境で使用することができます。

データブリックス環境での Python 入門

このワークショップでは、無償版のDatabricks Community EditionのNotebook環境を使い、Pythonによるプログラミングに必要な簡単な手順を紹介します。Pythonは、データ分析、機械学習、Web開発など、用途の幅広さから人気のあるプログラミング言語です。このワークショップでは、データ分析に重点を置き、Pythonでコーディングを始めるための主要な基本概念を取り上げ、異なるタイプの変数、ループ、関数、条件文を学びます。プログラミングに関する予備知識は必要ありません。

このワークショップの参加対象者:どなたでも参加できます。コンピューターサイエンス専攻の学生、非技術系の方々の参加も歓迎します。プログラミングに関する知識は必要ありません。これまでにPythonのコースを受講したことがある方には、このワークショップは基礎的すぎる内容かもしれません。

データブリックスのPython入門ワークショップでは、データ分析に重点を置き、Pythonでコーディングを始めるための主要な基本概念について説明します。

pandas を使用したデータ分析

このワークショップでは、データ分析と操作のためのパワフルなオープンソースのPythonパッケージ、pandasを中心に取り組みます。データの読み取り、要約統計量の計算、データ分散の確認、基本的なデータクリーニングと変換の実行、そして簡単なデータの可視化のプロットを行う方法を学びます。ジョンズ・ホプキンス大学のシステム科学工学センター(CSSE)による新型コロナウイルス感染症(COVID-19)のデータセットを使用します。

このワークショップの参加対象者:どなたでも参加できます。コンピューターサイエンス専攻の学生、非技術系の方々の参加も歓迎します。Pythonに関する基礎知識があることが推奨されます。

準備:事前の準備は必要ありませんが、ワークショップは、Pythonに関する基礎知識があることを前提とした内容となっています。初めてPythonに触れる方には、データブリックスのPython入門チュートリアルでの事前学習をお勧めします。

pandasのデータ分析ワークショップでは、データの読み取り、要約統計量の計算、データ分散の確認、基本的なデータクリーニングと変換の実行、そして簡単なデータの可視化のプロットを行う方法を学びます。

scikit-learn による機械学習

scikit-learnは、データサイエンティストに最も人気のあるオープンソース機械学習ライブラリの1つです。このワークショップでは、機械学習の基礎、異なるタイプの機械学習、簡単な機械学習モデルの構築方法について段階的に説明します。ここでは、機械学習モデルを適用して評価する手法に焦点を当てるため、機械学習の背景にある統計的概念は学習内容に含まれません。ジョンズ・ホプキンス大学システム科学工学センター(CSSE)による新型コロナウイルス感染症(COVID-19)のデータセットを使用します。

このワークショップの参加対象者:どなたでも参加できます。コンピューターサイエンス専攻の学生、非技術系の方々の参加も歓迎します。Pythonおよびpandasに関する基礎知識があることを前提としています。初めてPythonおよびpandasに触れる場合は、事前学習として、データブリックスのPython入門チュートリアルを視聴した後に、pandasでデータ分析チュートリアルに登録されることをお勧めします。

scikit-learnによる機械学習ワークショップでは、機械学習の背景にある統計的概念ではなく、機械学習モデルを適用して評価する手法に焦点を当てています。

Apache Spark の概要

このワークショップでは、ビッグデータ処理エンジンとして最もポピュラーな Apache Spark の基礎について説明します。Sparkを活用して、データインジェスト、Spark UIの分析、分散コンピューティングの理解を深める方法を学習します。ニューヨーク・タイムズ紙の公開データを使用します。Sparkの予備知識は不要ですが、Pythonの経験があることが強く推奨されます。

このワークショップの参加対象者:どなたでも参加できます。コンピューターサイエンス専攻の学生、非技術系の方々の参加も歓迎します。Pythonおよびpandasに関する基礎知識があることを前提としています。初めてPythonおよびpandasに触れる方には、事前学習として、データブリックスのPython入門チュートリアルの視聴をお勧めします。

Apache Spark の概要

COVID-19 データセットの探索

COVID-19 データセットの分析をすぐに開始できるように、tech-talks/samplesフォルダに、ニューヨーク・タイムズ紙のCOVID-19データセットジョンズ・ホプキンス大学システム科学工学センター(CSSE)による新型コロナウイルス感染症(2019-nCoV)のデータリポリトジのNotebookを追加しました。いずれのデータセットも定期的に更新され、/databricks-datasets/COVIDで利用可能です。

ニューヨーク・タイムズ紙のCOVID-19分析Notebookでは、COVID-19の症例と死亡者に関する分析結果を郡別に掲載しています。

ワシントン州における教育施設の閉鎖期間中のCOVID-19症例の割合(上位10郡)(出典:2020年4月14日現在のニューヨーク・タイムズ COVID-19 データセット)
図6:ワシントン州における教育施設の閉鎖期間中のCOVID-19症例の割合(上位10郡別)
(出典:2020年4月14日現在のニューヨーク・タイムズ COVID-19 データセット)

 

ニューヨーク州における教育施設の閉鎖期間中のCOVID-19症例の割合(上位10郡)(出典:2020年4月14日現在のニューヨーク・タイムズ COVID-19 データセット)
図6:ニューヨーク州における教育施設の閉鎖期間中のCOVID-19症例の割合(上位10郡)
(出典:2020年4月14日現在のニューヨーク・タイムズ COVID-19 データセット)

ジョンズ・ホプキンス大学(JHU)のCOVID-19分析のNotebookに基づく観察結果をいくつか紹介します。

  • 2020年4月11日現在、JHUのCOVID-19に関する日次報告のスキーマは3回変更されています。上記のNotebookには、各ファイルのループ処理、日付を取得するファイル名の抽出、および3 つの異なるスキーマをマージするスクリプトが含まれています。
  • Altairの可視化機能を提供し、米国におけるCOVID-19関連の症例数と死亡者数の指数関数的な増加をスライダーバーを介して静的および動的に視覚化しています。
3/22のAltair Choroplethの地図を用いた確定症例数(郡単位)と死亡者数(緯度・経度で測定)の比較(ジョンズ・ホプキンス大学のCOVID-19データセットを使用)
3/22および4/11のAltair Choroplethの地図を用いた確定症例数(郡単位)と死亡者数(緯度・経度で測定)の比較
(ジョンズ・ホプキンス大学のCOVID-19データセットを使用)

3/22および4/11のAltair Choroplethの地図を用いた確定症例数(郡単位)と死亡者数(緯度・経度で測定)の比較<br />(ジョンズ・ホプキンス大学のCOVID-19データセットを使用)

また、ニューヨーク・タイムズ紙のCOVID-19分析ノートブックには、ワシントン州(2020年3月13日)とニューヨーク州(2020年3月18日)で教育施設を閉鎖した時期の2週間前後におけるCOVID-19確定症例数と死亡者数(それぞれ総人口に対する実数比例)を、郡の階級区分図と棒グラフで掲載されています。

ニューヨーク・タイムズ紙 COVID-19データセットのAltair Choropleth Mapと棒グラフを用いた教育施設閉鎖前後の2週間のCOVID-19確認症例数(郡)と死亡数(緯度、経度)の実績と比例関係
ニューヨーク・タイムズ紙 COVID-19データセットのAltair Choropleth Mapと棒グラフを用いた教育施設閉鎖前後の2週間のCOVID-19確認症例数(郡)と死亡数(緯度、経度)の実績と比例関係

考察

このパンデミック中にデータコミュニティができる支援は、各郡における症例数と死亡者数の増加率の更新や、いち早くソーシャルディスタンスを適用した州における感染者数の推移の提供、また、曲線の平坦化を示したソーシャルディスタンスの効果など、データの背後にあるパターンの重要な洞察を提供することです。COVID-19の核心は、患者の命をいかにして救えるかという医学的な問題ですが、疫学的な問題でもあります。感染者数の増加を抑制するための公衆衛生政策にデータを活用するなど、データへの理解が医学界の的確な意思決定を支援します。

Sark学習ブック(O’Reilly)

無料の第2版には、pandas UDFのPython型ヒント、新しい日付/時刻の実装など、Spark 3.0のアップデートが含まれています。

無料ダウンロード