評估亞馬遜個人化網域推薦人 - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

評估亞馬遜個人化網域推薦人

您可以透過離線和線上指標評估推薦人的效能。線上指標是您在使用者與即時建議互動中觀察到的實證結果。例如,您可能會記錄使用者瀏覽目錄時的點進率。您負責生成和記錄任何在線指標。

離線指標是當您建立推薦人時,Amazon Personalize 產生的指標。使用離線指標,您可以評估支持推薦人的模型效能。您可以檢視修改建議人員設定的效果,也可以比較使用不同使用案例訓練的推薦人的結果,以及相同資料集群組中的相同資料。

避免比較使用不同數據訓練的不同推薦人的指標。指標的差異可能來自於資料的差異,而不是模型效能。例如,您可能有一個資料集群組,其中包含每位使用者的稀疏purchase事件資料,而另一個資料集群組則具有健全的view事件資料 根據諸如此類的指標precision at K,根據檢視事件資料訓練的推薦人可能會因為互動次數較多而不正確地顯示效果更好。

為了取得效能指標,Amazon Personalize 會將輸入互動資料分割為訓練集和測試集。訓練集包含 90% 的使用者及其互動資料。測試集由剩餘 10% 的用戶及其交互數據組成。

Amazon Personalize 化然後使用培訓集創建推薦人。訓練完成後,Amazon Personalize 會為新推薦人提供測試集中每位使用者 90% 最早的資料作為輸入。然後,Amazon Personalize 會將推薦人產生的建議與測試集中每位使用者資料中最新 10% 的實際互動進行比較,藉此計算指標。

擷取指標

在您的推薦人啟用後,您可以在 Amazon Personalize 主控台中檢視推薦人的指標,或透過呼叫作業擷取指標。DescribeRecommender

檢視指標 (主控台)

若要在主控台中檢視推薦指標,請導覽至推薦人的詳細資料頁面。

  1. https://console.aws.amazon.com/personalize/home 打開 Amazon Personalize 化控制台並登錄到您的帳戶。

  2. 在 [資料集群組] 頁面上,選擇您的網域資料集群組。

  3. 在導覽窗格中,選擇「推薦人」。

  4. 從建議人員清單中,選擇要檢視其指標的一個。

擷取量度 (AWS CLI)

下列程式碼顯示如何取得推薦人的 AWS CLI度量。

aws personalize describe-recommender \ --recommender-arn recommender arn

以下是針對 VIDEO_ON_DEMAND 網域的「最佳選取」使用案例所建立之建議程式輸出量度的範例。

{ "recommender": { "recommenderArn": "arn:aws:personalize:region:acct-id:recommender/recommenderName", "datasetGroupArn": "arn:aws:personalize:region:acct-id:dataset-group/dsGroupName", "name": "name123", "recipeArn": "arn:aws:personalize:::recipe/aws-vod-top-picks", "modelMetrics": { "coverage": 0.27, "mean_reciprocal_rank_at_25": 0.0379, "normalized_discounted_cumulative_gain_at_5": 0.0405, "normalized_discounted_cumulative_gain_at_10": 0.0513, "normalized_discounted_cumulative_gain_at_25": 0.0828, "precision_at_5": 0.0136, "precision_at_10": 0.0102, "precision_at_25": 0.0091, } "recommenderConfig": {}, "creationDateTime": "2022-05-06T10:11:24.589000-07:00", "lastUpdatedDateTime": "2022-05-06T10:34:33.270000-07:00", "status": "ACTIVE", } }

擷取指標 (AWS SDK)

下面的代碼演示了如何使用 SDK for Python (Boto3) 取推薦人的指標。

import boto3 personalize = boto3.client('personalize') response = personalize.describe_recommender( recommenderArn = 'recommender_arn' ) print(response['recommender']['modelMetrics'])

以下是針對 VIDEO_ON_DEMAND 網域的「最佳選取」使用案例所建立之建議程式輸出量度的範例。

{ "recommender": { "recommenderArn": "arn:aws:personalize:region:acct-id:recommender/recommenderName", "datasetGroupArn": "arn:aws:personalize:region:acct-id:dataset-group/dsGroupName", "name": "name123", "recipeArn": "arn:aws:personalize:::recipe/aws-vod-top-picks", "modelMetrics": { "coverage": 0.27, "mean_reciprocal_rank_at_25": 0.0379, "normalized_discounted_cumulative_gain_at_5": 0.0405, "normalized_discounted_cumulative_gain_at_10": 0.0513, "normalized_discounted_cumulative_gain_at_25": 0.0828, "precision_at_5": 0.0136, "precision_at_10": 0.0102, "precision_at_25": 0.0091, } "recommenderConfig": {}, "creationDateTime": "2022-05-06T10:11:24.589000-07:00", "lastUpdatedDateTime": "2022-05-06T10:34:33.270000-07:00", "status": "ACTIVE", } }

量度定義

Amazon Personalize 為推薦人產生的指標如下所述,使用下列術語:

  • 相關建議是對使用者實際互動的項目的建議。這些項目來自測試集中每個使用者互動資料的最新 10%。

  • 排名是指建議項目位於建議清單中的位置。位置 1 (清單最上方) 被認為是與使用者最相關。

對於每個指標,較高的數字(接近 1)越好。若要深入瞭解,請參閱中列出的資源其他資源

coverage

涵蓋範圍的值告訴您 Amazon Personalize 可能會在互動和項目資料集中唯一項目總數中建議的獨特項目的比例。較高的涵蓋率意味著 Amazon Personalize 會推薦更多您的商品,而不是針對不同使用者重複使用相同的少數項目。具有項目探索功能的使用案例,例如「為您精選」(VIDEO_ON_DEMAND)和「為您推薦」(電子商務),其覆蓋範圍比沒有的項目更高。

平均互惠排名在 25

此量度告訴您模型在排名最高位置產生相關建議的能力。如果您要為使用者產生相關搜尋結果,而且不希望使用者選擇清單中較低的項目,則可以選擇高平均往復等級為 25 的模型。例如,用戶經常在搜索結果中選擇第一個烹飪食譜。

Amazon Personalize 會使用建議請求的平均往復式排名分數來計算此指標。每個互惠排名得分的計算方式如下:1 / the rank of the highest item interacted with by the user,其中總可能的排名為 25。與使用者互動的其他排名較低的項目都會遭到忽略。如果用戶選擇了第一個項目,則分數為 1。如果他們不選擇任何項目,得分為 0。

例如,您可能會向三位不同的使用者顯示 25 個建議:

  • 如果用戶 1 點擊第 4 級的物品,而該物品排名為 10,則他們的往復等級分數為 1/4。

  • 如果使用者 2 點擊等級 2 的物品、等級 4 的物品,以及等級 12 的物品,他們的往復等級分數為 1/2。

  • 如果用戶 3 點擊第 6 級的單個項目,則他們的相互排名得分為 1/6。

所有建議請求的平均往復式等級 (在本例中為 3) 的計算方式為。(1/4 + 1/2 + 1/6) / 3 = .3056

標準化折現累積增益 (NDCG) 為 K (5、10 或 25)

此量度告訴您模型對建議的排名程度,其中 K 是 5、10 或 25 個建議的樣本大小。如果您對排名最高項目之外的建議排名最感興趣,則此量度非常有用 (如需詳細資訊,請參閱mean reciprocal rank at 25)。例如,如果您有一NDCG at 10個應用程式一次最多可在輪播中顯示 10 部電影,則的分數會很有用。

Amazon Personalize 會根據測試集中每個使用者的排名位置,為建議指派權重來計算 NDCG。每個建議都會根據其位置而定的因素折扣(給定較低的權重)。最終指標是測試集中所有使用者的平均值。K 處的標準化折現累積增益假設清單中較低的建議與清單上較高的建議相關性較低。

Amazon Personalize 化使用的加權係數1/log(1 + position),其中列表的頂部是位置1

精確度為 K

此量度根據 K (5、10 或 25) 建議的樣本大小,告訴您模型建議的相關性。

Amazon Personalize 會根據測試集中每個使用者前 K 個建議的相關建議數目 (除以 K) 計算此指標,其中 K 為 5、10 或 25。最終量度是測試集中所有使用者的平均值。

例如,如果您向用戶推薦 10 個項目,並且用戶與其中 3 個項目進行交互,則 K 處的精確度為 3 個正確預測項目除以總 10 個推薦項目:3 / 10 = .30

此指標獎勵相關物品的精確推薦。分數越接近一個,模型就越精確。

範例

以下是針對特定使用者產生建議清單的推薦人的簡單範例。第二個與第五個建議符合此使用者的測試資料中的記錄。這些是相關建議。如果 K 設定為 5,則會為使用者產生以下指標。

reciprocal_rank

算式:1/2

結果:0.5000

normalized_discounted_cumulative_gain_at_5

算式:(1/log(1 + 2) + 1/log(1 + 5)) / (1/log(1 + 1) + 1/log(1 + 2))

結果:0.6241

precision_at_5

算式:2/5

結果:0.4000

其他資源

若要深入了解推薦系統的不同類型指標,請參閱下列外部資源: