使用JupyterLab Notebooks建立模型
本教學課程將逐步引導您完成使用JupyterLab Notebooks配方產生器範本建立模型的必要步驟。
引入的概念:
- 配方: 配方是模型規格的Adobe術語,是代表特定機器學習、AI演演算法或演演算法組合、處理邏輯以及建立和執行已訓練模型所需設定的頂層容器。
- 模型: 模型是機器學習方法的執行個體,其使用歷史資料和設定進行訓練,以針對業務使用案例進行解析。
- 訓練: 訓練是從標籤資料中學習模式和深入分析的程式。
- 評分: 評分是使用經過訓練的模型,從資料產生深入分析的程式。
下載必要的資產 assets
繼續進行本教學課程之前,您必須建立必要的結構和資料集。 造訪有關建立Luma傾向模型結構描述和資料集的教學課程,以下載必要的資產和設定必要條件。
開始使用JupyterLab筆記本環境
從頭開始建立配方可以在Data Science Workspace內完成。 若要開始,請導覽至Adobe Experience Platform,然後選取左側的 筆記本 索引標籤。 若要建立新的筆記本,請從JupyterLab Launcher選取「配方產生器」範本。
配方產生器筆記本可讓您在筆記本內執行訓練和評分回合。 這可讓您在執行訓練和評分資料的實驗之間,靈活地變更其train()
和score()
方法。 當您對訓練和評分的輸出感到滿意後,就可以建立配方,並使用配方來模型化功能,進而將其發佈為模型。
當您從啟動器選取配方產生器筆記本時,會在新索引標籤中開啟筆記本。
在頂端的新筆記本標籤中,載入包含三個額外動作的工具列 — 訓練、分數 和 建立配方。 這些圖示只會顯示在配方產生器筆記本中。 在記事本中建置您的配方後,在訓練與評分割槽段中提供這些動作的詳細資訊。
開始使用配方生成器筆記本
在提供的資產資料夾中為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,請轉到左側導覽欄(資料夾圖示下)筆記本中的數據標籤
”。 需提供三種不同的 資料集 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
訓練數據載入程式的目的是實例化用於創建機器學習模型的數據。 通常,訓練資料載入程序會完成兩項任務:
- 正在從Platform載入資料
- 資料準備和功能工程
以下兩節將介紹如何載入數據和準備數據。
載入數據 loading-data
此步驟使用 pandas 數據幀。 可以使用 SDK (platform_sdk
) 從PlatformAdobe Experience Platform檔案載入資料,也可以使用 pandas' read_csv()
or read_json()
函數從外部源載入數據。
platform_sdk
資料載入器載入。Platform SDK platform-sdk
如需有關使用platform_sdk
資料載入器的深入教學課程,請造訪Platform SDK指南。 本教學課程提供有關建置驗證、基本讀取資料和基本寫入資料的資訊。
外部來源 external-sources
本節說明如何將JSON或CSV檔案匯入熊貓物件。 熊貓資料庫的官方檔案可在以下網址找到:
首先,以下是匯入CSV檔案的範例。 data
引數是CSV檔案的路徑。 此變數是從上一節中的configProperties
匯入。
df = pd.read_csv(data)
您也可以從JSON檔案匯入。 data
引數是CSV檔案的路徑。 此變數是從上一節中的configProperties
匯入。
df = pd.read_json(data)
現在您的資料在資料流物件中,可以在下一個區段中分析和操作。
訓練資料載入器檔案
在此範例中,資料是使用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
,因此會捨棄該欄。 接著,會捨棄只包含單一值或單一欄中兩個值的其他欄。 培訓模型時,請務必僅保留有助於預測目標的有用數據。
一旦您刪除了任何不必要的資料,就可以開始特徵工程。 用於此範例的示範資料不包含任何工作階段資訊。 通常情況下,您會想要取得特定客戶目前和過去工作階段的資料。 由於缺少工作階段資訊,此範例改為透過歷程分界來模擬目前和過去的工作階段。
劃界完成後,將標記數據並創建歷程。
接著會建立特徵,並分成過去和現在。 接著,所有不必要的欄都會被捨棄,留下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會先安裝所有相依性,然後開始培訓。
請注意,您必須至少執行一次訓練,才能執行評分。 選取 執行評分 按鈕將會在訓練期間產生的已訓練模型上評分。 評分指令碼會顯示在datasaver.py
下方。
為了偵錯,如果您想要檢視隱藏的輸出,請將debug
新增到輸出儲存格的結尾並重新執行。
建立配方 create-recipe
當您編輯完配方並滿意訓練/評分輸出時,您可以選取右上方的 建立配方,從筆記本建立配方。
選取 建立配方 後,系統會提示您輸入配方名稱。 此名稱代表在Platform上建立的實際配方。
選擇「 確定」後,方式創建過程將開始。 這可能需要一些時間,並且會顯示進度列來取代建立配方按鈕。 完成後,您可以選取 檢視配方 按鈕,帶您進入 ML模型 下的 配方 標籤
- 請勿刪除任何檔案儲存格
- 不要編輯檔案儲存格頂端的
%%writefile
行 - 不要同時在不同筆記型電腦中建立配方
後續步驟 next-steps
完成此教學課程後,您已瞭解如何在配方產生器筆記本中建立機器學習模型。 您也已瞭解如何練習將筆記本設為配方工作流程。
若要繼續瞭解如何使用Data Science Workspace中的資源,請造訪Data Science Workspace配方和模型下拉式清單。