Treasure ワークフロー は、Facebook Prophet を使用して、売上収益やページビューなどの時系列値の予測を提供します。機械学習アルゴリズムは、スケジュールされたワークフローの一部として、カスタム Python スクリプトから実行できます。時系列分析と売上データ予測には、Python カスタムスクリプトで Facebook Prophet を使用します。
Prophet は時系列データを予測するための手順です。不完全なデータセットやトレンドの変化から確率分布を学習できます。これらの例のデータの詳細は、Prophet の公式ドキュメントで確認できます。

これらの例は、Facebook Prophet の時系列分析を使用して、過去のデータを使用して連続値を予測し、売上データを予測します。S3 と Slack へのアクセス状況に応じて、使用する例を選択してください。
ワークフロー:
Treasure Data から過去の売上データを取得します
Prophet でモデルを構築します
将来の売上を予測し、Treasure Data に書き戻します
予測図を Amazon S3 にアップロードします
Slack に通知を送信します
Treasure アカウントでカスタムスクリプト機能が有効になっていることを確認してください。
TD Toolbelt と TD Toolbelt Workflow モジュールをダウンロードしてインストールしてください。詳細については、Treasure ワークフロー クイックスタートを参照してください。
Treasure ワークフロー の構文に関する基本知識
S3 バケットと関連する認証情報
Slack の webhook URL を作成します
このリポジトリからプロジェクトをダウンロードします
コマンドラインターミナルウィンドウで、timeseries ディレクトリに移動します。例:
cd timeseries- data.sh を実行してサンプルデータを準備します。timeseries というデータベースと retail_sales というテーブルが作成されます。
./data.sh- 以下のようにワークフロー例を実行します:
td workflow push prophet
td workflow secrets \
--project prophet \
--set apikey \
--set endpoint \
--set s3_bucket \
--set aws_access_key_id \
--set aws_secret_access_key \
--set slack_webhook_url
# Set secrets from STDIN like: apikey=x/xxxxx, endpoint=https://api.treasuredata.com, s3_bucket=$S3_BUCKET,
# aws_access_key_id=AAAAAAAAAA, aws_secret_access_key=XXXXXXXXX, slack_webhook_url=https://hooks.slack.com/services/XXXXXXX/XXXXXX/XXXXXX
# Where XXXXXXX/XXXXXX/XXXXXX is the value of the slack URL where you want information to be populated automatically. $ td workflow start prophet predict_sales --session now予測結果の通知が Slack に送信されます:
予測結果は timeseries データベースの predicted_sales テーブルに保存されます。
Treasure コンソール で以下の SQL を使用して、予測された売上値を検証します:
SELECT
ds,
yhat,
yhat_lower,
yhat_upper
FROM
timeseries.predicted_sales
ORDER BY
ds DESC LIMIT 100そのカラムで予測された売上数を確認できます。
この例は、S3 や Slack にアクセスできない場合に使用します。
ワークフロー:
Treasure Data から過去の売上データを取得します
Prophet でモデルを構築します
将来の売上を予測し、Treasure Data に書き戻します
Treasure アカウントでカスタムスクリプト機能が有効になっていることを確認してください。
TD Toolbelt と TD Toolbelt Workflow モジュールをダウンロードしてインストールしてください。詳細については、Treasure ワークフロー クイックスタートを参照してください。
Treasure ワークフロー の構文に関する基本知識
このリポジトリからプロジェクトをダウンロードします
コマンドラインターミナルウィンドウで、timeseries ディレクトリに移動します。例:
cd timeseries- data.sh を実行してサンプルデータを準備します。timeseries というデータベースと retail_sales というテーブルが作成されます。
./data.shtd workflow push prophet
td workflow secrets \
--project prophet \
--set apikey \
--set endpoint
# Set secrets from STDIN like: apikey=x/xxxxx, endpoint=https://api.treasuredata.com
td workflow start prophet predict_sales_simple --session now予測結果は Treasure Data に保存されます。
Treasure ワークフローサンプルを表示する権限を持つ git アカウントにサインインしていることを確認してください。
ディレクトリの内容を確認します:
predict_sales.dig - 売上予測と Slack への通知のワークフロー例。
predict.py - Prophet を使用したカスタム Python スクリプト。Amazon S3 に図もアップロードします。
Slack に通知を送信する必要がない場合は、predict_sales.dig の "+send_graph" ステップを削除できます。
この例では売上データのデータセットを使用しています。read_td 関数のクエリを変更した後、Treasure Data の独自のデータを使用できます。
ds(日付スタンプ)カラムと y カラムを準備する必要があります。y カラムは、売上値やウェブサイトのページビュー(PV)など、予測対象の数値を表します。
以下はページビューログのサンプルコードです:
import pytd.pandas_td as td
engine = td.create_engine('presto:sample_datasets')
start_date = '2014-01-01'
end_date = '2018-12-31'
df = td.read_td(f"""select TD_TIME_FORMAT(TD_DATE_TRUNC('minute', time), 'yyyy-MM-dd HH:mm:ss') as ds, count(1) as yFrom www_accessWhere TD_TIME_RANGE(time, '{start_date}', '{end_date}', 'PDT')group by 1Order by 1""",engine)
m = Prophet(changepoint_prior_scale=0.01).fit(df)
future = m.make_future_dataframe(periods=5, freq='M')
fcst = m.predict(future)