演算法類型 (Algorithm Type)
名詞說明
推薦階段
Recommend HQ 使用的是兩階段的推薦架構:
- 推薦候選產生階段(
generator
):從完整資料集中選出少數的推薦候選,並排序。 - 推薦候選排序階段 (
ranker
):將所有推薦候選重新排序。
一個專案可以同時部署一個候選產生模型 (generator_model
) 和一個排序模型 (ranker_model
),其中排序模型 (ranker_model
)為非必須,也可直接使用候選產生模型 (generator_model
)提供的推薦結果。
專案類型
不同的演算法適用於不同的專案類型。
G1
基於 collaborative filtering 概念的深度類神經網路實作。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
) - 對商品推薦商品 (
RECOMMEND_ITEMS_TO_ITEM
)
適用推薦階段
- 推薦候選產生階段 (
generator
)
演算法參數 (algorithm_parameters)
start_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為 0,從最古老的事件開始。end_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為無窮大,即到最新的事件為止。undirected
: 0 或 1,建立使用者與商品關係圖時是否為無向圖。walk_steps
:2 到 7 之間,數字越小則推薦結果越貼近訓練資料的事件資料集,但較無新穎性,無法反映深層關聯性。數字越大能更反映出深層關聯性,但與訓練資料的事件資料集相差較遠。support_event_weight
: 非target_event_type
在訓練時之權重。cold_start_strategy
:"popularity"
或null
,使用熱門度處理冷開始(Cold Start),或不支援冷開始。
推薦參數 (generator_model_args)
enable_cold_start
: 若訓練模型時的cold_start_strategy
為開啟時,可在取得推薦結果時透過此參數控制是否開啟冷開始,預設為開啟。
G2
結合多種推薦演算法,同時考慮點擊紀錄與使用者、商品屬性的實作,能更好的支援冷開始(Cold Start),但使用者與商品的屬性數值分佈很大程度影響推薦品質。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
) - 對商品推薦商品 (
RECOMMEND_ITEMS_TO_ITEM
)
適用推薦階段
- 推薦候選產生階段 (
generator
)
演算法參數 (algorithm_parameters)
start_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為 0,從最古老的事件開始。end_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為無窮大,即到最新的事件為止。loss
: 模型使用的損失函數,可選擇bpr
或warp
。warp
需要比較多的訓練時間,但對於改善推薦的精確度 (precision
) 有一定的幫助。support_event_weight
: 非target_event_type
在訓練時之權重。cold_start_strategy
:"popularity"
或null
,使用熱門度處理冷開始(Cold Start),或不支援冷開始。use_meta_feature
:true
或false
,是否使用商品屬性,若使用,模型會將商品屬性加入訓練特徵中,會需要較長的訓練時間和部署時間。item_feature_attributes
: 如果use_meta_feature
為true
,該項可控制模型使用商品屬性的白名單。預設值為null
,表示商品屬性全用。(註:系統會判定各個商品屬性是否適合當作特徵,不適合將不會使用該商品屬性。)min_token_length
: 如果use_meta_feature
為true
且有使用文字特徵時,該項可控制關鍵字最小長度限制。預設值為 2。(註:系統如果判定該商品屬性不適合當作文字特徵,則不會使用。)
推薦參數 (generator_model_args)
enable_cold_start
: 若訓練模型時的cold_start_strategy
為開啟時,可在取得推薦結果時透過此參數控制是否開啟冷開始,預設為開啟。
GI1
使用商品屬性計算商品關聯性的深度類神經網路實作。
適用專案類型 (project_type):
- 對商品推薦商品 (
RECOMMEND_ITEMS_TO_ITEM
)
適用推薦階段
- 推薦候選產生階段 (
generator
)
演算法參數 (algorithm_parameters)
item_feature_attributes
: 控制模型使用商品屬性的白名單。預設值為null
,表示商品屬性全用。(註:系統會判定各個商品屬性是否適合當作特徵,不適合將不會使用該商品屬性)min_token_length
: 有使用文字特徵時,該項可控制關鍵字最小長度限制。預設值為 2。
GU1
推薦使用者最近有互動過的商品。通常配合一個 ranker_model
排序互動過商品的順序。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
)
適用推薦階段
- 推薦候選產生階段 (
generator
)
G3
推薦一段時間內最熱門的商品。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
) - 對商品推薦商品 (
RECOMMEND_ITEMS_TO_ITEM
)
適用推薦階段
- 推薦候選產生階段 (
generator
)
演算法參數 (algorithm_parameters)
start_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為 0,從最古老的事件開始。end_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為無窮大,即到最新的事件為止。
G4
建立用戶對商品特徵的用戶資料 (user profile)。此演算法的應用,包含: 推薦 / 查詢 / 分群。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
)
適用推薦階段
- 推薦候選產生階段 (
generator
)
R1
考慮商品屬性的排序模型。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
) - 對商品推薦商品 (
RECOMMEND_ITEMS_TO_ITEM
)
適用推薦階段
- 推薦候選排序階段 (
ranker
)
演算法參數 (algorithm_parameters)
diversity_attributes
: 控制多樣性排序模型使用商品屬性的白名單。預設值為空名單,即不使用多樣性排序功能。
推薦規則 (Rules)
- 使用方式: 在
ranker_model_args
中加入rules
參數,rules
為規則列表,裡面包含:rule_type
以及parameters
兩項。 - 使用範例:
"ranker_model_args": {
"rules": [
{
"rule_type": "diversity",
"parameters": {
"attribute": "catogery",
"number": 3
}
]
}
- 多樣性排序 (
diversity
): rule_type
:diversity
attritube
: 在diversity_attributes
中指定的商品屬性number
: 為正整數,在推薦商品中的商品屬性種類數,越高代表該商品屬性有越高的多樣性
RU1
考慮使用者屬性、商品屬性、及其互動紀錄訓練,基於決策樹的排序模型。
適用專案類型 (project_type):
- 對使用者推薦商品 (
RECOMMEND_ITEMS_TO_USER
)
適用推薦階段
- 推薦候選排序階段 (
ranker
)
演算法參數 (algorithm_parameters)
start_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為 0,從最古老的事件開始。end_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為無窮大,即到最新的事件為止。support_event_weight
: 非target_event_type
在訓練時之權重。use_interaction_features
: 0 或 1,是否使用使用者與商品的交互特徵,若使用,模型會將使用者與商品的交互統計值加入訓練特徵中,會需要較長的訓練時間和部署時間。
RI1
考慮使用者屬性、商品屬性、及其互動紀錄訓練,基於決策樹的排序模型。
適用專案類型 (project_type):
- 對商品推薦商品 (
RECOMMEND_ITEMS_TO_ITEM
)
適用推薦階段
- 推薦候選排序階段 (
ranker
)
演算法參數 (algorithm_parameters)
start_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為 0,從最古老的事件開始。end_ts
: 從事件資料集取得訓練資料的開始時間(timestamp),單位為毫秒(ms)。預設值為無窮大,即到最新的事件為止。support_event_weight
: 非target_event_type
在訓練時之權重。use_interaction_features
: 0 或 1,是否使用使用者與商品的交互特徵,若使用,模型會將使用者與商品的交互統計值加入訓練特徵中,會需要較長的訓練時間和部署時間。