コーセラ機械学習で学んだ線形回帰でコロナ感染者数を予測してみる(4/18時点)※4/24UPDATE有
私は文系事務職のアラフォーですが、コーセラの機械学習のオンライン講座を
3か月でできるとガイドされているものを倍の6か月かかって修了しました。
せっかく学んだので、コロナ感染者数の予測をしたらどうなるかを
やってみたかったのでトライします。
今回は学んだ手法を試すだけなので、精度/結果は求めないことにします。
そもそも初心者の私の予測がそれっぽくなるわけないですし笑
前提
予測するのは東京都の感染者数にします。
データ元は東洋経済新報社のこちら↓のサイトです。
対象期間は3月18日から4月18日にします。
技術が拙いので省略する要素がこちらです。
①緊急事態宣言などで特殊な変数は入れない。
4/7の緊急事態宣言の前と後では、あるいは都知事の自粛要請の前と後では
傾向が違うはずですが技術が拙いので考えないことにします。
予測方法は線形回帰(Linear Regression)で行います。
コーセラ機械学習では手持ちのすべてのDataで予測するのではなく、
手持ちのDataを予測用と検証用に分けて予測用Dataでできた予測を
検証用Dataで精度を確認するように、と教えられました。
どういうことかというと、↓のグラフは縦軸に感染者数、
横軸に3月18日から4月18日を横軸にとって
3月18日をDay1、3月19日Day2・・・としています。
プログラミングを使うとこの赤点すべてを通る予測線を作成できますが、
『当たりすぎ』ていてもDay40や50でも当たるとは言えないので
そのリスクを減らすために妥当性を手持ちのDataで
行っておきなさいということでした。
ということで、
3月18日-4月8日(約20日)をTraining Setとして
4月9日-4月18日(約10日)をTest Setとしてシュミレーションしてみたいと思います。
直線予測
まずは直線の予測です。
3月18日-4月8日(約20日)をTraining Setで一番当たっている良い直線は↓になります。
ではこれを4月9日-4月18日(約10日)の期間に延長してみます↓
赤点が予測線が大きく上回って推移しています。
見た目にも当たったとは言い難い予測線です。
コーセラではこれはTraining setを当てすぎに行っているから、
Test setが当たらない状態ということでした。
あまり当たってるように見えませんが直線ではこれがBESTということになります。
曲線予測
まず、3月18日-4月8日(約20日)の期間です。
Training Setで一番当たっている曲線は↓になります。
さっきの直線より当たっているように見えます!
ではこれを4月9日-4月18日(約10日)の期間に延長してみます↓
おっ、さっきより見た目がいいです!
この予測の決定的な欠陥は予測用のDataが4月8日までなことだと思います。
というのは4月7日は非常事態宣言が出たので、
4月8日の前と後では傾向が変わるべきだと思いますので、
それが考慮されていないのが予測としては欠陥かなと思います。
一方で非常事態宣言が出なかったら、どうだったかという目線では
見れるかもしれませんが、その場合は予測線は4月8日以降の赤点の
上に行くべきだと思いますので、ビミョーな思いです。
5月6日までまったら、データを
①3月18日-4月7日、②4月8日-22日、③4月23日-5月6日
①②をTraining Setで③をTest Setで検証してみたいと思いました。
とにかく、学んだことをここまでグラフで見えるように表現できて楽しかったです。
また日にちがたったらUPDATEしてみたいと思います。
<4/26更新分>
**************************************************************************
曲線予測で予測線を変えず4/24までの実績をUPDATEしました。
予測自体が不正確だと思っていますが、
自粛を頑張っている身としては非常事態宣言で青の予測線になるところが
赤点ですんでいると思いたいです。