ホーム » Prophet (ページ 2)
「Prophet」カテゴリーアーカイブ
Prophet 1.0 : 予測の飽和
Prophet 1.0 : 予測の飽和 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/08/2021 (1.0)
* 本ページは、Prophet の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
スケジュールは弊社 公式 Web サイト でご確認頂けます。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。
人工知能研究開発支援 | 人工知能研修サービス | テレワーク & オンライン授業を支援 |
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。) |
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ ; Facebook |
Prophet 1.0 : 予測の飽和
成長の予測
デフォルトでは、Prophet はその予測のために線形モデルを使用します。成長を予測するとき、通常はある達成可能な最大ポイントがあります : 全体的な市場規模、人口規模 etc. です。これは環境収容力 (= carrying capacity) と呼ばれ、予測はこのポイントで飽和するはずです。
Prophet は、指定された環境収容力とともに、ロジスティック成長 (= logistic growth) トレンドモデルを使用して予測を行なうことを可能にします。Wikipedia の R (プログラミング言語) のページへの訪問のログ数でこれを例示します。
df = pd.read_csv('../examples/example_wp_log_R.csv')
カラム cap で環境収容力を指定しなければなりません。ここでは特定の値を仮定しますが、これは通常は市場規模についてのデータや専門知識を使用して設定されます。
df['cap'] = 8.5
注意すべき重要なことは cap はデータフレームの総ての行のために指定されなければならず、そしてそれは定数である必要はないことです。市場規模が拡大している場合、cap は増大するシークエンスである可能性があります。
そして前のようにモデルを適合させますが、ロジスティック growth を指定するために追加の引数を渡します :
m = Prophet(growth='logistic')
m.fit(df)
前のように未来の予測のためにデータフレームを作成しますが、未来の収容力も指定しなければなりません。ここでは収容力を履歴のものと同じ値で定数として保持し、そして未来の 5 年を予測します :
future = m.make_future_dataframe(periods=1826)
future['cap'] = 8.5
fcst = m.predict(future)
fig = m.plot(fcst)
ロジスティック関数は 0 の暗黙的な最小値を持ち、収容力で飽和するのと同じように 0 で飽和します。別の飽和最小値を指定することも可能です。
飽和最小値
ロジスティック成長モデルはまた飽和最小値も処理できます、これは cap カラムが最大値を指定するのと同じ方法でカラム floor で指定されます :
df['y'] = 10 - df['y']
df['cap'] = 6
df['floor'] = 1.5
future['cap'] = 6
future['floor'] = 1.5
m = Prophet(growth='logistic')
m.fit(df)
fcst = m.predict(future)
fig = m.plot(fcst)
飽和最小値でロジスティック成長トレンドを使用するために、最大収容力も指定されなければなりません。
以上
Prophet 1.0 : クイックスタート
Prophet 1.0 : クイックスタート (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/06/2021 (1.0)
* 本ページは、Prophet の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
スケジュールは弊社 公式 Web サイト でご確認頂けます。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。
人工知能研究開発支援 | 人工知能研修サービス | テレワーク & オンライン授業を支援 |
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。) |
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ ; Facebook |
Prophet 1.0 : クイックスタート
Python API
Prophet は sklearn モデル API に従います。Prophet クラスのインスタンスを作成してからその fit と predict メソッドを呼び出します。
Prophet への入力は常に 2 つのカラム : ds と y を持つデータフレームです。ds (datestamp) カラムは Pandas により想定される形式であるべきです、理想的には日付のための YYYY-MM-DD またはタイムスタンプのための YYYY-MM-DD HH:MM:SS です。y カラムは数値でなければなりません、そして予測したい測定値を表します。
例として、 Peyton Manning のための Wikipedia ページのログの daily ページビューの時系列を見ましょう。このデータを R の Wikipediatrend パッケージを使用してかき集めました。Peyton Manning は良いサンプルを提供します、何故ならばそれは複数の季節性 (= seasonality)、成長率の変化、そして (Manning のプレーオフとスーパーボウルの出現のような) 特別な日をモデル化する機能のような Prophet の機能の幾つかを例示するからです。CSV は ここ で利用可能です。
最初にデータをインポートします :
import pandas as pd
from prophet import Prophet
df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv')
df.head()
df.tail()
df.count()
ds 2905 y 2905 dtype: int64
新しい Prophet オブジェクトをインスタンス化することによりモデルを適合させます。予測手続きへの任意の設定はコンストラクタに渡されます。そしてその fit メソッドを呼び出して履歴データフレームを渡します。フィッティングには 1-5 秒かかるはずです。
m = Prophet()
m.fit(df)
それから予測は (そのために予測が成される) 日付を含むカラム ds を持つデータフレーム上で行なわれます。ヘルパーメソッド Prophet.make_future_dataframe を使用して指定された日数だけ未来に拡張する適切なデータフレームを得ることができます。デフォルトではそれは履歴からの日付も含みますので、モデルが適合していることも分かります。
future = m.make_future_dataframe(periods=365)
future.tail()
predict メソッドは future の各行に予測された値を割当てます、それは yhat と名前付けられます。履歴日付を渡す場合、それは in-sample な適合を提供します。ここで forecast オブジェクトは新しいデータフレームで、それは予測を持つカラム yhat と、成分と不確かな interval のためのカラムを含みます。
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
Prophet.plot メソッドを呼び出して forecast データフレームを渡すことにより予測をプロットできます。
fig1 = m.plot(forecast)
予測成分を見ることを望む場合、Prophet.plot_components メソッドを利用できます。デフォルトでは、時系列のトレンド、yearly 周期性と weekly 周期性を見ます。休日を含める場合、ここでそれらも見ます。
fig2 = m.plot_components(forecast)
予測と成分の対話的な図は plotly で作成できます。plotly 4.0 かそれ以上を個別にインストールする必要があります、それはデフォルトでは prophet と共にインストールされないからです。notebook と ipywidgets パッケージをインストールする必要もあります。
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m, forecast)
plot_components_plotly(m, forecast)
各メソッドのために利用可能なオプションについての詳細は docstrings で利用可能です、例えば help(Prophet) や help(Prophet.fit) を通してです。CRAN の R リファレンスマニュアルは利用可能な関数の総ての正確なリストを提供します、それらの各々は Python の同値を持ちます。
以上
Prophet 1.0 : 概要
Prophet 1.0 : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 06/29/2021 (1.0)
* 本ページは、Prophet の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
スケジュールは弊社 公式 Web サイト でご確認頂けます。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。
人工知能研究開発支援 | 人工知能研修サービス | テレワーク & オンライン授業を支援 |
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。) |
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ ; Facebook |
Prophet 1.0 : 概要
Prophet は加法モデルに基づき時系列データを予測するための手続きです、そこでは毎年、毎週そして毎日の季節性 (= seasonality) 及び休日の影響による非線形トレンドが適合されます。それは強い季節的影響と幾つかの季節の履歴データを持つ時系列で最善に動作します。Prophet は欠測データとトレンドの変化に対して堅牢で、典型的には外れ値を上手く処理します。
Prophet は Facebook の Core データサイエンス・チーム によりリリースされた オープンソース・ソフトウェア です。ダウンロードのために CRAN と PyPI で利用可能です。
重要なリンク
- ホームページ: https://facebook.github.io/prophet/
- HTML ドキュメント: https://facebook.github.io/prophet/docs/quick_start.html
- Issue tracker: https://github.com/facebook/prophet/issues
- ソースコード・レポジトリ: https://github.com/facebook/prophet
- Contributing: https://facebook.github.io/prophet/docs/contributing.html
- Prophet R パッケージ: https://cran.r-project.org/package=prophet
- Prophet Python パッケージ: https://pypi.python.org/pypi/prophet/
- リリース・ブログ投稿: https://research.fb.com/prophet-forecasting-at-scale/
- Prophet paper: Sean J. Taylor, Benjamin Letham (2018) Forecasting at scale. The American Statistician 72(1):37-45 ( https://peerj.com/preprints/3190.pdf ).
Python でインストール
Prophet は PyPi 上ですので、それをインストールするために pip を利用できます。v0.6 以後、Python 2 はもはやサポートされません。v1.0 の時点で、PyPI 上のパッケージ名は “prophet” です ; v1.0 以前はそれは “fbprophet” でした。
# Install pystan with pip before using pip to install prophet
# pystan>=3.0 is currently not supported
pip install pystan==2.19.1.1
pip install prophet
Prophet が持つデフォルトの依存性は pystan です。PyStan はそれ自身の インストール手順 を持ちます。prophet をインストールするために pip を使用する前に pip で pystan をインストールしてください。
参考 : PyStan インストール
※ 但し、Anaconda 環境については別途後述されますので併せて読んでください。
PyPI から PyStan をインストールするためには貴方のシステムが要件を満たしていることを確認してください :
- Python ≥3.7
- Linux or macOS
- x86-64 CPU
- C++ compiler: gcc ≥9.0 or clang ≥10.0.
# gcc 9.x のインストール sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install g++-9-multilib # デフォルト設定 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 30 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 30 update-alternatives --display gcc
pip で PyStan をインストールします。次のコマンドは PyStan をインストールします :
python3 -m pip install pystan
サポートされる Linux ディストリビューション
2 つの公式にサポートされる Linux ディストリビューションがあります :
- Debian 11
- Ubuntu 20.04
Users have reported that PyStan works on several other Linux distributions. If you use an unsupported distribution and find that the PyPI wheels do not work, try installing httpstan from source. Once httpstan is installed, PyStan should work.
Experimental backend – cmdstanpy
(省略)
Anaconda
gcc をセットアップするためには “conda install gcc” を使用します。Prophet をインストールする最も簡単な方法は conda-forge 経由です : “conda install -c conda-forge prophet”
Linux
Make sure compilers (gcc, g++, build-essential) and Python development tools (python-dev, python3-dev) are installed. In Red Hat systems, install the packages gcc64 and gcc64-c++. If you are using a VM, be aware that you will need at least 4GB of memory to install prophet, and at least 2GB of memory to use prophet.
以上