BQMLを使用した多変量時系列予測

BQMLを使用した時系列予測

 

去年の冬、ウズベキスタンの首都タシケントで開催されたGDG DevFest Tashkent 2022で、「BQMLによるより予測可能な時系列モデル」というテーマでプレゼンテーションを行いました。

プレゼンテーションで使用した資料とコードをDevFest後に共有する予定でしたが、時間が経ち、BQMLには一部内容が重複する新機能がリリースされました。

そのため、代わりに新機能と有効な内容の一部について簡単に言及します。

 

時系列モデルとBQML

 

「時系列データ」は、多くの組織でさまざまな目的に使用されており、「予測分析」は時間における「未来」に関するものであることを理解しておくことが重要です。時系列の予測分析は、短期から長期までさまざまな目的で使用されており、不正確さやリスクはあるものの、着実に改善されています。

「予測」というものが非常に有用であるため、時系列データを持っている場合は時系列予測モデルを適用しようとするかもしれません。しかし、時系列予測モデルは通常、計算量が多く、データが多い場合はさらに計算量が多くなります。そのため、処理や分析のために煩雑で難しい作業が必要です。

データ管理にGoogle BigQueryを使用している場合、簡単で簡便な方法でデータに機械学習アルゴリズムを適用するために、BQML(BigQuery ML)を使用することができます。多くの人々が大量のデータを処理するためにBigQueryを使用しており、その多くは時系列データです。そして、BQMLは時系列モデルもサポートしています。

BQMLで現在サポートされている時系列モデルの基礎は、自己回帰和分移動平均(ARIMA)モデルです。ARIMAモデルは既存の時系列データのみを使用して予測を行い、短期予測性能が良いことで知られており、ARとMAを組み合わせるため、幅広い時系列モデルをカバーすることができる人気のあるモデルです。

ただし、このモデルは全体的に計算量が多く、正規性を持つ時系列データのみを利用するため、傾向や季節性のある場合には使用するのが難しいです。そのため、BQMLのARIMA_PLUSでは、いくつかの追加のオプションとして時系列分解、季節要因、スパイクとディップ、係数の変化などをモデルに追加することができます。また、これらを個別に進めてモデルを手動で調整することもできます。また、日付に関連する情報を手動で追加する必要がないプラットフォームを使用する利点の一つとして、自動的に休日オプションを組み込むことで周期性を調整することもできます。

   

詳細はこちらのページを参照してください。

ただし、実際のアプリケーションにおいては、時系列予測はこれほど単純ではありません。もちろん、ARIMA_PLUSでは複数のサイクルを特定し、複数の時系列に介入を追加することができますが、時系列データには多くの外部要因が関連しており、ほとんどの場合、単独で起こるイベントはわずかです。時系列データにおける定常性を見つけることは難しい場合があります。

元のプレゼンテーションでは、これらの現実世界の時系列データを取り扱うための方法について、時系列を分解し、分解されたデータを整理し、Pythonにインポートし、他の変数と組み合わせて多変量時系列関数を作成し、因果関係を推定して予測モデルに組み込み、イベントの変化に伴う効果の程度を推定する方法について説明しました。

 

新機能: ARIMA_PLUS_XREG

 

そして、ここ数か月間で、外部変数(ARIMA_PLUS_XREG、XREG)を使用して多変量時系列関数を作成するための新機能がBQMLに追加されました

詳細はこちらのページを参照してください(プレビュー版として2023年7月現在ですが、おそらく今年後半に利用可能になると思われます)。

公式のチュートリアルを適用して、伝統的な単変量時系列モデルと比較してみることにしました。その動作を確認してみましょう。

手順はチュートリアルと同じですので、重複することはありませんが、以下に私が作成した2つのモデルを紹介します。まず、伝統的なARIMA_PLUSモデルを作成し、次に同じデータを使用して気温と風速を追加したXREGモデルを作成しました。

# ARIMA_PLUS

# ARIMA_PLUS
CREATE OR REPLACE MODEL test_dt_us.seattle_pm25_plus_model
OPTIONS (
 MODEL_TYPE = 'ARIMA_PLUS',
 time_series_timestamp_col = 'date',
 time_series_data_col = 'pm25') AS
SELECT date, pm25
FROM test_dt_us.seattle_air_quality_daily
WHERE date BETWEEN DATE('2012-01-01') AND DATE('2020-12-31')
#ARIMA_PLUS_XREG
CREATE OR REPLACE  MODEL test_dt_us.seattle_pm25_xreg_model
 OPTIONS (
   MODEL_TYPE = 'ARIMA_PLUS_XREG',
   time_series_timestamp_col = 'date',
   time_series_data_col = 'pm25') AS
SELECT  date, pm25, temperature, wind_speed
FROM test_dt_us.seattle_air_quality_daily
WHERE  date BETWEEN DATE('2012-01-01') AND DATE('2020-12-31')

 

これらの複数のデータを使用するモデルは、次のようなものになります

   

2つのモデルはML.Evaluateで比較されます。

SELECT  * 
FROM  ML.EVALUATE
         (  MODEL test_dt_us.seattle_pm25_plus_model, 
         (  SELECT  date,  pm25
           FROM  test_dt_us.seattle_air_quality_daily 
           WHERE  date > DATE('2020-12-31')  ))
SELECT  * 
FROM  ML.EVALUATE
          (  MODEL test_dt_us.seattle_pm25_xreg_model, 
          (  SELECT  date,  pm25,  temperature,  wind_speed 
             FROM  test_dt_us.seattle_air_quality_daily 
             WHERE  date > DATE('2020-12-31')  ),
          STRUCT(  TRUE AS perform_aggregation,  30 AS horizon))

 

結果は以下の通りです。

ARIMA_PLUS

   

ARIMA_PLUS_XREG

   

XREGモデルはMAE、MSE、MAPEなどの基本的なパフォーマンス指標で優れていることがわかります。(もちろん、これは完璧な解決策ではなく、データに依存するものですが、別の有用なツールを手に入れたと言えます。)

多変量時系列分析は、多くの場合必要な選択肢ですが、さまざまな理由で適用が難しいことがあります。しかし、データと分析手法の要因がある場合には、これを利用することができるようになりました。多くの場面で役立つオプションがあることを知ることは良いことです。また、それが役立つことを願っています。     JeongMin Kwon は、10年以上の実務経験を持つフリーランスのシニアデータサイエンティストです。機械学習モデルとデータマイニングを活用しています。  

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

Google AIは、アクティブノイズキャンセリング(ANC)ヘッドフォンのための人工知能搭載の革新的な心臓モニタリングモダリティである音響脈波計(APG)を導入します

コンシューマーエレクトロニクスと健康技術の分野において、活発なノイズキャンセリング(ANC)ウェアラブルに健康モニタリン...

機械学習

「ステーブル拡散」は実際にどのように機能するのでしょうか?直感的な説明

この短い記事では、初心者に対して安定した拡散(Stable Diffusion)が直感的にどのように機能するかを説明していますこれは...

データサイエンス

「VAST DataのプラットフォームがAIイノベーションの障壁を取り除く方法」

データが存在する場所に関係なく、より多くのデータへの高速アクセスは、AIに基づくアプリケーション、ソリューション、およ...

機械学習

「Javaを使用した脳コンピュータインターフェース(BCI)アプリケーションの開発:開発者のためのガイド」

BCIsは脳デバイスの通信を可能にし、Javaはライブラリを使用して開発を支援しています課題には信号の品質と倫理が含まれます

機械学習

PaLM AI | Googleの自家製生成AI

イントロダクション OpenAIによるGPT(Generative Pre-trained Transformers)モデル、特にChatGPTなどのような生成型AIモデ...

機械学習

AIパワードテックカンパニーが、食品小売業者に供給チェーン管理での新たなスタートを支援します

低く垂れ下がっている果物について話しましょう。Afreshは、食品ロスを減らすために供給チェーンを効率化するAIスタートアッ...