Source: Preferred Networks Blog本記事は、2019年夏のインターンシップに参加された太田真人さんによる寄稿です。   こんにちは、2019年夏のインターン生だった関西学院大学大学院M1の太田です。大学では、ベイズモデリングの応用で研究しています。インターンでおこなった業務について紹介します。   概要   私は、時系列予測に取り組みました。実問題では、データを細かい時間スケールで長期間保存できず、過去のデータから秒を分スケールに集約して保存することがあります。 他にも、数年前までは、1ヶ月や1日単位で来場者数(売り上げ)をカウントしていましたが、最近は、高い時間分解能(日にち、時間単位)で予測したい需要が高まり、細かくデータを取り始めることもあると考えます。 その場合、データを集めたばかりの頃は、時系列長が短く予測が難しいことがあります。そこで、集約されていない時系列データは直近の短い期間しかないが、集約された時系列データは長期間あるという問題設定を考え、本研究に取り組みました。毎分計測されるデータを例に出すと、集約されていない時系列データとは1分単位のデータ1つ1つを、集約された時系列データとは1時間ごとの合計等を表します。 ここで、本研究で扱う時系列データを図1に示します。青色が観測値で白色は未観測値になります。タスクは、これらの時系列データが与えられたもとで、集約されていない時系列の予測になります。   提案アプローチにより、直近の短期間の時系列データから、高い精度で予測ができるような手法を検討しました。つまり、集約されていないデータが貯まるまで数年や数十ヶ月待つ必要が無く、なるべく早い段階で予測が行えるようになります。   アプローチ 素朴なアプローチとしては、短期間の時系列データだけで予測モデルを作ることですが、トレンドが捉えられず、予測が難しいです。 そこで、時間方向に集約された時系列データを分解(Disaggregation)することが考えられます。その素朴なアプローチは、直近の集約されていない時系列データから分解の割合の平均を計算して、過去の集約された時系列データに適応することです。 これは直近の集約されていない時系列データが少ない場合、データによっては分解が不適切になることがあります。例えば、数週間分のデータから1週間で金曜日が一番売り上げが良いとわかると、このアプローチだと過去の集約されたデータを分解するときに、金曜に多く売り上げが割り振られてしまいます。本当は、夏季休暇と通常時で売り上げの量が変わるなど、違う場合は多くあると思います。1週間や2週間分のデータで過去の全てに適応するのは不適切です。 提案アプローチはこれらを解決する方法を作りました。まず、提案アプローチを図2を用いて簡単に説明すると、上段の集約された時系列データを分解しつつ、下段の分解された赤色の推定値と青色の集約されていない時系列データを合わせて、時系列モデルを学習し、未来の集約されていない時系列データを予測する確率モデルです。 詳しく説明していくと、集約された時系列データは、図2の上段のように\({C}_{\tilde t}\ ({\tilde t}=1,\dots,{\tilde T})\)と集約されていない時系列データは下段のように \({x}_{t}\ (t=1,…,T)\)と表します。このとき、集約されていない時系列データは\(x_{t_H}\)まで未観測のデータになります。この集約された時系列データとされていない時系列データの関係は,時間方向の合計\(C_{\tilde t}= \frac{1}{K}\sum_{i =1}^K x_{i+({\tilde t}-1)K}\)によって求まります。ここで、集約された方の時系列長は\({\tilde T}=T/K\)と表せ、\(K\)は自分で決定するパラメータになります。例えば、1日のデータを24時間に分解したければ、\(K=24\)になります。 集約された時系列データの分解比率は, \({\rho} = {\rho}_1,…,{\rho}_K\)とあらわし、この分解比率は時間に依存しない確率変数として扱い、ディリクレ分布 \({\mathrm Dir}({\alpha})\)に従うと仮定します。ディリクレ分布を用いることで、分解した後のデータの総和がまた集約されたデータに戻ることを保証します。 尤度関数は \(\prod_{t}{\mathcal N}({x}_t|f_{\theta}( {x}_{<t}),{\sigma}^2)\)とします。 \(f_{\theta}( {x}_{<t})\) は,時系列モデルであり,本研究では,AR(Auto Regressive)モデルとFacebookが開発したProphet[1]を使用しました。\({\theta}\)は時系列モデルのパラメータになります。 同時分布は、\(p(x_{\le T},{\mathbf \rho}|C_{\le \tilde{T}}) = p(x_{\le T}|{\mathbf \rho}, C_{\le \tilde {T}}) p_{\alpha}({\mathbf \rho})\)となります。ここで、\(p_{\alpha}({\mathbf \rho})\)のディリクレ分布のパラメータは、完全に一様分布にするのではなく、直近の集約されていない時系列データから求まる分解比率をほどよく生成するような値にします。(一様分布にすると、分解比率の事前の信念として、全て均等に分解されることを表します。) では、そのようなパラメータ値を求めるために、次の同時分布\(p(x_{t_H:T},{\mathbf \rho}|C_{{\tilde t_{H}}:{\tilde T}})=p(x_{t_H:T},{\mathbf \rho}|C_{{\tilde t_{H}}:{\tilde T}})p({\mathbf \rho})\)について説明します。この分布は、直近の集約されていない時系列データと分解比率の同時分布です。尤度関数にあたる\(p(x_{t_H:T},{\mathbf \rho}|C_{{\tilde t_{H}}:{\tilde T}})\)は、\(\prod_{{\tilde t}={\tilde t}_H}^{\tilde T}{\mathcal N}({\mathbf x}_{\tilde t}|C_{\tilde t}{\mathbf \rho},\sigma^2)\)と表します。ここで、\({\mathbf x}_{\tilde t}=(x_t,…,x_{t+K})^{\rm T}\)となります。また、\({\tilde t_{H}}\)は、集約されていない時系列データが観測され始めた時の集約された時系列データでの時刻です。 事前分布\(p({\mathbf \rho})\)は、ディリクレ分布です。ただし、ここでは、\({\mathbf \alpha}=1\)として、一様分布にしました。この同時分布から事後分布\(p({\mathbf \rho}|x_{t_H:T},C_{{\tilde t_{H}}:{\tilde T}})\)を、変分推論により求めます。近似事後分布には、ディリクレ分布を仮定します。この近似事後分布は、先ほど事前分布に求めていた「直近の集約されていない時系列データから求まる分解比率をほどよく生成する」ことを実現しています。したがって、近似事後分布の変分パラメータ\({\tilde \alpha}\)を先ほどの事前分布\(p_{\alpha}({\mathbf \rho})\)のパラメータとして用います。つまり、事後分布を事前分布として用いることになります。 また、グラフィカルモデルは図のようになります。 この後は、時系列モデルのパラメータの学習と近似推論について説明していきます。 モデルパラメータの学習は、周辺尤度の最大化をおこないます。これは、2つのELBO(Evidence Lower BOund)の最大化により達成されます。1つ目は、   $$\log p({\bf x}_{t_H:T}|C_{{\tilde t_{H}}:{\tilde T}}) \ge \mathbb{E}_{q_{\tilde \alpha}({ \rho})}[ \sum_{t=t_H}^T \log p_{\theta}( {\bf x}_t […]
Read full article »
Followers on Owler
12
President & CEO
Toru Nishikawa