WiDS Tokyo@IBM 2021開催記念?: AutoAIの時系列予測で今後30日の東京の新型コロナ感染数予測をしてみる


2021年 6/4(金)開催 Women in Data Science (WiDS) Tokyo @ IBM

2021年 6/4(金)開催のWiDS Tokyo @ IBMは、スタンフォード大学で開催されるGlobal Women in Data Science (WiDS) Conference に合わせて開催されるIBMが主催するオンライン・イベントです。
スピーカーは全員女性で、最新のデータサイエンスとそれを取り巻く話題や、今後のデータサイエンスにも影響する量子コンピュータについてのセッションが盛りだくさんです。参加は性別を問わず可能です。

ということで、今回はこちらのイベントの宣伝の意味も兼ねて、Watson StudioのAutoAIにベータとして搭載された時系列予測機能を試してみた記事です。ちなみにイベントのセッション内容とは何の関係もありません、、、、。

AutoAIはIBM Cloud上のWatson Studio(あるいはCloud Pak for Data)で使える、学習データを渡すと自動でいい感じの(?)機械学習モデルを作成できるツールです。今までは分類と回帰しかできなかったのですが、最近ベータで時系列予測ができるようになりました。

時系列予測

時系列予測は過去の周期的データを入力にし、未来の結果を予測します。ある地点の気温を数年単位で折れ線グラフにすると1年の周期で変わっていくのが想像でき、未来年の気温も月がわかればだいたい予測できますよね(経験的にも). これと同じような考え方で日付や時間単位での過去データ(予測したい値)を入力とし、その先の未来の予測データを得るのが時系列予測です(と私は最近理解しました)。
正確にはググってみてください、、、。

東京の新型コロナ感染数データ

東京の新型コロナ感染数というのは、ご存知の方も多いと思いますが、オープンデータとなっていて、最新のデータをCSVファイルで入手できます(2021/05/16現在)。このデータを使ってAutoAIで時系列予測をしてみます。

1. AutoAIを使うための前準備

1-1. Watson Studio サービスとプロジェクトの作成

まずはWatson Studio サービスとプロジェクトの作成をします。手順は以下になります。
ここで重要なのは、必ずリージョンはダラスで作成してください。東京だとベータの時系列予測が2021/05/16現在実装されていませんでした。
Watson Studio サービスとプロジェクトの作成

1-2. Machine Learningサービスの作成

これはIBM CloudのWebコンソールのカタログから作成しても、Watson Studioから作成してもOKです。同じリージョンで既に作成済みであればそれを使用することが可能です(同じリージョンである必要があります。)

作成するのは以下です。
- 作成するサービス: Machine Learning
- リージョンの選択: Watson Studioと同じリージョン

方法1: Watson Studioから作成

方法2: IBM CloudのWebコンソールから作成

1-3. Machine Learningサービスとプロジェクトの関連付け

以下の手順で実施してください(前提は実施済みなので、1から実施)。

2. データ準備

ここではnotebookを使って、データを取得加工します。
作成したプロジェクを開いてある状態から開始します。

2-1. 画面の右上にあるプロジェクトに追加をクリックします。

2-2. Notebookをクリック

2-3. URLからタブをクリック

2-4. 名前, Notebook URLを入力して、[作成]をクリック

名前には任意の名前(下の例はAutoAI_COVID19_Tokyo), Notebook URLには以下のURLをコピペして入力します。

https://github.com/kyokonishito/autoai-timeseries-covid19/blob/main/AutoAI_COVID19_Tokyo.ipynb

その後[作成]をクリックして、Notebookを作成してください。

2-5. Notebookに書いてある指示を読んで、指示にしたがって手順を実施し、最後までセルを実行してください。

指示はNotebookに書いてあります。
特に、「プロジェクト・トークンの挿入」をしたセルの実行は忘れないようにしてください。

セルを最後まで実行すると、時系列予測作成用のデータがプロジェクトのデータ資産として作成されます。

参考:
入力ファイルから日付別の感染者数データに加工したファイルが作成されます。
元データ:

加工後のデータ:

実行が終わったら、上の自分の使っているプロジェクト名(この例ではAutoAI Test)をクリックしてプロジェクトに戻ってください。

3. AutoAIでモデル作成

いよいよ AutoAIでモデル作成します。

3-1. 上部にあるプロジェクトに追加をクリック

3-2. 「資産タイプの選択」画面からAIエクスペリメントをクリック

3-3. 「新規 AutoAI エクスペリメント」の画面で名前を入力し、作成をクリック

3-4. 「データ・ソースの追加」画面が表示されるので、「プロジェクトから選択」をクリック

3-5. covid19_timeseriesdata.csvにチェックを入れ、「資産の選択」をクリック

3-6. 「時系列予測を作成しますか?」の「はい」をクリック

3-7. 「予測する内容」を設定

以下の内容を設定します:

  • 予測列: Number_Of_People (予測するのは感染者数)
  • 日付/時刻列: Date (日付の入った列)
  • 予測範囲: 30 (入力の最後の日付から30日後までの予測)

参考までに「エクスペリメント設定」を確認します。
「エクスペリメント設定」をクリックし、「データソース」→「時系列」タブをクリックしてください。
バックテストの回数やギャップの長さ、ホールドアウト数が設定できます。

ギャップの長さは、入力データから連続しない未来の予測をしたい場合に、連続しない部分の長さを入れます。例えば今のデータで入力データの最後の日付から30日後から予測したい場合は、ギャップの長さは30となります。

グラフも表示されるので、バックテストのイメージが湧きやすいです。

今回は変更なしでそのまま実行します。「キャンセル」をクリックして閉じます。

3-8. 「エクスペリメントの実行」をクリックして開始

順次進捗が表示されます:

3-9. 完了したら、一番上に表示されたパイプラインを確認

2〜3分で完了します。完了したら「エクスペリメント完了」と表示されます。
バックテストの結果、一番よい評価のパイプラインが一番上にきますので、一番上に表示されたパイプラインをクリックして詳細を確認してみます。

4. 予測結果の確認

4-1. 右側のメニューから「Model evaluation」をクリックします。

4-2. 予測値を確認

グラフの右側の緑の点線(ピンクの点線内)が今後30日の予測値のグラフです。
ちなみに紫の線は実際の値、薄緑の線がこのモデルで予測した過去の値です。

マウスカーソル を予測グラフの点の上に重ねると、具体的な値が表示されます。
下のイメージは5/16から3日後、5/19の予測値です。

全体的に爆発的にも増えず、30日間は600-800あたりをウロウロしていると予測されてますが、実際はどんな感じになるでしょうね、、、、。
今回パラメーターは調整してませんので、正確さが上がるように再度いろいろ調整してみるのもよいと思います。

この値を取り出して、データとして使用するにはAPI化して、python等からWebサービスを呼び出して、取得することになります。今回はそこまではやりません。

やってみたい方はPredicting COVID19 cases with AutoAI time series API(英語)のCodeを参考にしてみてください。

以上です。

最後に

いろいろなデータサイエンスに関わる女性スピーカーの話が聞ける2021年 6/4(金)開催のWiDS Tokyo @ IBM、初心者から経験者までいろいろなセッションがありますので、一部だけでも問題ありませんので、ぜひ皆様ご参加ください!