予測分析を生成AIで誰にでもわかりやすくする！DataRobot予測アシスタント入門！


　　　　　　　<img width="400" alt="Gemini_Generated_Image_d0vuh6d0vuh6d0vu.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/437650bb-9261-45d0-ae9c-76eca2184e35.jpeg">

### 1. はじめに
こんにちは、DataRobot Japan副社長の小川です。元々はDataRobotで金融業界のお客様を担当していたデータサイエンティストで、ゲーム理論やオペレーションリサーチの分野を専門としていました。

近年、ビジネス環境の複雑化に伴い、正確な予測分析の重要性が増しています。DataRobotの予測アシスタントは、予測AIと生成AIを組み合わせることで、高度な予測分析を効率的に行うための強力なツールです。本記事では、予測アシスタントの概要、機能、カスタマイズ方法、そして具体的なユースケースについて解説します。

### 2. 予測アシスタントとは
[DataRobot予測アシスタント](https://github.com/datarobot-community/forecast-assistant)は、予測AIモデルの構築から解釈、改善までを支援するアプリケーションテンプレートです。生成AIを活用することで、予測結果の説明やWhat-Ifシナリオ分析を自然言語で提供し、ビジネスユーザーでも容易に予測分析を活用できます。

![ogawa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/8ddda491-3197-4246-9419-56e6a5999bfd.png)


主な特徴は以下の通りです。
- **予測AIと生成AIの統合**： 高精度な予測モデルと自然言語による説明を組み合わせることで、予測結果の理解を促進します。
- **テンプレートによる効率化**： 一般的な予測分析タスクをテンプレート化することで、迅速な分析開始を可能にします。
- **カスタマイズ性**： ユーザーはテンプレートを自由にカスタマイズし、特定のビジネスニーズに合わせた分析環境を構築できます。

### 3. 予測アシスタントの機能
予測アシスタントは、以下の主要な機能を提供します。
- **予測モデルの自動構築**： DataRobotのAutoML機能により、最適な予測モデルを自動的に選択・構築します。
- **予測結果の説明**： 生成AIが予測結果の要因や根拠を自然言語で説明します。
- **What-Ifシナリオ分析**： ユーザーが入力したシナリオに基づいて、予測結果の変化をシミュレーションします。
- **予測モデルの改善**： 予測結果と実際の結果を比較し、モデルの改善点を提示します。

### 4. 予測アシスタントのカスタマイズ
予測アシスタントは、様々なカスタマイズができますが、今回はJupyter Notebook形式のノートブックを使用してデータパイプラインのカスタマイズパートを紹介します。特に、notebooks/train_model.ipynbとnotebooks/prep_scoring_data.ipynbの2つのノートブックを編集することで、予測モデルの学習パイプラインやスコアリングデータの準備プロセスを柔軟に変更できます。

以下の2つのノートブックを編集してください。
- **notebooks/train_model.ipynb**: 学習データの取り込み、準備、およびモデルの学習設定を扱います。
- **notebooks/prep_scoring_data.ipynb**: スコアリングデータ（フロントエンドで予測を表示するために使用するデータ）の準備を扱います。

```python
import pandas as pd

from infra.settings_datasets import training_dataset

# Replace as needed with your own data ingest and/or preparation logic
df = pd.read_csv(training_dataset.file_path)
```

必要であれば、このパートでデータへの前処理を記載します。

※DataRobotではアルゴリズムごとに最適な欠損値処理やエンコーディングだけでなく、テキスト、地理空間、画像データのベクトル化が自動で行われます。またトランザクションデータからの特徴量抽出も自動で行われるため、機械もわからないドメイン知識の必要な特徴量エンジニアリング、または上記に含まれないような特殊なデータ型（化学式や波形データなど）の変換に利用いただくといいかと思います。

```python
from datarobot_pulumi_utils.schema.training import (
    AdvancedOptionsArgs,
    AnalyzeAndModelArgs,
    AutopilotRunArgs,
    CalendarArgs,
    DatetimePartitioningArgs,
)

from forecastic.schema import FeatureSettingConfig
from infra.settings_main import project_name

calendar_args = CalendarArgs(
    country_code="US",
    name=f"Calendar [{project_name}]",
    start_date="2012-01-01",
    end_date="2022-01-01",
)
autopilotrun_args = AutopilotRunArgs(
    name=f"Forecast Assistant Project [{project_name}]",
    advanced_options_config=AdvancedOptionsArgs(seed=42),
    analyze_and_model_config=AnalyzeAndModelArgs(
        metric="RMSE",
        mode=dr.enums.AUTOPILOT_MODE.QUICK,
        target="Sales",
        worker_count=-1,
    ),
    datetime_partitioning_config=DatetimePartitioningArgs(
        datetime_partition_column="Date",
        multiseries_id_columns=["Store"],
        use_time_series=True,
        feature_derivation_window_start=-35,
        feature_derivation_window_end=0,
        forecast_window_start=1,
        forecast_window_end=30,
    ),
    feature_settings_config=[
        FeatureSettingConfig(feature_name="Store_Size", known_in_advance=True),
        FeatureSettingConfig(feature_name="Marketing", known_in_advance=True),
        FeatureSettingConfig(feature_name="TouristEvent", known_in_advance=True),
    ],
)

registered_model_name = f"Forecastic Registered Model [{project_name}]"
```

サンプルデータでは、CalendarArgsでアメリカ（US）の祝日カレンダーが設定されています。日本を設定すれば自動的に日本の祝日カレンダーが反映されます。AutopilotRunArgsでは予測AI構築のための設定（最適化指標など）が登録されています。


DataRobotでは多くのパラメータは、明示的に指定しなければ、与えられたデータや目的によって自動的に処理されますが、今回のような時系列データでは、「未来で事前にわかるデータ（計画されたデータ）はどれか」は設定する必要があります。サンプルデータでは、Store_Size、MarketingとTouristEventが設定されていますが、お店のサイズなどはそこまで変動することもないですし、マーケティングキャンペーンや旅行客イベントも同じように未来の出来事でも現時点でどのようなデータが入るかわかるというものになっています。

修正したノートブックを実行すれば予測AIモデルが自動的に構築されます。
あとはpulumi up を実行して、これらの変更でスタックを更新してください。

```json
source set_env.sh  # Windowsの場合は `set_env.bat` を使用
pulumi up
```

継続的に更新される予測アプリの場合、prep_scoring_data.ipynb をDataRobotのジョブ機能などスケジュールに基づいて実行することを検討してください。

### 5. ユースケース：店舗の売上予測
予測アシスタントは、様々なユースケースに適用できます。ここでは、店舗の売上予測を例に挙げます。

店舗の売上予測では、過去の売上データ、曜日、祝日、気温などの外部要因を考慮する必要があります。予測アシスタントを使用することで、これらの要因を統合した高精度な予測モデルを構築できます。

また、生成AIを活用することで、予測結果の要因分析や、特定のプロモーションが売上に与える影響などを自然言語で理解できます。

### 6. まとめ
本記事では、DataRobot予測アシスタントの概要、機能、カスタマイズ方法、そして具体的なユースケースについて解説しました。予測アシスタントは、予測AIと生成AIを組み合わせることで、高度な予測分析を効率的に行うための強力なツールです。

ぜひ、予測アシスタントを活用して、ビジネスの意思決定を支援してください。