トレーニングデータローダーについて
トレーニングデータローダーの目的は、機械学習モデルの作成に使用するデータをインスタンス化することです。通常、データローダーのトレーニングには、次の 2 つのタスクがあります。
- Experience Platform からデータを読み込み中
- データの準備と特徴量エンジニアリング
以下の 2 つの節で、データの読み込みとデータの準備について説明します。
データの読み込み
この手順では、pandas データフレームを使用します。データは、Experience Platform SDK(platform_sdk
)を使用して Adobe Experience Platform のファイルから読み込むか、Pandas の read_csv()
関数または read_json()
関数を使用して外部ソースから読み込むことができます。
platform_sdk
データローダーを使用して読み込まれます。Experience Platform SDK
platform_sdk
データローダーの使用に関する詳細なチュートリアルについては、Experience Platform SDK ガイドを参照してください。 このチュートリアルでは、認証の構築、データの基本読み取り、およびデータの基本的な書き込みに関する情報を提供します。
外部ソース
この節では、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
データが揃ったら、データの準備と特徴のエンジニアリングから始めます。
データの準備と特徴量エンジニアリング
データを読み込んだ後、データをクリーンアップしてデータを準備する必要があります。 この例では、モデルの目標は、顧客が製品を注文するかどうかを予測することです。 モデルは特定の製品を表示しないので、productListItems
は不要なので、列は削除されます。 次に、1 つの列に 1 つの値または 2 つの値のみを含む追加の列が削除されます。 モデルをトレーニングする場合、目標の予測に役立つ有用なデータのみを保持することが重要です。
不要なデータを削除したら、機能エンジニアリングを開始できます。 この例で使用するデモデータには、セッション情報は含まれていません。 通常は、特定の顧客の現在と過去のセッションに関するデータを取得します。 セッション情報がないため、この例では代わりに、ジャーニーの区切りで現在および過去のセッションを模倣します。
区切りが完了すると、データにラベルが付けられ、ジャーニーが作成されます。
次に、特徴を作成し、過去と現在に分けます。 その後、不要な列はすべて削除され、Luma の顧客に対する過去のジャーニーと現在のジャーニーの両方が残ります。 これらのジャーニーには、顧客が商品を購入したかどうか、購入に至るまでのジャーニーなどの情報が含まれています。
スコアリングデータローダー
スコアリング用のデータのロード手順は、トレーニング・データのロード手順と似ています。 コードをよく見ると、dataset_reader
の scoringDataSetId
を除いてすべてが同じであることがわかります。 これは、トレーニングとスコアリングの両方に同じ Luma データソースが使用されるからです。
様々なデータ・ファイルをトレーニングとスコアリングに使用する場合、トレーニングとスコアリングのデータ・ローダーは個別になります。 これにより、必要に応じて、トレーニングデータをスコアリングデータにマッピングするなど、追加の前処理を実行できます。
パイプラインファイル
pipeline.py
ファイルには、トレーニングとスコアリングのロジックが含まれています。
トレーニングの目的は、トレーニングデータセットの機能とラベルを使用してモデルを作成することです。 トレーニングモデルを選択した後、x と y のトレーニングデータセットをモデルに適合させる必要があります。この関数はトレーニング済みのモデルを返します。
score()
関数には、スコアリングアルゴリズムを含め、モデルの成功度を示す測定値を返す必要があります。score()
関数は、スコアリングデータセットラベルとトレーニング済みモデルを使用して、予測された特徴のセットを生成します。次に、これらの予測値が、スコアリングデータセットの実際の特徴と比較されます。この例では、score()
関数は、トレーニング済みモデルを使用して、スコアリングデータセットのラベルを使用して特徴を予測します。予測された特徴が返されます。
評価ファイル
evaluator.py
ファイルには、トレーニング済みレシピを評価する方法と、トレーニングデータを分割する方法に関するロジックが含まれています。
データセットの分割
トレーニングのデータ準備段階では、トレーニングとテストに使用するデータセットを分割する必要があります。この val
データは、トレーニング後にモデルを評価するために暗黙的に使用されます。 このプロセスはスコアリングとは別のものです。
この節では、ノートブックにデータを読み込んだ後、データセット内の関連のない列を削除してデータをクリーンアップする split()
関数について説明します。 ここからフィーチャーエンジニアリングを実行できます。これは、データ内の既存の未加工フィーチャーから追加の関連フィーチャーを作成するプロセスです。
トレーニング済みモデルの評価
evaluate()
関数は、モデルがトレーニングされた後に実行され、モデルの成功度を示す指標を返します。 evaluate()
関数は、テストデータセットラベルとトレーニング済みモデルを使用して、一連の機能を予測します。 これらの予測値は、テストデータセットの実際の特徴と比較されます。この例で使用される指標は、precision
、recall
、f1
、accuracy
です。 この関数は、評価指標の配列を含む metric
オブジェクトを返します。これらの指標は、トレーニング済みモデルのパフォーマンスを評価するために使用されます。
print(metric)
を追加すると、指標の結果を表示できます。
データセーバーファイル
datasaver.py
ファイルには save()
関数が含まれており、スコアリングのテスト中に予測を保存するために使用されます。 save()
関数は、予測を受け取り、Experience Platform Catalog API を使用して、scoring.conf
ファイルで指定した scoringResultsDataSetId
にデータを書き込みます。 いいよ
トレーニングとスコアリング
ノートブックの変更が完了し、レシピをトレーニングする場合は、バーの上部にある関連ボタンを選択して、セルでトレーニング実行を作成できます。 ボタンを選択すると、トレーニングスクリプトからのコマンドと出力のログがノートブック(evaluator.py
のセルの下)に表示されます。 Conda は、最初にすべての依存関係をインストールし、その後トレーニングを開始します。
スコアリングを実行する前に、少なくとも 1 回はトレーニングを実行する必要があります。「スコアリングを実行」ボタンを選択すると、トレーニング中に生成されたトレーニング済みモデルにスコアが付けられます。 スコア付けスクリプトが datasaver.py
の下に表示されます。
デバッグの目的で、非表示の出力を表示する場合は、出力セルの末尾に debug
を追加し、再実行します。
レシピの作成
レシピの編集が完了し、トレーニング/スコアリング出力に満足したら、右上の レシピを作成 を選択して、ノートブックからレシピを作成できます。
「レシピの作成」を選択すると、レシピ名を入力するよう求められます。 この名前は、Experience Platform で作成された実際のレシピを表します。
「OK」を選択すると、レシピの作成プロセスが開始されます。 これには時間がかかり、「レシピを作成」ボタンの代わりに進行状況バーが表示されます。 完了したら、「レシピを表示」ボタンを選択すると、「ML モデル の下の「レシピ 」タブに移動 ます。
- ファイルのセルを削除しないでください
- ファイルのセルの先頭の
%%writefile
行を編集しないでください - 異なるノートブックに同時にレシピを作成しないでください
次の手順
このチュートリアルを完了することで、 レシピビルダー ノートブックで機械学習モデルを作成する方法を学びました。 また、レシピ作成ワークフローにノートブックを使用する方法についても説明しました。
Data Science Workspace 内でリソースを操作する方法を引き続き学習するには、Data Science Workspace のレシピとモデル ドロップダウンを参照してください。