JupyterLab Notebooks を使用したモデルの作成
このチュートリアルでは、JupyterLab ノートブックのレシピビルダーテンプレートを使用してモデルを作成するために必要な手順について説明します。
導入された概念:
- レシピ: レシピは、Adobeのモデル仕様の用語であり、トレーニング済みモデルの作成と実行に必要な特定の機械学習、AI アルゴリズムまたはアルゴリズムのアンサンブル、処理ロジック、設定を表す最上位のコンテナです。
- モデル:モデルは、履歴データと構成を使用してビジネスユースケースを解決するためにトレーニングされる機械学習レシピのインスタンスです。
- トレーニング:トレーニングは、ラベル付きのデータからパターンやインサイトを学習するプロセスです。
- スコアリング:スコアリングは、トレーニング済みモデルを使用してデータからインサイトを生成するプロセスです。
必要なアセットのダウンロード assets
このチュートリアルを進める前に、必要なスキーマとデータセットを作成する必要があります。 Luma 傾向モデルスキーマとデータセットの作成に関するチュートリアルにアクセスして、必要なアセットをダウンロードし、前提条件を設定します。
JupyterLab notebook 環境の基本を学ぶ
レシピをゼロから作成するには、Data Science Workspace 内で行います。 開始するには、Adobe Experience Platform に移動し、左側の ノートブック タブを選択します。 新しいノートブックを作成するには、JupyterLab Launcher ールバーからレシピビルダーテンプレートを選択します。
レシピビルダー ノートブックを使用すると、ノートブック内でトレーニング実行とスコアリング実行を実行できます。 これにより、トレーニングデータとスコアリングデータで実験を実行する間に、train()
メソッドと score()
メソッドを柔軟に変更できます。トレーニングとスコアリングの出力に満足したら、レシピを作成し、さらにレシピを使用して機能をモデル化し、モデルとして公開できます。
ランチャーから レシピビルダー ノートブックを選択すると、ノートブックが新しいタブで開きます。
上部にある新しいノートブックタブに、追加の 3 つのアクション(トレーニング、スコア、レシピを作成 を含むツールバーが読み込まれます。 これらのアイコンは、「レシピビルダー ノートブックにのみ表示さ ます。 ノートブックでレシピを作成した後、これらのアクションについて詳しくは トレーニングとスコアリングの節を参照してください。
レシピビルダー ノートブックの概要
提供されたアセットフォルダーには、Luma の傾向モデル propensity_model.ipynb
があります。 JupyterLab の「ノートブックをアップロード」オプションを使用して、提供されたモデルをアップロードしノートブックを開きます。
このチュートリアルの残りの部分では、傾向モデルノートブックで事前定義された次のファイルについて説明します。
次のビデオチュートリアルでは、Luma 傾向モデル ノートブックについて説明します。
要件ファイル requirements-file
要件ファイルは、モデルで使用する追加のライブラリを宣言するために使用されます。 依存関係がある場合は、バージョン番号を指定できます。その他のライブラリを探すには、anaconda.org にアクセスしてください。 要件ファイルのフォーマット方法については、Conda を参照してください。 既に使用されている主なライブラリのリストは次のとおりです。
python=3.6.7
scikit-learn
pandas
numpy
data_access_sdk_python
name
」フィールドを上書きすることはできません。Luma 傾向モデルノートブックの場合、要件を更新する必要はありません。
設定ファイル configuration-files
設定ファイル(training.conf
および scoring.conf
)は、トレーニングとスコアリングに使用するデータセットを指定し、ハイパーパラメーターを追加するために使用されます。トレーニングとスコアリングには別々の設定があります。
モデルがトレーニングを実行するには、trainingDataSetId
、ACP_DSW_TRAINING_XDM_SCHEMA
、tenantId
を指定する必要があります。 スコアリングの場合は、さらに scoringDataSetId
、tenantId
、scoringResultsDataSetId
を指定する必要があります。
データセット ID とスキーマ ID を見つけるには、左側のナビゲーションバー(フォルダーアイコンの下
scoringResultsDataSetId
は、モデルのスコアリング結果の保存に使用され、空のデータセットにする必要があります。 これらのデータセットは、以前 必須アセット手順で作成されたものです。
同じ情報は、「Adobe Experience Platform」の「スキーマ」タブと「データセット」タブにあります。
テストが完了すると、トレーニングとスコアリングの設定は次のスクリーンショットのようになります。
デフォルトでは、データのトレーニングとスコアリングを行う際に、次の設定パラメーターが設定されます。
ML_FRAMEWORK_IMS_USER_CLIENT_ID
ML_FRAMEWORK_IMS_TOKEN
ML_FRAMEWORK_IMS_ML_TOKEN
ML_FRAMEWORK_IMS_TENANT_ID
トレーニングデータローダーについて training-data-loader
トレーニングデータローダーの目的は、機械学習モデルの作成に使用するデータをインスタンス化することです。通常、データローダーのトレーニングには、次の 2 つのタスクがあります。
- Experience Platform からデータを読み込み中
- データの準備と特徴量エンジニアリング
以下の 2 つの節で、データの読み込みとデータの準備について説明します。
データの読み込み loading-data
この手順では、pandas データフレームを使用します。データは、Experience Platform SDK(platform_sdk
)を使用して Adobe Experience Platform のファイルから読み込むか、Pandas の read_csv()
関数または read_json()
関数を使用して外部ソースから読み込むことができます。
platform_sdk
データローダーを使用して読み込まれます。Experience Platform SDK platform-sdk
platform_sdk
データローダーの使用に関する詳細なチュートリアルについては、Experience Platform SDK ガイドを参照してください。 このチュートリアルでは、認証の構築、データの基本読み取り、およびデータの基本的な書き込みに関する情報を提供します。
外部ソース external-sources
この節では、JSON または CSV ファイルを pandas オブジェクトにインポートする方法を示します。Pandas ライブラリの公式ドキュメントについては、次の URL を参照してください。
まず、CSV ファイルのインポート例を示します。data
引数は CSV ファイルへのパスです。この変数は、前の節の configProperties
からインポートされました。
df = pd.read_csv(data)
また、JSON ファイルからインポートすることもできます。data
引数は CSV ファイルへのパスです。この変数は、前の節の configProperties
からインポートされました。
df = pd.read_json(data)
これで、データはデータフレームオブジェクトに含まれ、次の節で分析および操作できます。
トレーニング データ ローダーファイル
この例では、Experience Platform SDKを使用してデータが読み込まれます。 ライブラリは、次の行を含めることで、ページの上部にインポートできます。
from platform_sdk.dataset_reader import DatasetReader
その後、load()
メソッドを使用して、設定(recipe.conf
)ファイルで設定したトレーニングデータセットを trainingDataSetId
から取得できます。
def load(config_properties):
print("Training Data Load Start")
#########################################
# Load Data
#########################################
client_context = get_client_context(config_properties)
dataset_reader = DatasetReader(client_context, dataset_id=config_properties['trainingDataSetId'])
client_context = get_client_context(config_properties)
を使用してExperience Platformからデータにアクセスする場合、次の設定パラメーターが設定されます。ML_FRAMEWORK_IMS_USER_CLIENT_ID
ML_FRAMEWORK_IMS_TOKEN
ML_FRAMEWORK_IMS_ML_TOKEN
ML_FRAMEWORK_IMS_TENANT_ID
データが揃ったら、データの準備と特徴のエンジニアリングから始めます。
データの準備と特徴量エンジニアリング data-preparation-and-feature-engineering
データを読み込んだ後、データをクリーンアップしてデータを準備する必要があります。 この例では、モデルの目標は、顧客が製品を注文するかどうかを予測することです。 モデルは特定の製品を表示しないので、productListItems
は不要なので、列は削除されます。 次に、1 つの列に 1 つの値または 2 つの値のみを含む追加の列が削除されます。 モデルをトレーニングする場合、目標の予測に役立つ有用なデータのみを保持することが重要です。
不要なデータを削除したら、機能エンジニアリングを開始できます。 この例で使用するデモデータには、セッション情報は含まれていません。 通常は、特定の顧客の現在と過去のセッションに関するデータを取得します。 セッション情報がないため、この例では代わりに、ジャーニーの区切りで現在および過去のセッションを模倣します。
区切りが完了すると、データにラベルが付けられ、ジャーニーが作成されます。
次に、特徴を作成し、過去と現在に分けます。 その後、不要な列はすべて削除され、Luma の顧客に対する過去のジャーニーと現在のジャーニーの両方が残ります。 これらのジャーニーには、顧客が商品を購入したかどうか、購入に至るまでのジャーニーなどの情報が含まれています。
スコアリングデータローダー scoring-data-loader
スコアリング用のデータのロード手順は、トレーニング・データのロード手順と似ています。 コードをよく見ると、dataset_reader
の scoringDataSetId
を除いてすべてが同じであることがわかります。 これは、トレーニングとスコアリングの両方に同じ Luma データソースが使用されるからです。
様々なデータ・ファイルをトレーニングとスコアリングに使用する場合、トレーニングとスコアリングのデータ・ローダーは個別になります。 これにより、必要に応じて、トレーニングデータをスコアリングデータにマッピングするなど、追加の前処理を実行できます。
パイプラインファイル pipeline-file
pipeline.py
ファイルには、トレーニングとスコアリングのロジックが含まれています。
トレーニングの目的は、トレーニングデータセットの機能とラベルを使用してモデルを作成することです。 トレーニングモデルを選択した後、x と y のトレーニングデータセットをモデルに適合させる必要があります。この関数はトレーニング済みのモデルを返します。
score()
関数には、スコアリングアルゴリズムを含め、モデルの成功度を示す測定値を返す必要があります。score()
関数は、スコアリングデータセットラベルとトレーニング済みモデルを使用して、予測された特徴のセットを生成します。次に、これらの予測値が、スコアリングデータセットの実際の特徴と比較されます。この例では、score()
関数は、トレーニング済みモデルを使用して、スコアリングデータセットのラベルを使用して特徴を予測します。予測された特徴が返されます。
評価ファイル evaluator-file
evaluator.py
ファイルには、トレーニング済みレシピを評価する方法と、トレーニングデータを分割する方法に関するロジックが含まれています。
データセットの分割 split-the-dataset
トレーニングのデータ準備段階では、トレーニングとテストに使用するデータセットを分割する必要があります。この val
データは、トレーニング後にモデルを評価するために暗黙的に使用されます。 このプロセスはスコアリングとは別のものです。
この節では、ノートブックにデータを読み込んだ後、データセット内の関連のない列を削除してデータをクリーンアップする split()
関数について説明します。 ここからフィーチャーエンジニアリングを実行できます。これは、データ内の既存の未加工フィーチャーから追加の関連フィーチャーを作成するプロセスです。
トレーニング済みモデルの評価 evaluate-the-trained-model
evaluate()
関数は、モデルがトレーニングされた後に実行され、モデルの成功度を示す指標を返します。 evaluate()
関数は、テストデータセットラベルとトレーニング済みモデルを使用して、一連の機能を予測します。 これらの予測値は、テストデータセットの実際の特徴と比較されます。この例で使用される指標は、precision
、recall
、f1
、accuracy
です。 この関数は、評価指標の配列を含む metric
オブジェクトを返します。これらの指標は、トレーニング済みモデルのパフォーマンスを評価するために使用されます。
print(metric)
を追加すると、指標の結果を表示できます。
データセーバーファイル data-saver-file
datasaver.py
ファイルには save()
関数が含まれており、スコアリングのテスト中に予測を保存するために使用されます。 save()
関数は、予測を受け取り、Experience Platform Catalog API を使用して、scoring.conf
ファイルで指定した scoringResultsDataSetId
にデータを書き込みます。 いいよ
トレーニングとスコアリング training-and-scoring
ノートブックの変更が完了し、レシピをトレーニングする場合は、バーの上部にある関連ボタンを選択して、セルでトレーニング実行を作成できます。 ボタンを選択すると、トレーニングスクリプトからのコマンドと出力のログがノートブック(evaluator.py
のセルの下)に表示されます。 Conda は、最初にすべての依存関係をインストールし、その後トレーニングを開始します。
スコアリングを実行する前に、少なくとも 1 回はトレーニングを実行する必要があります。「スコアリングを実行」ボタンを選択すると、トレーニング中に生成されたトレーニング済みモデルにスコアが付けられます。 スコア付けスクリプトが datasaver.py
の下に表示されます。
デバッグの目的で、非表示の出力を表示する場合は、出力セルの末尾に debug
を追加し、再実行します。
レシピの作成 create-recipe
レシピの編集が完了し、トレーニング/スコアリング出力に満足したら、右上の レシピを作成 を選択して、ノートブックからレシピを作成できます。
「レシピの作成」を選択すると、レシピ名を入力するよう求められます。 この名前は、Experience Platform で作成された実際のレシピを表します。
「OK」を選択すると、レシピの作成プロセスが開始されます。 これには時間がかかり、「レシピを作成」ボタンの代わりに進行状況バーが表示されます。 完了したら、「レシピを表示」ボタンを選択すると、「ML モデル の下の「レシピ 」タブに移動 ます。
- ファイルのセルを削除しないでください
- ファイルのセルの先頭の
%%writefile
行を編集しないでください - 異なるノートブックに同時にレシピを作成しないでください
次の手順 next-steps
このチュートリアルを完了することで、 レシピビルダー ノートブックで機械学習モデルを作成する方法を学びました。 また、レシピ作成ワークフローにノートブックを使用する方法についても説明しました。
Data Science Workspace 内でリソースを操作する方法を引き続き学習するには、Data Science Workspace のレシピとモデル ドロップダウンを参照してください。