あなたの場合、データは急速に変化しており、新しいデータを即座に観察できます。Holt-winter指数平滑法を使用して、迅速な予測を実装できます。
方程式の更新:

m_t
はあなたが持っているデータです。たとえば、各時間の人数ですt
。v_t
は一次導関数、つまりのトレンドですm
。alpha
とbeta
は2つの減衰パラメータです。上にある変数tilde
は予測値を示します。ウィキペディアのページでアルゴリズムの詳細を確認してください。
を使用python
しているので、データを支援するためのサンプルコードをいくつか紹介します。ところで、私は以下のようにいくつかの合成データを使用します:
data_t = range(15)
data_y = [5,6,15,20,21,22,26,42,45,60,55,58,55,50,49]
上記data_t
は、時刻0から始まる一連の連続データポイントです。data_y
は、各プレゼンテーションで観察された一連の人数です。
データは以下のようになります(私はあなたのデータに近づけようとしました)。

アルゴリズムのコードは単純です。
def holt_alg(h, y_last, y_pred, T_pred, alpha, beta):
pred_y_new = alpha * y_last + (1-alpha) * (y_pred + T_pred * h)
pred_T_new = beta * (pred_y_new - y_pred)/h + (1-beta)*T_pred
return (pred_y_new, pred_T_new)
def smoothing(t, y, alpha, beta):
# initialization using the first two observations
pred_y = y[1]
pred_T = (y[1] - y[0])/(t[1]-t[0])
y_hat = [y[0], y[1]]
# next unit time point
t.append(t[-1]+1)
for i in range(2, len(t)):
h = t[i] - t[i-1]
pred_y, pred_T = holt_alg(h, y[i-1], pred_y, pred_T, alpha, beta)
y_hat.append(pred_y)
return y_hat
では、予測子を呼び出して、観測値に対して予測結果をプロットしましょう。
import matplotlib.pyplot as plt
plt.plot(data_t, data_y, 'x-')
plt.hold(True)
pred_y = smoothing(data_t, data_y, alpha=.8, beta=.5)
plt.plot(data_t[:len(pred_y)], pred_y, 'rx-')
plt.show()
赤は各時点での予測結果を示しています。私は0.8に設定alpha
したので、最新の観測は次の予測に大きな影響を与えます。履歴データにもっと重みを付けたい場合は、パラメーターalpha
とを試してみてくださいbeta
。また、赤線の右端のデータポイントt=15
は最後の予測であり、まだ観測されていないことに注意してください。
ところで、これは完全な予測にはほど遠いです。それはあなたがすぐに始めることができるものにすぎません。このアプローチの短所の1つは、観測値を取得できる必要があることです。そうしないと、予測がますますずれてしまいます(おそらく、これはすべてのリアルタイム予測に当てはまります)。それが役に立てば幸い。
