何回もシリーズを同時に処理する方法は?


14

25期間のいくつかの製品(1200製品)の需要を含むデータセットがあり、次の期間の各製品の需要を予測する必要があります。最初は、ARIMAを使用して各製品のモデルをトレーニングしたかったのですが、製品の数と(p、d、q)パラメーターの調整のため、非常に時間がかかり、実用的ではありません。以前の要求が独立変数である回帰(自己回帰)を使用することをお勧めしますか?

1200のすべての製品の需要予測のために単一のモデルをトレーニングする方法があるかどうかを知ることができますか?Pythonを使用しているので、Pythonのライブラリを提案していただければ幸いです。


3
私が知っている高次元の時系列分析のための最も高度なパッケージbigtimeはRにあります。おそらくそれを使用するためにPythonからRを呼び出すことができます。
リチャードハーディ

回答:


11

一般に、複数の時系列がある場合、何らかの種類のベクトルベースのモデルを使用して、それらをすべて同時にモデリングします。この目的のためのARIMAモデルの自然な拡張は、VARIMA(Vector ARIMA)モデルです。1200時系列があるという事実は、時系列変数のすべてのペアの自由なパラメーターを扱うことができないため、モデル内の相互相関項にいくつかの重いパラメーターの制限を指定する必要があることを意味します。

低次の単純なベクトルベースのモデル(VAR、VMA、VARMAなど)、および相互相関の単純なパラメーター制限から始めることをお勧めします。少なくとも1度の遅延に対する相互相関を組み込んだ合理的なモデルを見つけることができるかどうかを確認し、そこから進んでください。この演習では、ベクトルベースの時系列モデルについて調べる必要があります。MTSパッケージbigtimepacakageではR、それはまた価値がこれらのパッケージをよく理解されるだろうので、多変量時系列に対処するためのいくつかの機能があります。


私が知っている高次元時系列分析のための最も高度なパッケージbigtimeはRにありMTSます。そこにあるいくつかの多変量の例では、計算の負担を抑える前に3次元のシリーズしか処理できません。
リチャードハーディ

@Richard Hardy:ありがとう---回答を編集してこれを含めました。
モニカの復活

1
これを実行する良い方法は、ベイジアンVAR、またはより具体的には大規模なベイジアンVARモデルを検討することです。
グレアムウォルシュ

6

ベンが述べたように、複数の時系列のテキストブックメソッドはVARおよびVARIMAモデルです。ただし、実際には、需要予測のコンテキストで頻繁に使用されることはありません。

私のチームが現在使用しているものを含め、より一般的なのは階層的な予測ですこちらも参照してください))。階層的予測は、類似または時系列のグループがある場合は常に使用されます:類似または関連製品のグループの販売履歴、地理的地域ごとにグループ化された都市の観光データなど...

アイデアは、さまざまな製品の階層リストを作成し、ベースレベル(つまり、個々の時系列)と製品階層で定義された集約レベル(添付図を参照)の両方で予測を行うことです。次に、ビジネス目標と目的の予測ターゲットに応じて、さまざまなレベルで予測を調整します(トップダウン、ボタンアップ、最適調整などを使用)。この場合、1つの大きな多変量モデルではなく、階層内の異なるノードにある複数のモデルを適合させ、選択した調整方法を使用して調整します。

ここに画像の説明を入力してください

このアプローチの利点は、類似の時系列をグループ化することにより、それらの間の相関および類似性を利用して、単一の時系列で見つけるのが困難なパターン(季節変動など)を見つけることができることです。手動で調整することは不可能な多数の予測を生成するため、時系列予測手順を自動化する必要がありますが、それはそれほど難しくありません- 詳細はこちらを参照してください

AmazonとUberでは、より高度ではあるが同様の精神のアプローチを使用しており、1つの大規模なRNN / LSTMニューラルネットワークがすべての時系列で一度にトレーニングされます。また、関連する時系列間の類似性と相関関係からパターンを学習しようとするため、階層的予測と精神的に似ています。階層的予測とは異なります。予測を行う前にこの関係を事前に決めて固定するのではなく、時系列間の関係を学習しようとするためです。この場合、1つのモデルのみを調整するため、自動予測生成を処理する必要はなくなりましたが、モデルは非常に複雑なモデルであるため、調整手順はもはや単純なAIC / BIC最小化タスクではなく、より高度なハイパーパラメーター調整手順を確認するには、

この応答(およびコメント)を参照してくださいを参照してください。

Pythonパッケージの場合、PyAFは利用可能ですが、あまり人気がありません。ほとんどの人はRでHTSパッケージを使用しますが、これにはさらに多くのコミュニティサポートがあります。LSTMベースのアプローチには、料金が必要なサービスの一部であるAmazonのDeepARおよびMQRNNモデルがあります。Kerasを使用した需要予測のためにLSTMを実装している人もいます。それらを調べることができます。


1
余談として 。AUTOBOXは、SARMAXモデルを使用してCHILDRENの予測を支援するために、GROUP合計を可能な運転シリーズとして使用している間に参照した種類の階層モデリングを実装します。子どもの予測の不確実性は、両方の将来の脈拍の可能性を取り入れながら、親の不確実性の累積関数でもあります。他の誰かがこのアプローチを採用するのを見て喜んでいます。
IrishStat

Amazonは最近、MxNetフレームワークを活用するGluonTSフレームワークの下でDeepARアルゴリズムをオープンソース化しましたが、この時点ではドキュメントが少し欠けていると思います。 aws.amazon.com/blogs/opensource/...
hardikudeshi

5

提案されている質量適合パッケージの問題は、パルス、レベル/ステップシフト、季節的パルス、時間傾向などの潜在的な決定論的構造を一様に処理できないか、https://に従ってユーザーが提案する因果を効率的に処理できないことです。 autobox.com/pdfs/SARMAX.pdf

さらに、計算時間は深刻な問題になる可能性があります。AUTOBOX(私が開発を支援した)には、モデルをアーカイブする非常に高度なモデル構築フェーズと、以前に開発されたモデルを再利用する非常に迅速な予測オプションがあります。モデルが開発および保存された後に観測されたデータ。これは、PriceとWeatherを考慮に入れた50以上のアイテムのAnnheuser-Buschの600,000店舗予測プロジェクトに実装されました。

モデルはローリング方式で更新でき、必要に応じて以前のモデルを置き換えます。

パラメトリック制限の必要はありません。また、ARIMAのすべてのシリーズの過去のみに依存しながら、VARおよびVARIMAのように原因変数の同時効果を省略します。

モデルは個々のシリーズに合わせて調整/最適化できるため、1セットのパラメーターを持つ1つのモデルだけでなくてもかまいません。

残念ながらPythonソリューションはまだありませんが、永遠に続くことを願っています。


1
面白そう。ちょっとした言:VARのような単純なものであっても、各シリーズには独自の方程式があります。そのため、1つのパラメーターセットを持つ1つのモデルのみが必要です。同じシリーズに対して複数のモデルを提案しない限り、予測の組み合わせの観点からは良いアイデアかもしれません。
リチャードハーディ

「?すべての1200の製品の需要予測のための単一のモデルを訓練するために」私はすべて1200年の時系列」から推定固定/グローバル・パラメータの1セットで1種類の方程式として文字通りそれを取った多分私はそれをオーバー読み:目的。
IrishStat

またはおそらく私はそれを間違えた。
リチャードハーディ

3

1200の製品が問題の次元の主な要因です。これで、25期間のみになりました。これはごくわずかなデータであり、あらゆる種類の包括的な相関分析を行うには不十分です。言い換えると、次元を減らすことなく、すべての製品の同時予測を行うためのデータがありません。これにより、すべてのVARMAおよびその他の優れた理論モデルがほとんどなくなります。これらのモデルの係数を扱うことは不可能であり、推定するにはそれらが多すぎます。

単純な相関分析を検討してください。共分散/相関行列には(1200x1200 + 1200)/ 2個のセルが必要です。データポイントは25個しかありません。行列は、ランクが非常に低くなります。何をする?大きく分けて、2つの単純なアプローチがあります。別々の予測と因子モデルです。

最初のアプローチは明らかです。各製品を個別に実行します。バリエーションは、「メンズクロージング」などのセクターなど、いくつかの機能によってグループ化することです。

d=jFjβj+eFj係数です。要因は何ですか?これらは、GDP成長率などの外因性の要因である可能性があります。または、PCA分析で取得したものなど、外因性の要因である可能性があります。

外因性の要因である場合、これらの要因の系列を個別に回帰してベータを取得する必要があります。PCAの場合、堅牢なPCAを実行して、ベータ版である重みを持つ最初のいくつかの要因を取得できます。

F^j


25期間で非常に短い時系列が得られるという点はわかりますが、それが毎月の値だとしたらどうでしょうか。次に、OPには2年間の月次データがあります。これは、ある程度の季節性をキャプチャするのに十分ですか、少なくとも単純な指数平滑法を使用するのに十分ですか?
スカンダーH.

@ SkanderH。、25ポイントは1つのシリーズ(つまり、各シリーズを単独で)または集計を実行するのに十分です。私のポイントは、これをシステムとして実行するだけでは不十分だということです。
アクサカル

または、PCA分析で取得したものなど、外因性の要因である可能性があります。おそらく内生的
リチャードハーディ

1

クラウドベースのソリューションに興味があるかどうかはわかりませんが、Amazonは、「DeepAR」と呼ばれるアルゴリズムを、AWS SageMakerを介して利用できるようにします

このアルゴリズムは、静的および動的な機能を含む予測を作成するために、複数の入力時系列から学習できることを特に目的としています。上記のリンクされたページからのこの抜粋に見られるように:

DeepARアルゴリズムのトレーニング入力は、同じプロセスまたは同様のプロセスによって生成された1つ以上のターゲット時系列です。この入力データセットに基づいて、アルゴリズムはこのプロセスの近似を学習するモデルをトレーニングし、それを使用してターゲット時系列がどのように進化するかを予測します。各ターゲット時系列は、オプションで、catフィールドが提供する静的(時間に依存しない)カテゴリ機能のベクトルと、dynamic_featフィールドが提供する動的(時間依存)の時系列のベクトルに関連付けることができます。

残念ながら、私が知る限り、彼らはこのアルゴリズムをオフライン/自己ホストの使用に利用できるようにしません。

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