中繼資料標記和使用者貯體
智慧建議可用於改善終端使用者的相關個人化,即使他們已匿名,也能改善。 客戶可以整合其店面的個人化中繼資料標記體驗。 這種體驗是透過使用識別內容 (例如書面文章、播客、影片、零售產品等) 的中繼資料標記,以及根據該使用者的品味/偏好建議類似標記或內容的能力來實現。 使用者中繼資料可強有力地用來向所有使用者建議相關內容,包括:
- 新客戶或非經常性客戶 (也稱為「冷淡使用者」)。
- 根據唯一中繼資料標記,將使用者連接至其他使用者。
- 將使用者同時連接至相關內容和短前置時間內容。
當中繼資料標記啟用時,使用者可以建立新的建議案例,例如:
- 我們為您選擇的中繼資料類別
- 其他人員也會查看這些類別
- 根據最新活動建議的最近事件
- 根據其屬性化中繼資料標記建議的類似產品/內容
- 根據使用者行為貯體的推薦項目
什麼是標記?
標記 是項目/內容中吸引使用者對其感興趣之亮點的描述項,並且必須與終端使用者的特定活動有關聯。 例如,在電影世界中,片種、劇組成員、情緒等都可以視為是電影的標記,以及終端使用者特別喜歡/不喜歡的部分。 標記甚至可以包括名人玩家/使用者、文章標題、類型、產品類別、事件和其他內容術語。 目標是確保根據現有的中繼資料向終端使用者建議符合其興趣/品味/偏好的相關內容。
架構概觀
若要設定中繼資料標記 (如架構圖表中所示),先決條件如下:
- 包含豐富中繼資料標記之內容的權威儲存體 – 目錄。
- 使用者互動行為 (內容的點擊次數/使用方式)。 終端使用者設定檔資訊也可供使用。
- 不同的智慧建議帳戶和模型執行個體,用於了解以標記表示的使用者興趣。
- 可使用即時 API 查詢根據個人化標記對內容進行排名的元件。
啟用時,服務根據下列條件,為使用者產生個人化「標記」模型:
- 歷史使用者互動
- 含「標記」的中繼資料豐富內容
- 這裡的假設是標記已清理 (沒有拼字錯誤且標記是專家預先決定的合理化集合,而不是隨機建立或附加)。
資料合約設定
若要設定資料合約以支援中繼資料標記,請執行下列動作:記下 ItemId
、TagId
和 InteractionGroupingId
之間的變更。
在應用程式區段中,您會看到引進 TagID
或 BucketId
如何變更資料合約設定的範例。 建議您在測試中繼資料標記時,使用不同的智慧建議帳戶和模型執行個體。
IR 功能名稱 | 目錄 資料實體 |
目錄 資料實體欄位 |
互動 資料實體 |
互動 資料實體欄位 |
---|---|---|---|---|
(所有回應都需要) | Reco_ItemsAndVariants |
ItemId 做為 TagId Title |
||
篩選能力 (適用於所有清單) |
Reco_ItemCategories | ItemCategories:ItemId (或 TagId )、類別 |
||
人們也觀看 | Reco_Interactions |
InteractionGroupingId 做為 UserId ItemId 做為 TagId UserId InteractionType: 購買 == 已檢視 TimeStamp |
||
為您精選 | Reco_Interactions | (與上一個相同) |
應用程式和範例
下列各節逐步解說兩個受益於中繼資料標記的一般使用案例,並為每個案例提供一些使用示範資料的範例。
- 為冷淡使用者取得「最受歡迎的推薦項目」。 若要查看範例,請參閱標題為「為冷淡使用者取得最受歡迎的項目」的章節。
- 建立使用者中繼資料/值的機器學習對應。 若要查看範例,請參閱標題為「建立使用者中繼資料值的 ML 對應」的章節。
使用場合 1:為冷淡使用者取得「最受歡迎的推薦項目」
AI-ML 領域中的常見問題是如何向新客戶或非經常性客戶 (也稱為「冷淡使用者」) 提供相關建議。 如前所述,這裡的目的是根據有意義的類別和可用的人口統計資訊 (即年齡和性別) 建立一些不同的貯體。 然後使用所有互動,將所有使用者連接至對應的人口統計貯體,而這又讓貯體可以在模型訓練階段連接至項目。 在服務階段,可以指派冷門使用者的人口統計貯體,然後用於推薦品項,例如「依使用者貯體分類的最受歡迎品項」。
步驟如下:
- 使用中繼資料資訊準備使用者的貯體。
- 在「Reco_Interactions.csv」資料儲存檔案中建立模型的連接。
- 查詢模型以取得「依使用者貯體推薦的最受歡迎項目」API。
步驟 1:使用中繼資料資訊準備使用者的貯體
建立貯體時的一些最佳做法如下:
- 使用者中繼資料可以表示為分佈貯體。 考慮使用對您的業務領域和使用案例有意義的中繼資料。 例如,如果您想要建立年齡資料的貯體,則可以使用下列值:Age5To11、Age30To40 等。
- 某些使用者中繼資料甚至可一起組合在貯體中。 考慮使用對您的業務領域和使用案例有意義的中繼資料和組合。 例如,您可以組合年齡資料和性別資料來建立像這樣的貯體:Age20To30Male、Age20To30Female、Age30To40Male、Age30To40Female 等。
- 建立貯體之後,您就必須為每個貯體指派唯一的
BucketId
。
步驟 2:在「Reco_Interactions.csv」資料儲存檔案中建立模型的連接
視貯體數量大於或小於 1000 而定,在資料合約中設定資料的方式可能會改變。
如果小於 1000 個貯體
針對每個互動資料列,您可以將 ChannelId
設定為 BucketId
,後者對應至 (或最適合) 使用者。 互動 CSV 列已變更為:InteractionGroupingID
、ItemId
、UserId
和 BucketId
做為 ChannelId
。 互動 CSV 的範例如下所示:
小於 1000 個貯體的範例 CSV
互動 CSV 標題只是為了便於解說而顯示,不可做為實際資料的一部分。
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | TimeStamp | 未來屬性 | 未來屬性 | 通道 | 目錄 | 優勢 | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
InteractionGroupingID |
ItemId |
UserId |
BucketId |
如果大於 1000 個貯體
如果有 1000 個貯體以上的資料,則可以使用 BucketId
來建立更多的互動資料列。
將「使用者」與「項目」之間的每個原始互動資料列轉換成具有唯一識別碼 InteractionGroupingId
的兩個新的不同列,而該識別碼僅對這兩列來說是唯一的。 範例顯示:
- 使用
UserId
、ItemId
和InteractionGroupingId
做為UNIQUE_ID
的原始互動資料列。 - 使用
BucketId
做為ItemId
的其他互動資料列。
大於 1000 個貯體的範例 CSV:
互動 CSV 標題只是為了便於解說而顯示,不可做為實際資料的一部分。
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | TimeStamp | 未來屬性 | 未來屬性 | 通道 | 目錄 | 優勢 | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
ItemId |
UserId |
|||||||||
UNIQUE_ID |
BucketId |
UserId |
步驟 3:查詢模型以取得「依使用者貯體推薦的最受歡迎項目」API
將先前討論的模型建構大綱納入考量。 確定冷門使用者及其人口統計貯體後,將「後續最佳動作」(先前稱為購物車) 清單類型與以人口統計為中心的 BucketId
搭配用來查詢服務端點,以推薦該貯體最受歡迎的項目。
當貯體小於 1000 個時
範例 API 查詢連結 (將其中 ChannelId
的參數取代為 BucketId
值),如下所示:
<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
範例 1:小於 1000 個貯體
假設有一個 UserId
=100、自訂指派的 BucketId
=Age30To40 的使用者,最近購買 ItemId
=98005 的項目。
此範例會在「Reco_Interactions.csv」檔案中建立一列,該檔案使用與使用者 (以 IR 結構描述中的 UserId
表示) 最適配的 BucketId
(在 IR 結構描述的 ChannelId
欄位中):
- 原始互動資訊為:
InteractionGroupingId
=1,UserId
=100,ItemId
=98005 - 請注意,在 CSV 範例中,已附加與
UserId
最相符的相關ChannelId
。 在此範例中,UserId
與BucketId
= Age30To40 相符,因此修改後的互動行為如下:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | TimeStamp | 未來屬性 | 未來屬性 | 通道 | 目錄 | 優勢 | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
7 | 98005 | 100 | Age30To40 |
- API 查詢和回應傳回 ItemId 清單,包括排在第三位的
ItemId
=43218,這是此類別中使用者的熱門項目。
API 查詢
GET <serving-endpoint>/reco/v1.0/Popular?ChannelId=Age30To40
回應
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "65106",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62604",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "43218",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63503",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Popular",
"longTitle": "Popular",
"titleId": 5,
"pagingInfo": {
"totalItems": 200
},
"status": "Success"
}
當貯體大於 1000 個時
範例 API 查詢連結 (將其中 ItemId
取代為冷淡使用者的 BucketId
),如下所示:
<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
範例 2:大於 1000 個貯體
假設有一個 UserId
=100、自訂指派的 BucketId
=Age30To40Female 的使用者,最近購買 ItemId
=98005 的項目。
現在您可以使用原始互動資料,並在「Reco_Interactions.csv」檔案中建構資料列:
- 原始互動資訊為:
InteractionGroupingId
= NEW_UNIQUE_ID,UserId
=100,ItemId
=98005 - 這兩列已建構的互動資訊,應位於由智慧建議服務讀取的「Reco_Interactions.csv」檔案。
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | TimeStamp | 未來屬性 | 未來屬性 | 通道 | 目錄 | 優勢 | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
98005 |
100 |
|||||||||
UNIQUE_ID |
Age30To40Female |
100 |
- API 查詢和回應傳回 ItemId 清單,包括排在第三位的
ItemId
=43218,這是此類別中使用者的熱門產品。
API 查詢
GET <serving-endpoint>/reco/v1.0/Cart/Age30To40Female?
回應
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "65106",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62604",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "43218",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63503",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Cart",
"longTitle": "FrequentlyBoughtTogether",
"titleId": 5,
"pagingInfo": {
"totalItems": 200
},
"status": "Success"
}
使用場合 2:建立使用者中繼資料/值的 ML 對應
當目標是產生顯示使用者與這些標記連接情形以及哪些標記在行為上真正相似的成果時,以使用者中繼資料「標記」取代直接使用者互動來建立模型,就可以是強有力的修改。 為每個有意義且可用的標記 (即年齡和性別等人口統計資料,或其他中繼資料) 指派唯一識別碼,服務稱之為 TagId
。 在模型訓練階段中,所有互動資料都會用來建立 UserIds 與 TagIds 之間的連接。
在服務階段中,系統可以使用 UserId
呼叫「為您精選」以提供標記的個人化清單,並使用 TagId
呼叫「人們也喜歡」以提供類似標記。
如何使用 TagIds 取得建議:
- 準備使用者中繼資料值 (標記) 清單,並為其中每一個值指派唯一的
TagId
。 - 在 Reco_Interactions.CSV 資料儲存檔案中建立模型的連接。
- 查詢模型以取得「依使用者的個人化標記」或「類似標記」API。
步驟 1:準備使用者中繼資料值 (標記) 清單,並為其中每一個值指派唯一的 TagId
建構年齡資料的值時,依貯體分組仍然是很好的方法: Age5To11 、 Age12To18 等。
如果是其他中繼資料值,請為每個值建立不同的 TagId。 例如,如果想要「家庭狀況」的類別:Single、Single、CoupleWithKids 等。
步驟 2:在 Reco_Interactions.CSV 資料儲存檔案中建立模型的連接
使用使用者與專案之間的每個原始互動,建構一列包含 TagId
的互動資料。
[!注意:]
此方法的一些重要提醒:
- 只有新建構的資料才會用於模型的互動資料實體。
- 建立將使用者連接至 TagIds 的互動資料列不一定需要根據互動而定。 這是一個範例,說明如何建立互動,以將使用者連接至模型中的標記。
- 對於
InteractionGroupingId
,重複使用原始互動 (如果可用) 可能是有意義的。 否則,請嘗試依UserId
組成群組。 在模型訓練階段中,所有互動資料都會用來建立不同 TagIds 之間以及 UserIds 與 TagIds 之間的連接。 我們建議您嘗試不同的方式組成群組,然後查看哪個群組產生最具相關性的結果,因為不同的案例和使用模式可能各有不同。
- 原始互動資料列:使用
UserId
、ItemId
、InteractionGroupingId
。 與上述使用BucketId
的範例不同,不要包括此列在輸入資料集中。- 新的互動資料列:使用
UserId
、TagId
做為ItemId
,使用UserId
做為InteractionGroupingId
。
範例資料合約看起來會像這樣:
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | TimeStamp | 未來屬性 | 未來屬性 | 通道 | 目錄 | 優勢 | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UserId |
TagId |
UserId |
步驟 3:查詢模型以取得「依使用者的個人化標記」或「類似標記」
透過仔細的模型建構,使用「推薦項目」和「使用者也喜歡」清單類型查詢服務端點會產生預期的結果。
「為您精選」API 查詢 (這會為指定的 UserId
傳回建議的 TagIds) 看起來會像這樣:
<serving-endpoint>Reco/v1.0/picks?userId=<UserId>
「人們也喜歡」API 查詢,其中種子項目參數已取代為對應的 TagId
:
<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
範例回覆輸出
{
"id": "Picks",
"name": "Picks",
"version": "v1.0",
"items": [
{
"id": "68100",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62500",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61504",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "65103",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61401",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Picks for you",
"longTitle": "Picks for you",
"titleId": 6,
"personalizationConfidence": 1.0,
"pagingInfo": {
"totalItems": 139
},
"status": "Success"
}
範例 3:使用示範資料的 tagIds 查詢
假設 UserId
=100 的使用者表示他們使用下列標記進行對應:123 (代表「足球迷」)、Age30To40Female 和 FamilyWithKids。
您可以使用原始互動資料列,在「Reco_Interactions.csv」檔案中建構下列各列:新的 3 列互動資訊 (該使用者的每個標記各一個),應位於由智慧建議服務讀取的「Reco_Interactions.csv」檔案:
![注意]
在此範例中,我們選擇依
UserId
組成群組,並將InteractionGroupingId
設定為等於UserId
。 另請注意,ItemId
代表TagId
。
InteractionGroupingId | ItemId | ItemVariantId | UserId | InteractionType | TimeStamp | 未來屬性 | 未來屬性 | 通道 | 目錄 | 優勢 | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
100 | 123 | 100 | |||||||||
100 | Age30To40Female | 100 | |||||||||
100 | FamilyWithKids | 100 |
對精選項目的查詢和回覆
建構的「為您精選」要求如下所示:
GET <serving-endpoint>/reco/v1.0/picks?UserId=100
「推薦項目」回應傳回 200 個 ItemId (代表標記) 的清單,包括排在第一位的 TagID
=FamilyWithKids。
{
"id": "Picks",
"name": "Picks",
"version": "v1.0",
"items": [
{
"id": "FamilyWithKids",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "625",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "Sports",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "651",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "611",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Picks for you",
"longTitle": "Picks for you",
"titleId": 6,
"personalizationConfidence": 1.0,
"pagingInfo": {
"totalItems": 139
},
"status": "Success"
}
類似項目的查詢和回覆
使用 Similar API 建構的「人們也」要求如下所示:
GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?
「人們也喜歡」回應傳回 200 個 ItemId (代表標記) 的清單,包括排在第一位的 Age30To40Female 以及排在第二位的 FamilyWithKids。
{
"id": "Similar",
"name": "Similar",
"version": "v1.0",
"items": [
{
"id": "Age30To40Female",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "FamilyWithKids",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "SportsParent",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "651",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "123",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "People also like",
"longTitle": "People also like",
"titleId": 6,
"pagingInfo": {
"totalItems": 200
},
"status": "Success"
}
若要進一步了解我們支援的服務和模型,請查看模型指南。