RapidMinerとFacebook Prophetによる時系列予測 - Natic | Application Modernization Platform – 日商エレクトロニクス
RapidMinerとFacebook Prophetによる時系列予測

本記事で紹介したいこと:
RapidMinerでFacebook社が開発した時系列データ予測ライブラリProphetを利用する方法を紹介します。RapidMinerは、Python資産を有効活用する仕組みを提供しています。これを使えば、RapidMinerで最新のアルゴリズムを利用することができます。
目次 Table of Contents
1. 時系列データ予測の課題
時系列データは日付と数値のシンプルなデータ構造となっており、その背後に隠れたパターンを把握して予測を行う必要があります。そのため、業務知識(周期性、季節性、不定期なイベントなどの効果)と統計モデル(AR、MA、ARMA、ARIMA、SARIMAなど)の知識が求められます。しかし、残念ながら両方の知識を兼ね備えた人材は、非常に少ないという課題があります。
ARIMAモデル(自己回帰和分移動平均モデル)は、ARMAモデル(自己回帰移動平均モデル)にデータ間の差分dを定義したモデルです。つまり、非定常データの差分を定常データとして時系列データ予測を行います。ARIMAモデルは、ARIMA(p,d,q)と表すことができます。パラメータのpが自己回帰の次数、dが差分の次数、qが移動平均の次数を意味します。
SARIMAモデル(季節自己回帰和分移動平均モデル)は、ARIMAモデルに季節的な周期パターンを加えたモデルです。SARIMAモデルは、SARIMA(p,d,q)(P,D,Q)[s]と表すことができます。SARIMAモデルの(p,d,q)が時系列方向のARIMA、(P,D,Q)が季節差分方向のARIMA、sが周期パターンを意味します。
時系列データ予測モデルの精度を高めるには、業務知識をもとにモデルの各パラメータを適切に調整して定義する必要があります。
2. RapidMiner with Prophet
Prophetは、2017年にFacebook社が公開した時系列データ予測用ライブラリです。このライブラリを使えば、難しい統計モデルの知識が無くても業務上の周期性、季節性、不定期なイベントなどを簡単にモデルに組み込むことができるようになります。
RapidMinerは、Python資産を有効活用できる仕組みを提供しており、Pythonで作成したモデルをRapidMinerの標準モデルと同じように扱うことができます。
これを実現する機能がPython Learnerオペレータです。このオペレータには、予めデータ学習用インターフェースとデータ検証用インターフェースが用意されています。モデルのパラメータをJSON形式で記述してRapidMiner StudioのParametersペインでGUI操作することができます。
Python Learnerオペレータで作成したモデルをExtension化すると、標準オペレータと同じようにOperatorsペインで検索したり、ドラック&ドロップしてProcessペインで利用できるようになります。
3. RapidMinerとProphetによる自転車レンタル数予測
今回の時系列データ予測では、アルゴリズムとしてProphetを利用します。概要は、次のとおりです。
利用するデータ:自転車貸し出しデータセット
UCI Machine Learning Repository:Bike Sharing Dataset
データの期間:2011.01.01~2012.12.31(2年分、日次単位、731件)
データセットの入力変数:日付、祝日、天気、気温、風速、湿度
データセットの目的変数:登録ユーザーの利用数
予測目的: 2011.01.01~2012.10.30を学習データとして予測モデルを作成、 2012.11.01~2012.12.31の2ヶ月間の登録ユーザーの利用数を予測
3つのステップ毎に入力変数を追加していきます。予測モデルの評価指標R2(決定係数)を利用してステップ毎のチューニング効果を検証します。
R2は、データに対する予測モデルの当てはまりの良さ、すなわち、説明変数が目的変数(予測結果)をどれくらい説明しているかを表します。
R2 = 1-(残差変動÷全変動) = 回帰変動÷全変動 で定義され、0~1までの値をとり、1に近い程良い予測モデルとみなされます。
全変動が実際のデータとデータ全体の平均値との差、回帰変動が予測値とデータ全体の平均値との差、残差変動が実際のデータと予測値との差となります。
3-1. ステップ1
入力変数として日付を利用して予測モデルの学習と登録ユーザー利用数の予測を行います。
予測モデルの評価指標R2=0.380、yが正解データ、yhatが予測結果です。
3-2. ステップ2
入力変数として日付と祝日を利用して予測モデルの学習と登録ユーザー利用数の予測を行います。
予測モデルの評価指標R2=0.428、yが正解データ、yhatが予測結果です。2つの赤い矢印が祝日を指しており、前回より正解データと予測結果の差が小さくなっていることが分かります。
実際にR2の値も0.380から0.428と改善されています。
3-3. ステップ3
入力変数として日付と祝日、天気、気温、風速、湿度を利用して予測モデルの学習と登録ユーザー利用数の予測を行います。
予測モデルの評価指標R2=0.620、yが正解データ、yhatが予測結果です。前回より正解データと予測結果の差が小さくなっていることが分かります。
実際にR2の値も0.428から0.620と大幅に改善されています。Prophetを使うと日付以外の入力変数も簡単に追加できます。
4. まとめ
4-1. これまで時系列データ予測を行うためには、難しい統計モデルを理解する必要があった
4-2. Facebook社がProphetライブラリを公開したことで業務知識を時系列データ予測モデルに活用しやすくなった
4-3. RapidMinerとProphetで誰でも簡単に時系列データ予測モデルが作れるようになった
5. 製品や関連資料の紹介
機械学習プラットフォーム RapidMinerについてはこちら
参考資料1. Facebook Prophet Quick Start Python API リンクはこちら
参考資料2.「Pythonで儲かるAIをつくる」(日経BP)
参考資料3.「東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~」(マイナビ出版)
記事担当者::アプリケーション事業推進部 長井伸次
投稿日:2021/11/30
本記事は、日商エレクトロニクス株式会社アプリケーション事業本部アプリケーション事業部のオリジナルです。
お問い合わせはこちらからお願い申し上げます。