以前の時系列データに基づいてトラフィックを予測するにはどうすればよいですか?


18

小売店があり、毎分何人の人が私の店に入るかを測定し、そのデータにタイムスタンプを付ける方法がある場合、どうすれば将来の足のトラフィックを予測できますか?

機械学習アルゴリズムを検討しましたが、どのアルゴリズムを使用すべきかわかりません。私のテストデータでは、KNNのように(賢明なパラメーターと距離関数であると思う)他の試みと比較して、年ごとの傾向がより正確です。

これは、時系列データを扱う金融モデリングに似ているようです。何か案は?


このホワイトペーパーは役に立つかもしれません。knime.org/files/knime_bigdata_energy_timeseries_whitepaper.pdf季節性を含む時系列のモデリングに関するものです。-ロザリア
ロザリア

回答:


17

KNNなどのモデルの問題は、季節性(傾向の時間依存変動)を考慮していないことです。これらを考慮するには、時系列分析を使用する必要があります。

自分のようなカウントデータの場合、一般化線形自己回帰移動平均モデル(GLARMA)を使用できます。幸いなことに、それらを実装するRパッケージがあります(glarma)。

ビネットは、ツールの背後にある理論のための優れたリソースです。


2
予測と時系列分析のための別の非常に有用なパッケージは、Rob J. Hyndman教授による予測です。
Def_Os 14年

これが既に他の言語で実装されているかどうか知っていますか?私は正確にはRのプロではありません。少なくとも論文は間違いなく読みます。
user1132959 14年

私は1つに精通していません。pythonを使用する場合は、rpy2パッケージを使用してglarma関数を呼び出し、残りのほとんどのプログラミングをPythonで実行できます。他のほとんどの言語にもこのようなコネクタがあります。
クリストファールーデン14年

10

上記のクリストファーの答えは完全に理にかなっていると思います。別のアプローチとして(またはおそらく彼が与えたアドバイスに加えて)、データを少し視覚化して、何が起こっているのかを大まかに理解することから始めるかもしれません。

まだこれを行っていない場合は、機能として日付の月と曜日を追加してみてください-KNNに固執するようになった場合、これはモデルが季節性を把握するのに役立ちます。

これを実行する別の方法として、本当に基本的なモデル(OLSなど)から開始することを検討することもできます。これらは、妥当な予測を生成するのに大いに役立ちます。

最後に、あなたのデータについて知れば知るほど、私たちが提案を生成するのを助けるのがより簡単になります-あなたはどの時間枠を観察していますか?現在使用している機能は何ですか?等

お役に立てれば -


はい、可視化はあらゆる分析の重要な最初のステップです。
クリストファールーデン14年

機能として月、日、週、年を追加しました。私は「Recentness」値を直線的に減少させようとしました。OLSを試したことはないと思います。私は数週間から数年の範囲の時間枠を観察しています。それを視覚化する限り、私はそれをやろうとしました。問題は、さまざまな顧客について、人間の介入なしでソフトウェアが自動的に予測できるようにすることです。
user1132959 14年

3

ニューラルネットワークを試すことができます。ここここ、NNを時系列に適用する方法に関する2つの優れた説明を見つけることができます。

以下がベストプラクティスであることに注意してください。

  • 入力データを非季節化/トレンド除去します(NNが季節性を学習しないように)。
  • 入力データを再スケール/正規化します。

あなたが探していることは、回帰問題であるため、活性化の機能があるべきlinearではなくsigmoid、またはtanh、あなたが最小化することを目指してsum-of-squares error(の最大化に反対としてnegative log-likelihood分類問題で)。


私はニューラルネットワークをオプションとして検討していましたが、どのような種類のパラメーターを使用するのかわかりませんでした。それらを試してみる必要があります。
user1132959 14年

シグモイドとTanhは問題ありません。より複雑な相互作用を学習するには非線形性が必要であり、重みはネットワークが必要と考える任意の範囲にこれらをマッピングします
Jan van der Vegt

3

@Christopher Laudenが前述したように、時系列分析はこの種のものに最も適しています。しかし、より伝統的な「機械学習アプローチ」をしたい場合、過去に私がやったことは、データを機能として重複する時間枠にブロックし、それを使用して次の日(または週)を予測することです) トラフィック。

機能マトリックスは次のようになります。

t1 | t2 | ... | tN
t2 | t3 | ... | tN+1
t3 | t4 | ... | tN+2
...
tW | tW+1 | ... |tN+W

tI日の交通はどこですかI。予測する機能は、最後の列の翌日のトラフィックです。基本的に、トラフィックのウィンドウを使用して、翌日のトラフィックを予測します。

これには、あらゆる種類のMLモデルが有効です。

編集

「この機能マトリックスの使用方法について詳しく説明してください」という質問に対する回答:

機能マトリックスには、ある期間にわたる過去のトラフィック(たとえば、1週間にわたる1時間ごとのトラフィック)を示す値があり、これを使用して、将来の特定の期間のトラフィックを予測します。履歴データを取得して、履歴トラフィックの機能マトリックスを構築し、将来のある期間(たとえば、機能のウィンドウの2日後)のトラフィックでラベル付けします。ある種の回帰機械学習モデルを使用して、過去のトラフィックデータを取得し、過去のデータセットでトラフィックがどのように移動したかを予測できるモデルを作成してみます。将来のトラフィックは過去のトラフィックに似ていると推定されます。


この機能マトリックスの使用方法について詳しく説明してください。数日間にわたるトラフィックの変化に基づいて学習しようとしていますか?
user1132959 14年

応答を編集して、わかりやすくすることを期待しています。
ガラミン

2

まあ、まず第一に、私は機械学習のようなものさえも、深い知識がなければ使用しません。私がこの時系列を持っていたら私がするだろう単純なことは次のとおりです。

  1. sqlクエリを作成して、最も混雑している、平均的、および低い交通量がある時間を把握します。
  2. その後、時系列全体を視覚化してみてください。基本的なパターンマッチングアルゴリズムを使用してパターンを取得できます。

この2つのことは、データセットが何を伝えているかを理解するのに役立ちます。次に、それを手に入れると、おそらく機械学習アルゴリズムを使用するのに適した状態になります。

また、私は現在、時系列で何かを構築する作業を行っています。時系列分析を使用すると、機械学習よりもはるかに役立ちます。たとえば、毎日のデータを使用してパターンを表示するパターン認識アルゴリズムや、最大3〜6か月のデータを使用してパターンをキャッチするパターン認識アルゴリズムがあります。


0

ニューラルネットワークまたは同等のものを使用しないようにアドバイスします。これは、ストアでの経験に基づいて非常に優れた事前知識を持っていると思われるためです(つまり、日常的/季節的な傾向とある程度の滑らかさがあります)。比較的少量のデータを想像します。IMOのより良いオプションは、Gaussian ProcessやSVMなどのカーネルメソッドを使用することです。


0

このスレッドを生き返らせてください。これは、同様の質問でここに着く他の人に役立つかもしれません。

Facebookは最近、Prophet https://facebookincubator.github.io/prophet/と呼ばれる内部予測ツールの1つをリリースし、オープンソース化しました

RとPythonの両方のパッケージとして提供されており、Machine Learningの経験がほとんどない人にとって興味深いソリューションであることが証明されています。ただし、追加のMLの知識により、生成されたモデルを調整および最適化できます。

最初のステップとしてProphetを試してみることをお勧めします。このソリューションでの迅速な勝利は、モデルの構築とテストの容易さと速度です。文字通り数分で降下予測を取得できます。時系列で非常によく動作し、手元のデータの季節性を「自然に」キャッチします。

内部では、一般的な加法モデル(GAM)に似ています-専用のペーパーの詳細:https : //facebookincubator.github.io/prophet/static/prophet_paper_20170113.pdf

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.