本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用者個人化配方
重要
建議使用 User-Personalization-v2 配方。它可以考慮最多 500 萬個訓練速度更快的項目,並產生更相關的建議,並降低延遲。
使用者個人化 (aws-user-personalization) 配方已針對所有個人化建議案例進行最佳化。它預測使用者最有可能與之互動的項目。您可以使用使用者個人化來產生串流應用程式的個人化電影建議,或零售應用程式的個人化產品建議。
透過使用者個人化,Amazon Personalize 主要會根據項目互動資料集中的使用者項目互動資料產生建議。它也可以在您的項目和使用者資料集中使用任何項目和使用者中繼資料。如需其使用之資料的詳細資訊,請參閱必要和選用的資料集。
主題
配方功能
使用者個人化在產生項目建議時使用下列 Amazon Personalize 配方功能:
必要和選用的資料集
若要使用使用者個人化,您必須建立項目互動資料集,並匯入至少 1000 個項目互動。Amazon Personalize 主要根據項目互動資料產生建議。
透過使用者個人化,Amazon Personalize 可以使用包含下列項目的項目互動資料:
-
事件類型和事件值資料 – Amazon Personalize 使用事件類型資料,例如點擊或觀看事件類型,透過其行為中的任何模式來識別使用者意圖和興趣。此外,您可以在訓練前使用事件類型和事件值資料來篩選記錄。如需詳細資訊,請參閱事件類型和事件值資料。
-
內容中繼資料 – 內容中繼資料是指您在事件發生時在使用者環境中收集的互動資料,例如其位置或裝置類型。如需詳細資訊,請參閱內容中繼資料。
-
印象資料 – 印象是使用者與特定項目互動 (點選、觀看、購買等) 時可見的項目清單。如需詳細資訊,請參閱印象資料。
下列資料集是選用的,可以改善建議:
屬性和超參數
使用者個人化配方具有下列屬性:
-
名稱 –
aws-user-personalization
-
配方 Amazon Resource Name (ARN) –
arn:aws:personalize:::recipe/aws-user-personalization
-
演算法 ARN –
arn:aws:personalize:::algorithm/aws-user-personalization
如需詳細資訊,請參閱選擇配方。
下表說明使用者個人化配方的超參數。超參數 是一種演算法參數,您可以調整以改善模型效能。演算法超參數可控制模型的執行方式。特徵化超參數可控制如何篩選要在訓練中使用的資料。選擇超參數最佳值的程序稱為超參數最佳化 (HPO)。如需詳細資訊,請參閱超參數和 HPO。
資料表提供每個超參數的下列資訊:
-
範圍:[下限、上限]
-
值類型:整數、連續 (浮點數)、分類 (布林值、清單、字串)
-
HPO 可調整:參數可以參與 HPO 嗎?
名稱 | 描述 |
---|---|
演算法超參數 | |
hidden_dimension |
模型中使用的隱藏變數數量。隱藏變數 會重新建立使用者的購買歷史記錄和項目統計資料,以產生排名分數。當您的項目互動資料集包含更複雜的模式時,請指定更多隱藏維度。使用更多隱藏維度需要更大的資料集和更多時間處理。若要決定最佳值,請使用 HPO。若要使用 HPO,請在呼叫 CreateSolution 和 CreateSolutionVersion 操作時將 預設值:149 範圍:[32, 256] 值類型:整數 HPO 可調整:是 |
bptt |
決定是否透過時間技術使用反向傳播。透過時間的反向傳播 是一種遞歸神經網路演算法中權重的技術。使用 預設值:32 範圍:[2, 32] 值類型:整數 HPO 可調整:是 |
recency_mask |
決定模型是否應考慮項目互動資料集中的最新熱門趨勢。最新的熱門趨勢可能包括互動事件基礎模式的突然變化。若要訓練模型更多加權最近的事件,請將 預設值: 範圍: 值類型:布林值 HPO 可調整:是 |
特徵化超參數 | |
min_user_history_length_percentile |
要包含在模型訓練中的使用者歷史記錄長度的最小百分位數。歷史記錄長度 是有關使用者的資料總量。使用 例如,設定 預設值:0.0 範圍:[0.0, 1.0] 值類型:浮點數 HPO 可調整:否 |
max_user_history_length_percentile |
要包含在模型訓練中的使用者歷史記錄長度的最大百分位數。歷史記錄長度 是有關使用者的資料總量。使用 例如,設定 預設值:0.99 範圍:[0.0, 1.0] 值類型:浮點數 HPO 可調整:否 |
項目探索行銷活動組態超參數 | |
exploration_weight |
決定建議包含項目互動資料或相關性較低的項目的頻率。值越接近 1.0,探索越多。在零時,不會進行探勘,建議是根據目前的資料 (相關性)。如需詳細資訊,請參閱 CampaignConfig。 預設值:0.3 範圍:[0.0, 1.0] 值類型:浮點數 HPO 可調整:否 |
exploration_item_age_cut_off |
指定項目互動資料集中所有項目自上次互動以來的最大項目存留期,以天為單位。這會根據項目存留期定義項目探索的範圍。Amazon Personalize 會根據項目的建立時間戳記,或在缺少建立時間戳記資料時,決定項目的存留期。如需 Amazon Personalize 如何判斷項目的存留期的詳細資訊,請參閱 建立時間戳記資料。 若要增加 Amazon Personalize 在探索期間考量的項目,請輸入較大的值。最小值為 1 天,預設值為 30 天。建議可能包括比您指定的項目存留期截止還早的項目。這是因為這些項目與使用者相關,而探勘無法識別它們。 預設值:30.0 範圍:正浮點數 值類型:浮點數 HPO 可調整:否 |
使用使用者個人化配方進行訓練 (主控台)
若要使用使用者個人化配方在主控台中產生建議,請先使用配方訓練新的解決方案版本。然後使用解決方案版本部署行銷活動,並使用行銷活動來取得建議。
使用使用者個人化配方訓練新的解決方案版本 (主控台)
-
在 https://console.aws.amazon.com/personalize/home
:// 開啟 Amazon Personalize 主控台並登入您的帳戶。 -
使用新的結構描述建立自訂資料集群組,並使用印模資料上傳資料集。選擇性地將 CREATION_TIMESTAMP 和非結構化文字中繼資料資料納入您的項目資料集,讓 Amazon Personalize 可以更準確地計算項目的存留期,並識別冷項目。
如需匯入資料的詳細資訊,請參閱將訓練資料匯入 Amazon Personalize 資料集。
-
在資料集群組頁面上,選擇包含具有印模資料之資料集或資料集的新資料集群組。
-
在導覽窗格中,選擇解決方案和配方,然後選擇建立解決方案。
-
在建立解決方案頁面上,針對解決方案名稱輸入新解決方案的名稱。
-
針對解決方案類型,選擇項目建議,為您的使用者取得項目建議。
-
針對配方,選擇 aws-user-personalization。解決方案組態區段隨即出現,提供數個組態選項。
-
在其他組態中,如果您的項目互動資料集具有 EVENT_TYPE 或 EVENT_TYPE 和 EVENT_VALUE 資料欄,可選擇使用事件類型和事件值閾值欄位來選擇 Amazon Personalize 在訓練模型時使用的項目互動資料。如需詳細資訊,請參閱選擇用於訓練的項目互動資料。
-
選擇性地為您的解決方案設定超參數。如需使用者個人化配方屬性和超參數的清單,請參閱屬性和超參數。
-
選擇建立和訓練解決方案以開始訓練。儀表板頁面隨即顯示。
您可以導覽至解決方案詳細資訊頁面,以追蹤解決方案版本區段中的訓練進度。訓練完成時,狀態為作用中。
建立行銷活動並取得建議 (主控台)
當您的解決方案版本狀態為作用中時,您就可以建立行銷活動並取得建議,如下所示:
-
在解決方案詳細資訊頁面或行銷活動頁面上,選擇建立新行銷活動。
-
在建立新的行銷活動頁面上,如需行銷活動詳細資訊,請提供下列資訊:
-
行銷活動名稱:輸入行銷活動的名稱。您在此處輸入的文字會顯示在行銷活動儀表板和詳細資訊頁面上。
-
解決方案:選擇您剛建立的解決方案。
-
解決方案版本 ID:選擇您剛建立的解決方案版本 ID。
-
每秒的佈建交易下限:設定 Amazon Personalize 支援的每秒佈建交易下限。有關更多資訊,請參閱 CreateCampaign 操作。
-
-
針對行銷活動組態,請提供下列資訊:
-
探索權重:設定探索量,其中建議包含項目互動資料較少或相關性更頻繁的項目,您指定的探索越多。值越接近 1,探索越多。在零時,不會進行探勘,建議是根據目前的資料 (相關性)。
-
探索項目期限截止:輸入項目期限上限,以最近一次互動後的天數為單位,定義項目探索的範圍。若要增加 Amazon Personalize 在探勘期間考慮的項目數量,請輸入較大的值。
例如,如果您輸入 10,只有在探索期間才會考慮資料集中最近一次互動後 10 天內具有項目互動資料的項目。
注意
建議可能包含沒有來自此時間範圍外項目互動資料的項目。這是因為這些項目與使用者的興趣相關,不需要探勘即可識別它們。
-
-
選擇 Create campaign (建立活動)。
-
在行銷活動詳細資訊頁面上,當行銷活動狀態為作用中時,您可以使用行銷活動來取得建議並記錄印象。如需詳細資訊,請參閱「入門」步驟 5:取得建議中的 。
Amazon Personalize 每兩小時會自動更新您最新的解決方案版本,以包含新資料。您的行銷活動會自動使用更新的解決方案版本。如需詳細資訊,請參閱自動更新。
若要手動更新行銷活動,您首先會使用主控台或 CreateSolutionVersion操作來建立和訓練新的解決方案版本,並將
trainingMode
設定為update
。然後,您可以使用 UpdateCampaign操作,在主控台的行銷活動頁面上手動更新行銷活動。注意
Amazon Personalize 不會自動更新您在 2020 年 11 月 17 日之前建立的解決方案版本。
使用使用者個人化配方進行訓練 (Python SDK)
當您建立資料集群組並使用印模資料上傳資料集時,您可以使用使用者個人化配方來訓練解決方案。選擇性地將 CREATION_TIMESTAMP 和非結構化文字中繼資料資料納入您的項目資料集,讓 Amazon Personalize 可以更準確地計算項目的存留期並識別冷項目。如需建立資料集群組和上傳訓練資料的詳細資訊,請參閱為 Amazon Personalize 結構描述建立結構描述 JSON 檔案。
使用 AWS SDK 使用使用者個人化配方來訓練解決方案
-
使用
create_solution
方法建立新的解決方案。將 取代
solution name
為您的解決方案名稱,並將dataset group arn
取代為您的資料集群組的 Amazon Resource Name (ARN)。import boto3 personalize = boto3.client('personalize') print('Creating solution') create_solution_response = personalize.create_solution(name = '
solution name
', recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', datasetGroupArn = 'dataset group arn
', ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)如需 aws-user-personalization 配方屬性和超參數的清單,請參閱 屬性和超參數。
-
使用更新的訓練資料建立新的解決方案版本,並使用
FULL
下列程式碼片段trainingMode
將 設定為 。將 取代solution arn
為您解決方案的 ARN。import boto3 personalize = boto3.client('personalize') create_solution_version_response = personalize.create_solution_version(solutionArn = '
solution arn
', trainingMode='FULL') new_solution_version_arn = create_solution_version_response['solutionVersionArn'] print('solution_version_arn:', new_solution_version_arn) -
當 Amazon Personalize 完成建立解決方案版本時,請使用下列參數建立您的行銷活動:
-
在步驟 2 中提供新的
campaign name
和solution version arn
產生的 。 -
修改
explorationWeight
項目探索組態超參數,以設定要探索的數量。建議項目互動資料或相關性較低的項目,其頻率越接近 1.0。預設值為 0.3。 -
修改
explorationItemAgeCutOff
項目探索組態超參數參數,以相對於應探索項目的最新互動,提供最長持續時間,以天為單位。值越大,探索期間會考慮的項目越多。
使用下列 Python 程式碼片段來建立新的行銷活動,強調在 30 天進行探勘截止。建立行銷活動通常需要幾分鐘的時間,但可能需要一小時的時間。
import boto3 personalize = boto3.client('personalize') create_campaign_response = personalize.create_campaign( name = '
campaign name
', solutionVersionArn = 'solution version arn
', minProvisionedTPS = 1, campaignConfig = {"itemExplorationConfig": {"explorationWeight": "0.3
", "explorationItemAgeCutOff": "30
"}} ) campaign_arn = create_campaign_response['campaignArn'] print('campaign_arn:', campaign_arn)透過使用者個人化,Amazon Personalize 每兩小時會自動更新您的解決方案版本,以包含新資料。您的行銷活動會自動使用更新的解決方案版本。如需詳細資訊,請參閱自動更新。
若要手動更新行銷活動,您首先會使用主控台或 CreateSolutionVersion操作來建立和訓練新的解決方案版本,並將
trainingMode
設定為update
。然後,您可以使用 UpdateCampaign操作,在主控台的行銷活動頁面上手動更新行銷活動。注意
Amazon Personalize 不會自動更新您在 2020 年 11 月 17 日之前建立的解決方案版本。
-
取得建議和記錄印模 (SDK for Python (Boto3))
建立行銷活動時,您可以使用它來取得使用者的建議並記錄印模。如需使用 AWS SDKs取得批次建議的資訊,請參閱 建立批次推論任務 (AWS SDKs)。
取得建議並記錄印模
-
呼叫
get_recommendations
方法。將campaign arn
變更為新行銷活動的 ARN,並將user id
變更為使用者的 userId。import boto3 rec_response = personalize_runtime.get_recommendations(campaignArn = '
campaign arn
', userId = 'user id
') print(rec_response['recommendationId']) -
建立新的事件追蹤器以傳送 PutEvents 請求。
event tracker name
將 取代為事件追蹤器的名稱,並將dataset group arn
取代為資料集群組的 ARN。import boto3 personalize = boto3.client('personalize') event_tracker_response = personalize.create_event_tracker( name = '
event tracker name
', datasetGroupArn = 'dataset group arn
' ) event_tracker_arn = event_tracker_response['eventTrackerArn'] event_tracking_id = event_tracker_response['trackingId'] print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id)) -
使用步驟 1
recommendationId
中的 和步驟 2event tracking id
中的 建立新的PutEvents
請求。此請求會記錄來自使用者工作階段的新印模資料。將user id
變更為使用者的 ID。import boto3 personalize_events.put_events( trackingId = '
event tracking id
', userId= 'user id
', sessionId = '1', eventList = [{ 'sentAt': datetime.now().timestamp(), 'eventType' : 'click', 'itemId' : rec_response['itemList'][0]['itemId'], 'recommendationId': rec_response['recommendationId
'], 'impression': [item['itemId'] for item in rec_response['itemList']], }] )
Jupyter 筆記本範例
如需示範如何使用使用者個人化配方的 Jupyter 筆記本範例,請參閱使用者個人化搭配探索