使用指標評估 Amazon Personalize 解決方案版本 - Amazon Personalize

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

使用指標評估 Amazon Personalize 解決方案版本

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

離線指標是您訓練解決方案版本時,Amazon Personalize 產生的指標。使用離線量度,您可以評估模型的效能。您可以檢視修改解決方案超參數的效果,也可以比較使用不同方法訓練的模型在相同資料集群組中的相同資料上的結果。

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

為了取得效能指標,Amazon Personalize 會將輸入互動資料分割為訓練集、測試集,並將驗證集分割為個人化的互動資料。分割取決於您選擇的食譜類型:

  • 對於 USER_SIGETGATION 方法,訓練集由每個用戶的交互數據的 80% 組成,測試集由每個用戶的交互數據的 20% 組成。

  • 對於所有其他配方類型,訓練集包含 90% 的使用者及其互動資料。測試集由剩餘 10% 的用戶及其交互數據組成。

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

為了生成比較目的的的基準,我們建議使用熱門計數配方,該配方建議最受歡迎的 K 個項目。

擷取解決方案版本量

建立解決方案版本之後,您可以使用指標來評估其效能。您可以使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 和 AWS 開發套件擷取解決方案版本的指標。

擷取解決方案版本指標 (主控台)

若要在主控台中檢視推薦指標,請瀏覽至解決方案版本的詳細資料頁面。

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

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

  3. 在導覽窗格中,選擇 [自訂資源],然後選擇 [解決方案和方法]。

  4. 選擇您的解決方案。

  5. 解決方案版本中,選擇您的解決方案版本以檢視其詳細資料頁面 量度會列在底部窗格的 [解決方案版本量度] 索引標籤上。如需量度的定義,請參閱量度定義

    現在您已評估解決方案版本,您可以透過部署具有適合您使用案例的最佳度量的解決方案版本來建立促銷活動。如需部署解決方案的詳細資訊,請參閱透過行銷活動部署 Amazon Personalize 解決方案版本

擷取解決方案版本指標 (AWS CLI)

您透過呼叫 GetSolutionMetrics 操作來擷取特定解決方案版本的指標。下列程式碼顯示如何使用 AWS CLI.

personalize get-solution-metrics --solution-version-arn solution version ARN

以下是使用用戶個性化配方建立的解決方案版本輸出,其中包含其他最佳化目標的範例。

{ "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/SolutionName/<version-id>", "metrics": { "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, "average_rewards_at_k": 0.653 } }

如需每個量度的說明,請參閱量度定義。現在您已評估解決方案版本,您可以透過部署具有適合您使用案例的最佳度量的解決方案版本來建立促銷活動。如需部署解決方案的詳細資訊,請參閱透過行銷活動部署 Amazon Personalize 解決方案版本

擷取解決方案版本指標 (AWS SDK)

您透過呼叫 GetSolutionMetrics 操作來擷取特定解決方案版本的指標。使用以下程式碼來擷取指標。

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') response = personalize.get_solution_metrics( solutionVersionArn = 'solution version arn') print(response['metrics'])
SDK for Java 2.x
public static void getSolutionVersionMetrics(PersonalizeClient personalizeClient, String solutionVersionArn) { try { GetSolutionMetricsRequest request = GetSolutionMetricsRequest.builder() .solutionVersionArn(solutionVersionArn) .build(); Map<String, Double> metrics = personalizeClient.getSolutionMetrics(request).metrics(); metrics.forEach((key, value) -> System.out.println(key + " " + value)); } catch (PersonalizeException e ) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

以下是使用用戶個性化配方建立的解決方案版本輸出,其中包含其他最佳化目標的範例。

{ "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "metrics": { "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, "average_rewards_at_k": 0.653 } }

如需每個量度的說明,請參閱量度定義。現在您已評估解決方案版本,您可以透過部署具有適合您使用案例的最佳度量的解決方案版本來建立促銷活動。如需部署解決方案的詳細資訊,請參閱透過行銷活動部署 Amazon Personalize 解決方案版本

量度定義

Amazon Personalize 為解決方案版本產生的指標如下所述,使用下列術語:

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

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

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

coverage

涵蓋範圍的值告訴您 Amazon Personalize 可能會在資料集中唯一記錄總數中建議的唯一項目 (針對項目建議)、動作 (針對動作建議) 或使用者 (針對使用者區段建議) 的比例。

涵蓋範圍分數越高,表示 Amazon Personalize 會為您推薦更多目錄,而不是重複建立相同的記錄。具有物品探索的食譜(例如用戶個性化)的覆蓋範圍比沒有的食譜具有更高的覆蓋範圍,例如類似物品。

平均互惠排名在 25

此量度告訴您模型在排名最高位置產生相關項目建議的能力。

如果您要為使用者產生料號搜尋結果,而且不希望使用者選擇清單中較低的項目,則可以選擇高平均往復等級為 25 的模型。例如,用戶經常在搜索結果中選擇第一個烹飪食譜。Amazon Personalize 不會針對個人化動作或使用者分段方法產生此指標。

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。每個建議都會根據其位置而定的因素進行折扣(給定較低的權重)。最終量度是測試集中所有使用者的平均NDCG at K值。NDCG at 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

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

precision

如果您使用下一個最佳動作方法訓練解決方案版本,Amazon Personalize 會產生指標,而不是產生precision指標。precision at K此指標告訴您模型在預測使用者實際採取的動作方面有多好。

若要計算precision資料集中的每個動作,Amazon Personalize 會將正確預測採取動作的使用者人數除以建議動作的總次數。然後,Amazon Personalize 會計算資料集中所有動作的平均值。

例如,如果將某個動作建議給 100 位使用者,而 60 位使用者採取了動作,而 40 位未執行此動作的使precision用者,則該動作為:60 / 100 = .60。然後,Amazon Personalize 化將此計算應用於所有操作,並返回平均值。

該指標獎勵相關行動的精確推薦。分數越接近一個,模型就越精確。

平均值 _ 獎勵

當您為具有優化目標的解決方案建立解決方案版本 (訓練模型) 時,Amazon Personalize 會產生average_rewards_at_k指標。的分數告average_rewards_at_k訴您解決方案版本在實現目標方面的表現如何。若要計算此指標,Amazon Personalize 會計算每位使用者的獎勵,如下所示:

rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations

最終average_rewards_at_k是所有rewards_per_user規範化的平均值為小於或等於 1 且大於 0 的十進制值。值越接近 1,您可以從建議中獲得的每位使用者的平均收益就越多。

例如,如果您的目標是最大化點擊收入,Amazon Personalize 會計算每個使用者分數,方法是將使用者從其前 25 個最昂貴建議中點選的項目產生的總收入除以使用者按下的所有建議項目的收入。Amazon Personalize 化接著會傳回所有使用者分數的標準化平均值。越接近 1,您可以期望每位使用者從建議中獲得的平均收入average_rewards_at_k就越多。

如需詳細資訊,請參閱 針對額外目標最佳化解決方案

趨勢預測準確度

如果你訓練與趨勢-現在配方的解決方案版本,增加由模型推薦的項目的普及率。趨勢預測準確度越高(越接近 1),模型在正確識別趨勢項目時就越好。

為了計算受歡迎程度加速度,Amazon Personalize 將所有推薦商品的受歡迎程度提高率除以前 25 個趨勢項目的總受歡迎程度增加。這些項目來自測試集中的實際互動。

根據您的資料分佈和您選擇的趨勢探索頻率,趨勢預測準確度的值可以是 0.0。

命中(擊中 K)

如果您使用 USER_SEGETAGED 方案訓練解決方案版本,則預測的最高相關 K 結果中與實際使用者相符的平均使用者人數。實際用戶是誰實際上與測試集中的項目進行交互的用戶。K 是最相關使用者中排名前 1%。值越高,預測越準確。

召回(在 K 召回)

如果您使用 USER_SEGETAGED 方案訓練解決方案版本,則預測的頂部相關 K 結果中預測使用者的平均百分比與實際使用者相符。實際用戶是誰實際上與測試集中的項目進行交互的用戶。K 是最相關使用者中排名前 1%。值越高,預測的準確度就越高。

取回

如果您使用「下一個最佳動作」方法訓練解決方案版本,則此量度會告訴您解決方案版本在探索使用者將與之互動的動作方面有多好。

若要計算recall資料集中的每個動作,Amazon Personalize 會將正確預測採取動作的使用者人數除以測試集中實際採取動作的使用者總數。然後,Amazon Personalize 會計算資料集中所有動作的平均值。

例如,如果 100 位使用者在測試集中採取動作,而 Amazon Personalize 預測這些使用者中有 50 個會採取動作,則該動作recall為:50 / 100 = .50。然後,Amazon Personalize 化將此計算應用於所有操作,並返回平均值。

曲線下方的區域 (AUC)

如果您使用 PERSONALIZED_ACTIONS 配方訓練解決方案版本,則為您的解決方案版本的「接收者操作特性」曲線下的區域。此量度會告訴您解決方案版本在正確識別使用者將採取的動作方面的效能。

接收器操作特性曲線繪製解決方案版本的效能。它以不同的閾值繪製真正的正值(正確預測為相關的動作)和誤報(不正確地預測為相關的動作)速率。曲線下的區域 (AUC) 是一個分數,根據其曲線總結解決方案版本的效能。

解決方案版本的 AUC 可以介於 0 和 1 之間。越接近 1,模型就越能預測使用者的相關動作。

範例

以下是針對特定使用者產生建議清單的解決方案版本的簡單範例。第二個與第五個建議符合此使用者的測試資料中的記錄。這些是相關建議。如果 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

其他資源

如需使用 A/B 測試評估解決方案版本的相關資訊,請參閱使用 A/B 測試來衡量 Amazon Personalize 產生之建議的有效性。若要深入了解推薦系統的不同類型指標,請參閱下列外部資源: