見出し画像

プログラミングせずにコロナ感染者数を予測するAIを作る

こんにちは。
ビジネスのためのAI活用プラットフォーム「MatrixFlow」の開発者の一人です。

時系列解析の新機能TrendFlowを紹介したいと思います。


TrendFlowは難しい時系列解析のテクニックを一切必要とせずにデータを投入するだけで未来を予測するAIを作成できる機能です。

今回はそのTrendFlowでコロナの感染者数を予測するAIを作成したいと思います。

※この記事を書いた時点では6/9までのデータがあります。

まずはデータですが日別のコロナ感染者数のリストCSVファイルで用意します。(データはここを参考にしました。)
確定日が陽性が確定した日で、感染者数がその確定日の人数です。

スクリーンショット 2020-06-11 20.59.27

このCSVファイルをMatrixFlowのデータ管理画面よりアップロードします。

スクリーンショット 2020-06-11 22.09.17

スクリーンショット 2020-06-11 21.04.56

アップロードした日別のコロナ感染者数データですが、欠損値(空欄)があります。
通常は欠損値を埋めるために前処理を行うのですが、実はTrendFlowの最大の特徴の一つとして欠損値の補完をせずに機械学習ができるという特徴があります。ですので前処理をせずにこのまま学習に使います。

学習の前にレシピを作ります。
レシピ管理画面に行き「新規追加」ボタンを押します。

スクリーンショット 2020-06-11 21.18.52

ブロックタイプ「時系列解析」からTrendFlowをドラック&ドロップで作成フィールドに置き、データ入り口(数値)と精度評価にそれぞれ繋げてます。名前と説明を書いて保存ボタンを押せばレシピの完成です。

データとレシピがそろったので学習します。

スクリーンショット 2020-06-11 21.22.47

先ほど作成したレシピと日別コロナ感染者数のデータを選択します。
レシピと学習データを選択すれば、予想する値を選択できるようになるのでここは「感染者数」を選びます。また学習に使う値には時系列解析なので時間データを表している「確定日」を選択します。名前と説明を入力したら学習開始ボタンを押します。

学習結果です。TrendFlowには周期モードとして「乗法的」と「加法的」の二つがあります。よくフィットしてる方を採用します。

スクリーンショット 2020-07-31 22.33.16

スクリーンショット 2020-07-31 22.33.23

黒い線が実測値で、紫色の線が予測値になります。紫の範囲は信頼区間です。どちらの周期性モードも全然フィットていませんね・・・これではまともな予測は出来なさそうです。
実はTrendFlowは初期設定では年周期と週周期を捉えるようになっています。そこで日周期を考慮して学習するようにしましょう。

レシピ画面に戻り、先ほどのレシピの編集ボタンを押しTrendFlowのブロックを押します。周期という項目があるのでプラスボタンを押して周期を追加します。

スクリーンショット 2020-06-11 21.40.45

日周期を追加したいので名前を「日周期」、期間を「1」、時間単位を「日」にします。
(ここでは「秒」「分」「時」「日」「週」「月」「年」というあらゆる単位の周期を追加することができます。)

スクリーンショット 2020-06-11 21.43.10

入力したら保存ボタンを押してレシピの編集を完了させます。ふたたび学習画面に戻り先ほどと同じ設定で学習を開始します。

その学習結果がこちらです。

スクリーンショット 2020-07-31 22.34.54

スクリーンショット 2020-07-31 22.34.59

今度は周期性モード「乗法的」の「アルゴリズム No.1」がフィットしていて良さそうです。

またグラフは、以下のように拡大して詳細を確認することもできます。

スクリーンショット 2020-07-31 22.36.27

「詳細を表示/非表示」ボタンを押すことで、他のにもトレンドや変化点や周期の傾向を確認することができます。

トレンドです。全体動きの傾向を確認できます。スクリーンショット 2020-06-11 21.48.03


変化点です。今回のタスクとは違いますが時系列データの異常検知などをしたい場合をここを確認することで異常が起こった時間を特定できます。スクリーンショット 2020-06-11 21.48.15


週の周期です。日曜日と月曜日に感染者数が落ち込みそのまま日が経つごとに増加する傾向にあるようです。コロナの傾向というよりは人々が検査を受けに行くタイミングと関係ありそうですが、確かなことはより調査する必要があるでしょうね。
スクリーンショット 2020-06-11 21.48.23


最後は日単位ですが、ここはデータ自体が日ごとのデータなので周期は表示されません。時間ごとのデータなら1日の時間別の傾向を見ることができます。スクリーンショット 2020-06-11 21.48.42


また、今回は欠損値があったので相関グラフ(コレログラムと言います)を見ることはできませんが、欠損値がない場合は以下の画像のように相関グラフを見ることができます。

※この画像は今回のコロナのデータとは無関係です。スクリーンショット 2020-06-11 22.02.43


時系列解析で使われる各評価指標も確認できるので数値的に作成済みAI同士を比較したい時には使います。(この機能は現在使えなくなっています。

スクリーンショット 2020-06-11 22.02.55


これでコロナの感染者数を予測するAIは完成したので予測させてみましょう。
推論画面へと移動します。
先ほどの学習済みAIを選択し、使用するアルゴリズムにはよくフィットしていた乗法的の「Algorithm No.1」を選びます。ここでは7日先までを予測してみましょう。

スクリーンショット 2020-07-31 22.23.35


予測期間に「7」を入力、時間単位に「日」を選択し、推論開始ボタンを押します。
スクリーンショット 2020-06-11 22.05.31

推論結果です。スクリーンショット 2020-06-11 22.06.43

拡大します。スクリーンショット 2020-06-11 22.07.14

予測結果を見る限りでは6月半ばまではまだ10~30の間をフラフラしてるという感じでしょうか。(当たってましたか?
また推論結果はダウンロードすることもできるので結果をエクセルなどでさわりたい人は「結果をダウンロードする」ボタンを押してください。
またサービス管理ではこのモデルを使って予測できるAPIを発行できるので、コロナ感染者数を予測するAPIをサイトやサービスに組み込むことなどができます。

TrendFlowで驚くほど簡単に時系列解析の予測が出来きました!
TrendFlowに周期を追加しましたが、この周期は例えば1.3日などの中途半端な周期性でも問題ありません。ここはビジネスシーンではビジネス知識が活きてくるところです。そのデータの特性を知っており正しい周期を追加すればより正確な予測ができるようになるでしょう。


今回のコロナのような大きな事件の後では人の経験や勘はうまく適応できないことも多いと思います。そこでデータに対するビジネス知識とAIを使ってより正確な予測をしてみませんか?

以上です。ありがとうございました!

追記:(2020年7月30日)

グラフの形によっては、日周期にしてもうまくフィットしない場合があります。その場合は期間を絞るなどすればフィットしやすくなります。

例えば以下の例ではどちらの周期性モードもフィットしていないです。。

スクリーンショット 2020-07-31 22.39.50

5月からに期間を絞ることでフィットします。(乗法的がよくフィットしています。)

スクリーンショット 2020-07-31 22.43.33


【会社概要】
株式会社MatrixFlowは、「テクノロジーで世界をつくる」をミッションとするAIベンチャーです。大人から子供、ビジネスマンから学生、デザイナーからサイエンティストに至るまで、様々な人々がAIを活用し、素晴らしい着想を得たり、あっと言わせるクールな活動をすることを支援したいと考えています。その実現に向けた第一歩として、プログラミング不要のクラウド型AI構築プラットフォーム「MatrixFlow」を開発しております。また、様々な会社でのAI活用を推進するためにAIの受託開発・コンサルティング事業も行っております。
【会社情報】
設立 :2018年10月
本社 :東京都三鷹市
URL:https://www.matrixflow.net/
事業内容:プログラミング不要のAI構築プラットフォーム「MatrixFlow」の運営、および、AIの受託開発・コンサルティング
【お問い合わせ先】
E-mail:support@matrixflow.jp
窓口:MatrixFlowカスタマーサポート




この記事が気に入ったらサポートをしてみませんか?