JupyterLab Notebooksを使用したモデルの作成
このチュートリアルでは、JupyterLab ノートブックのレシピビルダーテンプレートを使用してモデルを作成するために必要な手順について説明します。
導入された概念:
- レシピ: レシピは、モデル仕様に対するAdobeの用語であり、トレーニングされたモデルを構築および実行するために必要な、特定のマシンラーニング、AI アルゴリズムまたはアルゴリズムのアンサンブル、処理ロジック、およびコンフィギュレーションを表すトップレベルのコンテナです。
- モデル:モデルは、履歴データと構成を使用してビジネスユースケースを解決するためにトレーニングされる機械学習レシピのインスタンスです。
- トレーニング:トレーニングは、ラベル付きのデータからパターンやインサイトを学習するプロセスです。
- スコアリング:スコアリングは、トレーニング済みモデルを使用してデータからインサイトを生成するプロセスです。
必要なアセットのダウンロード assets
このチュートリアルを進める前に、必要なスキーマとデータセットを作成する必要があります。 必要なアセットをダウンロードし、前提条件を設定するには、Luma傾向モデルスキーマとデータセットの作成のチュートリアルにアクセスしてください。
JupyterLab ノートブック環境の概要
ゼロからレシピを作成するには、Data Science Workspace内で行うことができます。 開始するには、Adobe Experience Platformに移動し、左側の「Notebooks」タブを選択します。 新しいノートブックを作成するには、JupyterLab LauncherからRecipe Builder テンプレートを選択します。
レシピ ビルダー ノートブックでは、ノートブック内でトレーニングとスコアリングの実行を実行できます。 これにより、トレーニングデータとスコアリングデータで実験を実行する間に、train() メソッドと score() メソッドを柔軟に変更できます。 トレーニングとスコアリングの出力に満足したら、ユーザーはレシピを作成し、さらにレシピを使用してモデルとして公開して機能をモデル化できます。
ランチャーから レシピビルダー ノートブックを選択すると、ノートブックが新しいタブで開きます。
上部の「新しいノートブック」タブで、ツールバーが読み込まれ、3つの追加アクション(トレーニング、スコア、レシピを作成)が表示されます。 これらのアイコンは、Recipe Builder ノートブックにのみ表示されます。 これらのアクションに関する詳細は、ノートブックでレシピを作成した後、 トレーニングとスコアリングの節で提供されます。
レシピビルダー ノートブックの使用を開始
指定されたアセットフォルダーには、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を見つけるには、左側のナビゲーションバー(フォルダーアイコンの下)のノートブック内の「データ」タブ
scoringResultsDataSetIdはモデル スコアリング結果を保存するために使用されます。空のデータセットである必要があります。 これらのデータセットは、以前に必須アセット ステップで作成されたものです。
同じ情報は、「Adobe Experience Platform」の「スキーマ」タブと「データセット」タブにあります。
この機能を使用すれば、トレーニングとスコアリングの設定は次のスクリーンショットのようになります。
デフォルトでは、データのトレーニングとスコアリングを行う際に、次の設定パラメーターが設定されます。
ML_FRAMEWORK_IMS_USER_CLIENT_IDML_FRAMEWORK_IMS_TOKENML_FRAMEWORK_IMS_ML_TOKENML_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_IDML_FRAMEWORK_IMS_TOKENML_FRAMEWORK_IMS_ML_TOKENML_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 レシピとモデル ドロップダウンにアクセスしてください。