📈

Azure ML を使ってドクターイエローの運行予測をしてみる

2022/01/01に公開

はじめに

ずっと放置していたドクターイエロー運行予測ですが、データが溜まってきたのでいよいよ Azure ML で予測をしてみることになりました。

https://preddy.karamem0.dev

全体像はこんな感じです。

実行手順

時系列データの取得

元となる時系列データは Azure SQL Database から取得します。データの中身としては「ドクターイエロー」とつぶやかれた件数が日付別に格納されています。

予測データの作成

予測モデルは ETS + STL を使います。他には ARIMA などがあるのですが、ドクターイエローは定期的に運行する (10 日に 1 回程度と言われている) ので、予測結果はこちらのほうがよさそうです。ぶっちゃけこの辺りは全く詳しくないので適当です。R 言語でスクリプトを書く必要がありますが、サンプルがあるので参考にしながら書いていきます。

https://gallery.azure.ai

実際に書いたスクリプトはこんな感じです。とりあえず月別かなあと思ったので frequency30 にしています。

library(forecast)

dataset <- maml.mapInputPort(1)
colnames(dataset) <- c("date", "count")

series <- ts(dataset$count, frequency = 30)
fit <- stl(series, s.window = "periodic")
model <- forecast(fit, h = 30, method = "ets")

tommorow <- Sys.Date() + 1
dates <- seq(tommorow, len = 30, by = "days")
dates <- format(dates, '%Y/%m/%d')

dataset.forecast <- data.frame(date = dates, mean = model$mean)

plot(dataset.forecast)

maml.mapOutputPort("dataset.forecast")

実行結果

実際に実行してみるとこんな結果が取れます。

グラフはなぜか点グラフになってしまいました。pilot 関数に type="l" 指定してもうまくいかないのはなぜなんでしょう。

Discussion